文件准備
-
編譯程序 Release 版本,拷貝生成的 exe 到某個目錄下。
-
拷貝依賴庫到上面的文件夾:
- 根據自己實際使用的編譯器,打開終端,執行
windeployqt D:\installer\test.exe
這里列舉出了程序的依賴庫,但是沒有自動拷貝到 test.exe 的目錄下,我們可以手動拷貝上面的依賴庫,根據使用的編譯器版本選擇相應的庫,我的是 D:\Qt\5.14.0\mingw73_32\bin
。
此時,可以嘗試運行一下 exe 看是否缺少依賴庫或插件,我的運行之后發現:
解決辦法是將對應使用的編譯器版本的libstdc++-6.dll
也拷貝到上面的文件夾。
上面的程序如果雙擊可以直接運行則證明庫和插件已滿足,但是由於電腦配置不同,可以借助另一台電腦測試一下,或者使用 Dependency 查看程序的依賴庫:
如果不需要增加其他的附件文件,這樣就可以了,如果需要增加用戶手冊、配置文件、License 這樣的文件,可以添加到此文件目錄下。
程序打包
下載 Qt Installer Framework 安裝。
直接從安裝路徑下拷貝一個example,例如拷貝一個 startmenu 的例子,重命名為 test_Installer:
把前面打包過的文件全部復制到 packages下面的 data 文件夾里,注意是和 exe 同一級目錄的所有文件。
其中的文件組織形式:
修改配置文件,在config
目錄下,有一個config.xml
文件,使用文本編輯器打開,根據自己的需求進行修改:
< Name> 軟件名稱
< Version> 版本號
< Title> 安裝程序窗口標題
< Publisher> 發布者名稱
< StartMenuDir> 要生成的windows開始菜單目錄
< TargetDir> 默認安裝路徑
修改包信息文件,在packages
目錄下,有一個package.xml文件,使用文本編輯器打開,根據自己的需求進行修改:
< DisplayName> 顯示的名稱
< Description> 描述
< Version> 部件的版本號
< ReleaseDate> 發行日期
< Licenses> 許可信息名稱以及許可文件名
<Default>默認是否選中協議
< Script> 腳本文件
< UserInterfaces> 額外的界面(如果需要的話,而且需要去installscript.qs中配置)
修改 installscript.qs 文件,增加啟動欄、桌面快捷方式:
function Component()
{
// default constructor
}
Component.prototype.createOperations = function()
{
// call default implementation to actually install README.txt!
component.createOperations();
if (systemInfo.productType === "windows") {
component.addOperation("CreateShortcut", "@TargetDir@/test.exe", "@StartMenuDir@/MegPadUi.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/test.exe", "@HomeDir@/Desktop/test.lnk");
component.addOperation("CreateShortcut", "@TargetDir@/maintenancetool.exe", "@StartMenuDir@/Remove.lnk");
}
}
CMD 執行:
C:\Qt\QtIFW-3.2.2\bin\binarycreator -c config\config.xml -p packages test.exe -v
最終生成安裝包: