把生成的程序testWeb.exe 另存到一个空文件夹下
通过 E:\Qt\5.15.2\msvc2019_64\bin\windeployqt.exe testWeb.exe
将依赖dll和资源全部找到,把依赖的子程序也拷贝到发布目录下 calendar.exe
现在在发布目录下运行testWeb.exe是正常的
发布目录下直接运行testWeb.exe是正常的
客户希望直接给它运行程序、无需解压、无需安装、一键运行。
所以想到用Enigma Virtual Box把发布目录publish目录下所有文件打包成一个完整的exe。
按步骤,打包过程如下
Enigma Virtual Box
然后测试运行,发现calendar.exe和QtWebEngineProcess.exe没有正常响应,导致网页没有显示、日历程序也没打开。
异常页面
我尝试把 calendar.exe 和 QtWebEngineProcess.exe 也用 Enigma Virtual Box 把依赖的dll 也搞成一个exe,再给testWeb.exe用,也不行。
附: publish目录文件内容,我在这里共享下YS168,因普通用户有大小限制,每个最大30MB,所以分了8个文件存储,全部下载完成后,解压publish.zip可以提取,大家有更好的文件床,可以推荐一下
http://ys-d.ysepan.com/626142937/014735558/UuwfgNl8J34646IGNP5Id5/publish.zip?lx=xz
http://ys-d.ysepan.com/626142975/014735551/SxwhgLl8J34646IGQ6Led/publish.z01?lx=xz
http://ys-d.ysepan.com/626142975/014735551/SxwhgLl8J34646IGQ6Led/publish.z02?lx=xz
http://ys-d.ysepan.com/626142975/014735551/SxwhgLl8J34646IGQ6Led/publish.z03?lx=xz
http://ys-d.ysepan.com/626142975/014735551/SxwhgLl8J34646IGQ6Led/publish.z04?lx=xz
http://ys-d.ysepan.com/626142975/014735551/SxwhgLl8J34646IGQ6Led/publish.z05?lx=xz
http://ys-d.ysepan.com/626142975/014735551/SxwhgLl8J34646IGQ6Led/publish.z06?lx=xz
http://ys-d.ysepan.com/626142933/014735557/UuwfgNl8J34646IGNP5Hb1/publish.z07?lx=xz
发邮件给china@enigmaprotector.com,讨论了该问题,给到的回复如下
从以上可以知道 原因是这个文件的特殊性【QtWebEngineProcess.exe】。
它不是由主程序直接调用的,而是从另一个 DLL 调用的。
调用方法非微软自带的 API,因此封包程序无法模拟这个文件被调用的动作。
普通的 dll 使用 Windows 常规 API 调用 exe 的话,没问题。
上文程序中 QT 用自己的方式加载 exe。 Enigma工具目前没有计划去解决。
github上也放了一份 publish.zip
暂时采用备选方案 临时文件夹解压运行代替
网友评论