前言
该笔记针对 windows 环境
准备工作
- PHP For Windows 下载(我这里选择
php-8.2.19-nts-Win32-vs16-x64
)->解压->配置好ini(不会自行百度)->开启FFI拓展->配置好环境 - composer 配置composer环境
- Enigma Virtual Box (这是一个封装压缩成单文件的应用)
- Inno Setup (这是一个打包为安装包应用,有中文版的自行百度)
1. 压缩PHP
运行Enigma Virtual Box
应用
主程序:选择你的php-win.exe文件
新增->添加文件夹[递归] :选择你的PHP文件夹,这里我选择的是
C:\environment\php-8.2.19-nts
(请根据你的实际情况选择)文件选项:勾选->压缩文件和勾选->启动文件虚拟化
执行封包(你会拿到一个单文件),这里我的是
php-win_boxed.exe
2. 创建桌面php应用
新建文件夹
php-webui
(根据你的实际情况新建)进入文件夹
php-webui
(根据你的实际情况新建)
执行composer(这里我选择webui的php桌面拓展)
composer require kingbes/webui
- 新建文件
index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>phpwebui</title>
<!-- You must add webu.js; otherwise, the interaction cannot be performed -->
<script src="webui.js"></script>
</head>
<body>
<p>hello world for php webui</p>
<button onclick="btn()">btn</button>
<script>
function btn() {
hello('hello').then(function (res) {
console.log(res)
})
}
</script>
</body>
</html>
- 新建入口文件
index.php
<?php
require "./vendor/autoload.php";
use Kingbes\Webui;
use Kingbes\JavaScript;
// 实例
$Webui = new Webui;
// html字符串
$html = file_get_contents(__DIR__ . DIRECTORY_SEPARATOR . "index.html");
// 创建一个窗口
$window = $Webui->newWindow();
// 绑定js函数
$bind = $Webui->bind($window, "hello", function ($event, JavaScript $js) {
// 获取第一个参数为字符串
$arg_one = $js->getString($event);
var_dump($arg_one);
// 返回字符串
$js->returnString($event, "nihao");
});
// 显示窗口
$Webui->show($window, $html);
// 等待
$Webui->wait();
// 释放所有
$Webui->clean();
- 将封包好的
php-win_boxed.exe
文件复制到php-webui
文件夹中
执行指令
.\php-win_boxed.exe index.php
3. 将应用打包为安装包
执行应用 Inno Setup
- 选择->用[脚本向导]创建新的脚本文件->下一步
- 填写信息:应用程序信息(更具你的信息填写即可)->下一步(应用程序文件夹,不用管)->下一步
- 应用程序文件:主程序执行文件(选择你的
php-win_boxed.exe
文件,我这里选择是C:\project\php\php-webui\php-win.exe
)->添加文件夹(选择你新建的php-webui
,包含你的子文件)->下一步 - 创建程序快捷方式:勾选(允许用户创建桌面快捷方式)->下一步
- 应用程序文档:(根据你的实际情况填)->下一步
- 安装程序安装模式: 选择->管理员安装模式(为所有用户安装)-下一步
- ...剩下的根据你的实际情况填写
- Inno Setup 预处理器:勾选->使用 #define 编译指令->下一步
- 完成
接下来会弹出 是否立即编译脚本 ,选择否
然后修改一下代码
[Icons]
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppExeName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon; Parameters:"index.php";
再编译即可
假设你要添加自己的 ico图标 你就把图标文件添加到你的
php-webui
文件夹中 然后修改以下代码(我的ico图标文件夹是favicon.ico
,根据你的实际情况)
Name: "{autoprograms}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppExeName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon; Parameters:"index.php"; IconFilename:"{app}\favicon.ico"