」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 PHP 和 PHPDesktop 建立和分發桌面應用程式:逐步指南

如何使用 PHP 和 PHPDesktop 建立和分發桌面應用程式:逐步指南

發佈於2024-08-30
瀏覽:422

How To Build And Distribute Desktop Apps Using PHP And PHPDesktop: A Step-by-Step Guide

PHP - 尽管它恰好是一种非常强大且有影响力的编程语言 - 却被许多可能不使用它或以前使用过它的程序员低估了。

今天,我想与您分享 PHP 的强大功能以及您可以用它做什么。

瞧!我们走吧?️

在本指南中,我将引导您完成使用 PHPDesktop 创建可执行桌面应用程序的过程,PHPDesktop 是一个允许开发人员将其 PHP Web 应用程序打包成独立桌面可执行文件的工具。我还将深入研究如何编译这些应用程序并通过删除默认的 PHPDesktop 徽标来自定义它们。

第 1 部分:PHPDesktop 简介

什么是 PHP 桌面版?

PHPDesktop 是一个开源项目,使开发人员能够将 PHP 应用程序作为桌面应用程序运行,而无需浏览器或 Web 服务器。它集成了 Chrome 嵌入式框架 (CEF)——它也是开源的,我们的大多数现代浏览器都是基于它构建的——用于渲染应用程序的 HTML/CSS/JavaScript 部分,允许您使用您的 Web 开发技能来创建桌面应用程序。通过使用 PHPDesktop,您可以将 PHP 脚本、HTML 文件和其他资源捆绑到一个可执行文件中,该文件可以在任何 Windows 计算机上分发和运行/安装。

第 2 部分. 设置开发环境

在开始构建桌面应用程序之前,我们首先需要设置开发环境。

如何搭建开发环境

第1步:下载PHPDesktop

  1. 访问 PHPDesktop GitHub 页面 (https://github.com/cztomczak/phpdesktop)。

  2. 选择适合您需求的版本,因为 PHPDesktop 有多种变体,包括 PHP 5.4、5.6 和 7.x。对于现代应用程序,您应该选择最新版本。

  3. 下载您首选版本的 ZIP 文件并将其解压到计算机上的目录中。

第 2 步:准备您的 PHP 应用程序

假设您已经有一个 PHP Web 应用程序/文件,请将您的应用程序文件(复制并粘贴它们 [我的意思是项目])放入提取的 PHPDesktop 文件夹的 www 目录中。这个 www 目录是 PHPDesktop 为您的应用程序提供服务的根目录,类似于您以前使用过的任何 Web 服务器上的 public_html 或 www 文件夹。

第 3 步:配置 PHPDesktop

要配置PHPDesktop,您需要编辑位于PHPDesktop文件根目录的settings.json文件。该文件允许您指定桌面应用程序的各种设置,例如窗口标题、尺寸、图标等。

(顺便说一句,如果您自己做这件事有困难,您想要为您的应用程序提供扩展功能,例如生成产品密钥,或者您希望我处理您的网络项目,您可以随时通过评论与我联系这篇文章谢谢。您也可以在我的“给我买杯咖啡”页面上找到有关我的更多详细信息。

因此,设置文件如下所示。让我们继续我们的旅程吧。 ?

基本配置:

json
{
“应用”: {
“主窗口”:{
"title": "我的桌面应用程序",
"icon": "app_icon.ico",
“默认大小”:{
“宽度”:800,
“高度”:600
},
“最小尺寸”:{
“宽度”:600,
“高度”:400
}
},
"php_interpreter": "php\\php.exe",
“app_mode”:true,
"start_url": "http://127.0.0.1:54007/"
}
}

- title: The title of your application window.

  • icon: The path to your application's icon. Replace app_icon.ico with your custom icon file and ensure its a dot ico image too.
  • default_size: The default size of your application window.
  • minimum_size: The minimum size of the application window.
  • php_interpreter: The path to the PHP executable.
  • start_url: The URL to load when the application starts. For local development, this is typically the local server address.

第 4 步:测试您的应用程序

配置 PHPDesktop 后,您可以运行 phpdesktop-chrome.exe(或等效的可执行文件,具体取决于您的 PHPDesktop 版本)来测试您的应用程序。如果一切设置正确,您的 PHP 应用程序应该在独立窗口中加载。

第 3 部分:编译应用程序

现在您的应用程序正在 PHPDesktop 中运行,下一步是将其编译为独立的可执行文件。这会将您的 PHP 脚本、HTML 文件和其他资产打包到一个文件中,该文件可以分发和运行,而不需要最终用户安装 PHP、DBMS 或任何其他依赖项。

第1步:准备Application/PHPDesktop目录

编译之前,请确保您的 PHPDesktop/application 目录已正确组织。此时,您的目录应如下所示:

/phpdesktop/

├── /www/ # 你的 PHP 应用程序文件

├── php/ # PHP解释器目录

├── settings.json # PHPDesktop配置文件

└── phpdesktop-chrome.exe # PHPDesktop 可执行文件

确保所有必需的文件都已就位,并且您已彻底测试了应用程序。

第 2 步:使用 Inno Setup 或您选择的任何其他编译器来创建用于分发的安装程序。

虽然这不是绝对必要的,但为您的应用程序创建安装程序可以增强用户体验。 Inno Setup 是 Windows 程序的免费安装程序。创建安装程序的方法如下:

  1. 从 (https://jrsoftware.org/isinfo.php) 下载并安装 Inno Setup。

  2. 创建一个新脚本并将其配置为包含 PHPDesktop 目录。

  3. 根据您的要求指定输出可执行文件的名称、安装目录和其​​他设置。

  4. 编译脚本生成安装程序。

此步骤是可选的,但如果您想为用户提供专业的安装体验,建议您执行此步骤。

第 3 步:压缩和分发

如果您不想创建安装程序,只需将整个 PHPDesktop 目录压缩为 ZIP 文件并分发即可。确保包含 phpdesktop-chrome.exe 文件,因为这是您的用户将运行来启动您的应用程序的可执行文件。

第 4 部分:自定义应用程序

完成所有操作后,您仍然发现徽标没有改变吗?

每个开发人员想要的常见自定义之一是能够删除或替换应用程序启动时出现的 PHPDesktop 徽标。我将使用本节来指导您完成该过程。

第 1 步:删除或替换 PHPDesktop 徽标

要自定义或删除 PHPDesktop 徽标,您将需要像 Resource Hacker 这样的资源编辑器。

具体操作方法如下。

  1. 下载资源黑客:

    • 访问(http://www.angusj.com/resourcehacker/)并下载并安装Resource Hacker
  2. 打开 PHPDesktop 可执行文件:

    • 启动 Resource Hacker 并打开 phpdesktop-chrome.exe。
  3. 导航至徽标资源:

    • 在 Resource Hacker 中,导航到树视图中的“位图”部分。您可以在这里找到徽标文件,通常命名为 101、102 等。
    • 右键单击徽标并选择“替换资源”。
  4. 替换或删除徽标:

    • 要替换徽标,请单击“使用新位图打开文件”,选择您的自定义徽标,然后替换它。
    • 要删除徽标,您可以删除资源或将其替换为空白图像。
  5. 保存更改:

    • 进行更改后,保存修改后的可执行文件。您可能希望将其另存为不同的文件以保留原始文件的备份。
  6. 测试应用程序:

    • 运行修改后的可执行文件以确保徽标已成功替换或删除。

第 2 步:更新应用程序图标

如果您想进一步自定义您的应用程序,您可以更新 PHPDesktop 使用的图标。这涉及替换 settings.json 文件中引用的“app_icon.ico”文件并确保可执行文件使用新图标。

  • 创建或查找新图标:

    • 使用图标编辑器或在线工具为您的应用程序设计自定义图标。
    • 将图标另存为.ico格式。
  • 替换图标:

    • 将 PHPDesktop 目录中现有的 app_icon.ico 文件替换为您的自定义图标。
    • 如果您使用不同的名称保存了 settings.json 文件以引用新图标。
  • 重建可执行文件:

    • 如果您进行了重大更改,请考虑使用 Resource Hacker 将新图标嵌入到可执行文件本身中。
  1. 分布和最终考虑因素

编译并自定义您的应用程序后,就可以将其分发给您的客户/用户了。现在,我想给你我自己的两个奈拉策略来帮助你进行分配,它们是:

  • 测试:在不同的Windows环境下测试您的应用程序以确保兼容性。
  • 文档:提供有关如何安装和使用应用程序的清晰说明。
  • 许可:如果您使用第三方源代码或库,那么包含他们的许可证或协议也很重要。
  • 提供支持:创建一个支持系统渠道,为可能对您的应用程序有问题的客户提供帮助。

Oya,这是我对你们的祝福??

我想相信,通过阅读到目前为止,您已经发现我的内容非常有价值,并且有兴趣尝试一下。然而,作为处理此类项目的专家,我肯定可以在最后期限内无缝地交付给您,让您大吃一惊。因此,您可以快速向我发送您想要实现的目标的详细信息,我们可以共同努力将您的想法变为现实。

订阅我的个人资料 ooo ?

下一个

  1. 技术的商业方面:技术和钱在哪里。

  2. 如何使用 PHPBROWSERBOX 构建桌面应用程序

如果你想念我,那你萨比

我无法解释我在 dev.to 上有多爱你们?

我还有一个关于此的视频教程,只需 20 美元,另一个视频教程您可以学习如何创建用于分发的激活码,只需 50 美元。

我也喝咖啡。当你等待我的下一篇文章时请给我一杯咖啡。

https://buymeacoffee.com/olatunji

等待我的下一篇文章。

版本聲明 本文轉載於:https://dev.to/dev_olatunji/how-to-build-and-distribute-desktop-apps-using-php-and-phpdesktop-a-step-by-step-guide-1g80?1如有侵犯,請聯絡[email protected]刪除
最新教學 更多>
  • 棄用 `ereg_replace` 後,如何將多個空格替換為單一空格?
    棄用 `ereg_replace` 後,如何將多個空格替換為單一空格?
    用單一空格取代多個空格:棄用ereg_replace雖然使用ereg_replace 以單一空格取代多個空格看起來很簡單,但它已被棄用。因此,您在嘗試使用它時可能會遇到錯誤。本文提出了一種替代解決方案。 遷移到 preg_replace()要取代 ereg_replace,請切換到 preg_rep...
    程式設計 發佈於2024-11-06
  • 如何開始自由工作?
    如何開始自由工作?
    您是否正在努力透過 Upwork 賺錢?別擔心!我曾經去過那裡,我來這裡是為了分享我將這些掙扎轉化為成功的旅程。憑藉奉獻精神和正確的方法,您可以開始在 Upwork 上賺錢,並打開通往一系列機會的大門。讓我們深入探討最大化您的收入潛力的關鍵步驟。 掌握技巧遊戲 在 Upwork 上...
    程式設計 發佈於2024-11-06
  • 如何將 8 個字元作為打包單精度浮點數載入到 __m256 變數中?
    如何將 8 個字元作為打包單精度浮點數載入到 __m256 變數中?
    將8 個字元從記憶體載入到__m256 變數中作為打包單精度浮點數為了優化高斯模糊演算法,您尋求用__m256 內在變數取代浮點緩衝區的使用。本問題旨在確定此任務的最佳指令。 AVX2 架構說明:利用 PMOVZX 將字元零擴展為 32 位元256b 暫存器中的整數。 使用 VCVTDQ2PS 就地...
    程式設計 發佈於2024-11-06
  • 如何在Python中尋找字串中子字串的第n次出現?
    如何在Python中尋找字串中子字串的第n次出現?
    查找字串中某個子字串第n 次出現識別某個子字串第n 次出現對應的索引為各種程式場景中經常出現的任務。在Python中,沒有專門為此目的而設計的內建函數。但是,可以採用多種方法來實現此結果。 一種簡單的方法是使用循環來迭代字串併計算子字串的出現次數。起始索引被初始化為第一次出現的結果,循環繼續直到找到...
    程式設計 發佈於2024-11-06
  • 程式語言解釋
    程式語言解釋
    ? 注意:缩略图是使用生成的 ComfyUI 帮助下的 Flux Schnell 模型; 本文是在 NI - 自然智能 的帮助下撰写的 ? 没有时间阅读? - 观看我们创建的视频: 集会 ? 最初所有程序都是用二进制编写的 - 所谓的汇编 编程语言。你从字面上指示CPU在内做什么 ...
    程式設計 發佈於2024-11-06
  • Go Context — TODO() 與 Background() 不再令人困惑!
    Go Context — TODO() 與 Background() 不再令人困惑!
    在 Go 中,上下文包有助於管理請求範圍的值、取消訊號和截止日期。 啟動上下文的兩種常見方法是 context.TODO() 和 context.Background()。 儘管它們的行為相似,但它們的目的不同。 上下文.背景() 當您不需要任何特殊處理(例如取消或截止日期...
    程式設計 發佈於2024-11-06
  • 如何偵測 CMake 中的 C++11 編譯器支援?
    如何偵測 CMake 中的 C++11 編譯器支援?
    CMake 中C 11 編譯器支援的檢測概述在本指南中,我們探討自動偵測編譯器是否支援C 11 的方法CMake,提供對最新和以前CMake 版本的全面分析。 CMake 3.1.0 及更高版本CMake 3.1.0 版本引進了一個強大的功能:偵測編譯器。這是透過cmake_minimum_requ...
    程式設計 發佈於2024-11-06
  • 基於屬性的測試:深入探討現代測試方法
    基於屬性的測試:深入探討現代測試方法
    基于属性的测试是一种强大的测试方法,它侧重于软件的属性或特征,而不是特定的输入输出情况。与手动定义特定测试用例的传统测试不同,基于属性的测试会自动生成各种输入来验证某些属性是否始终成立。这种方法可以更广泛地探索潜在场景,使其成为发现隐藏错误并确保稳健的软件行为的有效方法。 测试方法的演变 从传统的...
    程式設計 發佈於2024-11-06
  • 為開發人員和安全團隊提供主動的 AppSec 持續漏洞管理
    為開發人員和安全團隊提供主動的 AppSec 持續漏洞管理
    现代软件开发环境中哪些日益增长的网络安全风险让 CISO 忙碌? 开发人员和安全团队面临着越来越多的威胁,从复杂的开源和供应商控制的供应链攻击到 AI 生成的代码引入的漏洞,例如提示注入和 GitHub Copilot 的代码安全性差。现代应用程序通常严重依赖开源组件(例如在 npm、PyPI 或 ...
    程式設計 發佈於2024-11-06
  • 如何使用 React 對 MeteorJS 中的 Bootstrap Spacing 實用程式類別進行故障排除?
    如何使用 React 對 MeteorJS 中的 Bootstrap Spacing 實用程式類別進行故障排除?
    在 Bootstrap 中使用間距實用程式類別在 Bootstrap 中,間距實用程式類別可讓您輕鬆控制元素周圍的間距。但是,如果您在使用它們時遇到問題,這裡有一個指南可以幫助您解決。 更新的間距語法(Bootstrap 4 和 5)Bootstrap 4引入了間距實用程式類別的簡化語法:邊距:m{...
    程式設計 發佈於2024-11-06
  • 如何在Python中設定子程序的工作目錄?
    如何在Python中設定子程序的工作目錄?
    如何在Python中設定子程序的工作目錄在Python中,subprocess.Popen()函數允許您在Py thon中執行指令子程序。一個常見的要求是指定子程序的工作目錄。 問題:如何使用 subprocess.Popen() 設定子程序的工作目錄? 答案:要指定工作目錄,請使用 subproc...
    程式設計 發佈於2024-11-06
  • Pandas 什麼時候創建視圖而不是副本?
    Pandas 什麼時候創建視圖而不是副本?
    Pandas 視圖與副本生成規則Pandas 在決定 DataFrame 上的切片操作是否產生視圖或結果時採用特定規則複製。透過了解這些規則,您可以優化資料操作並避免意外行為。 從始終產生副本的操作開始:所有操作,除了那些專門設計用於修改的操作就地 DataFrame,創建副本。 只有某些操作支援 ...
    程式設計 發佈於2024-11-06
  • 使用代理伺服器解鎖地理限制網站
    使用代理伺服器解鎖地理限制網站
    利用代理服务器绕过区域封锁是一种常用且有效的方法。代理服务器作为中介,可以隐藏用户的真实IP地址,使用户的请求看起来像是来自代理服务器的地理位置,从而绕过区域封锁。 使用代理服务器绕过区域封锁的关键步骤:‌‌ 选择合适的代理服务器‌:根据目标区域的网络环境和遮挡情况,选择覆盖该区域的...
    程式設計 發佈於2024-11-06
  • 如何為三角形中的線性漸變鋸齒線建立平滑邊緣?
    如何為三角形中的線性漸變鋸齒線建立平滑邊緣?
    為線性漸變鋸齒線創建平滑邊緣為了設計具有由兩個三角形形成的尖底的響應式圖像,開發人員在三角形線上遇到了意外的鋸齒狀邊緣。為了解決這個問題,我們探索了產生更平滑漸變過渡的策略。 雖然硬停止線性漸變影像中的顏色通常會導致鋸齒狀邊緣,但調整停止點和起始點可以緩解此問題。不要突然從一種顏色變為另一種顏色,而...
    程式設計 發佈於2024-11-06
  • Java 中「static」的魔力:一為所有,一切為一!
    Java 中「static」的魔力:一為所有,一切為一!
    老实说,当我们第一次遇到 static 关键字时,我们都会想:“这是什么魔法?” ?但别担心,我会用一种简单、深入、甚至有点有趣的方式来分解它! 想象一下你正在参加一个聚会?你和你所有的朋友都戴着帽子。但每个人都必须分享一顶帽子。这基本上就是 Java 中 static 关键字的作用!您不必为每个朋...
    程式設計 發佈於2024-11-06

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3