PHP桌面应用打包笔记

KingBes

前言

该笔记针对 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应用

  1. 主程序:选择你的php-win.exe文件

  1. 新增->添加文件夹[递归] :选择你的PHP文件夹,这里我选择的是C:\environment\php-8.2.19-nts(请根据你的实际情况选择)

  2. 文件选项:勾选->压缩文件和勾选->启动文件虚拟化

  3. 执行封包(你会拿到一个单文件),这里我的是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"

这个是我打包好的 demo 拿去玩吧
通过网盘分享的文件:setupPHPWebUi.exe
链接: https://pan.baidu.com/s/1fC7Sd1Lnt-zio41s5jgJAQ?pwd=w5xc 提取码: w5xc

602 4 4
4个评论

KingBes

本来想用 static-php-cli 的,可以压缩得更小,且还有micro来打包,但static-php-cli搭建起来并不那么顺利,所以还是用Enigma Virtual Box直接给PHP环境给封包单文件

海盗船长

点赞,支持

  • 暂无评论
tanhongbin

数据库 使用mysql嘛?

xpwsgg

PHP真是厉害啊

  • 暂无评论

KingBes

1400
积分
0
获赞数
0
粉丝数
2023-06-12 加入
×
🔝