引言
新手上路可謂是困難重重,你永遠不知道下一個困難會在什么時候出現,在完成了運動控制卡封裝發布過程中可謂是舉步維艱。因此記錄一下qt5+vs2019的打包發布方法。
打包整體思路:
- 將編譯后的exe可執行文件及其各種依賴dll、lib、圖標、配置文件等先打包放到一個目錄中
- 對其進行打包發布(兩種方式):
-
利用VS的插件Microsoft Visual Studio Installer Projects安裝程序打包插件進行打包
- 利用Enigma Virtual Box(單文件封裝工具) 進行打包
一,將編譯后的exe可執行文件及其各種依賴dll、lib、圖標、配置文件等先打包放到一個目錄中
(1)dumpbin指令查看可執行文件的dll依賴包
在VS開發人員命令提示符(vs界面->工具->命令行->開發者命令提示)中執行dumpbin /dependents 程序路徑 :dumpbin/dependents C:\Users\WFD\Desktop\GCtest\Debug\GCtest
(2)windeployqt.exe指令自動將qt依賴包復制過來
1️⃣先打開 Qt 的命令行(用的32位)
2️⃣使用“cd/d 路徑” 命令進入到包含.exe 文件的文件夾。
3️⃣ Qt 命令行執行 windeployqt 工具,輸入: “windeployqt ***.exe” ,就可以將qt依賴包復制到該文件夾中
(3)非Qt依賴庫的添加
要注意release版本與debug版本所需要的依賴是不一樣的,需要分別打包!!!
- 方法一
在通過vs的dumpbin指令查詢到可執行文件的dll依賴包后,使用eyerything軟件根據位置去尋找dll文件。
下載地址:http://www.voidtools.com/
- 方法二
如果動態庫有很多那么復制起來很麻煩(比如上面Qtcore.dll查找到很多路徑,但是不知道用哪個),可以使用window的批處理:
通過觀察程序運行時Vs輸出窗口中加載的dll庫:
- 方法三
使用Dependency Wallker 打開***.exe 查找不存在的.dll,其中黃色的問號標識是不存在的。Dependency Wallker可以遞歸顯示可執行文件(exe)和動態庫(dll)調用的動態庫。
打開**.exe文件之后各個節點可能是展開的很亂,可以右擊任意節點選擇“折疊所有(L)”,然后再單擊根節點的加號展開就是如圖所示的樣式,這樣很清晰。
在全部添加完依賴庫后,點擊exe運行文件就可以本機運行了。或者將該文件夾全部發送給用戶也可運行。
那么如何只使用一個exe文件就完成程序的運行呢?
🙄這就要用到下面要說的打包和發布了。
二,利用VS的插件Microsoft Visual Studio Installer Projects安裝程序打包插件進行打包
安裝過程不再詳述參見:Installer Projects插件的安裝
(1)新建安裝項目
解決方案->新建項目->setup project
進入文件系統:(setup1->view->文件系統)
(2)添加文件
Application Folder->add->文件(在此添加相關的依賴資源)
將exe所在目錄下的所有文件添加到該處
(3)添加項目輸出
Application Folder->add->項目輸出(主程序入口)
對主輸出創建快捷方式,並將其拖動到User‘s Desktop內
(4)打包發布
對setup1項目進行重新生成,即生成安裝程序
三,利用Enigma Virtual Box(單文件封裝工具) 進行打包
Enigma 虛擬文件打包系統可以將程序和配套文件打包成一個可執行文件,而沒有任何效率的損失,配套文件也不會被釋放至硬盤。(同時支持X86和X64二進制文件)。
如圖:
將生成的GCtest_boxed文件復制到要運行的設備上即可(可以單獨運行)