QT從入門到入土(八)——專案打包和釋出

唯有自己強大 發表於 2021-08-20
QT

引言

新手上路可謂是困難重重,你永遠不知道下一個困難會在什麼時候出現,在完成了運動控制卡封裝釋出過程中可謂是舉步維艱。因此記錄一下qt5+vs2019的打包釋出方法。

打包整體思路:

  • 將編譯後的exe可執行檔案及其各種依賴dll、lib、圖示、配置檔案等先打包放到一個目錄中
  • 對其進行打包釋出(兩種方式):
  1. 利用VS的外掛Microsoft Visual Studio Installer Projects安裝程式打包外掛進行打包

  2. 利用Enigma Virtual Box(單檔案封裝工具) 進行打包

 一,將編譯後的exe可執行檔案及其各種依賴dll、lib、圖示、配置檔案等先打包放到一個目錄中

(1)dumpbin指令檢視可執行檔案的dll依賴包

在VS開發人員命令提示符(vs介面->工具->命令列->開發者命令提示)中執行dumpbin /dependents 程式路徑 :dumpbin/dependents C:\Users\WFD\Desktop\GCtest\Debug\GCtest

QT從入門到入土(八)——專案打包和釋出

(2)windeployqt.exe指令自動將qt依賴包複製過來

 1️⃣先開啟 Qt 的命令列(用的32位)

QT從入門到入土(八)——專案打包和釋出

2️⃣使用“cd/d 路徑” 命令進入到包含.exe 檔案的資料夾。

3️⃣ Qt 命令列執行 windeployqt 工具,輸入: “windeployqt ***.exe” ,就可以將qt依賴包複製到該資料夾中

QT從入門到入土(八)——專案打包和釋出

QT從入門到入土(八)——專案打包和釋出

(3)非Qt依賴庫的新增

要注意release版本與debug版本所需要的依賴是不一樣的,需要分別打包!!!

  •  方法一

在通過vs的dumpbin指令查詢到可執行檔案的dll依賴包後,使用eyerything軟體根據位置去尋找dll檔案。

下載地址:http://www.voidtools.com/

QT從入門到入土(八)——專案打包和釋出

  •   方法二

如果動態庫有很多那麼複製起來很麻煩(比如上面Qtcore.dll查詢到很多路徑,但是不知道用哪個),可以使用window的批處理:

通過觀察程式執行時Vs輸出視窗中載入的dll庫:

QT從入門到入土(八)——專案打包和釋出

  • 方法三

使用Dependency Wallker 開啟***.exe 查詢不存在的.dll,其中黃色的問號標識是不存在的。Dependency Wallker可以遞迴顯示可執行檔案(exe)和動態庫(dll)呼叫的動態庫。

開啟**.exe檔案之後各個節點可能是展開的很亂,可以右擊任意節點選擇“摺疊所有(L)”,然後再單擊根節點的加號展開就是如圖所示的樣式,這樣很清晰。
QT從入門到入土(八)——專案打包和釋出 

在全部新增完依賴庫後,點選exe執行檔案就可以本機執行了。或者將該資料夾全部傳送給使用者也可執行。

那麼如何只使用一個exe檔案就完成程式的執行呢?

🙄這就要用到下面要說的打包和釋出了。

 二,利用VS的外掛Microsoft Visual Studio Installer Projects安裝程式打包外掛進行打包

安裝過程不再詳述參見:Installer Projects外掛的安裝

 (1)新建安裝專案

解決方案->新建專案->setup project

QT從入門到入土(八)——專案打包和釋出

  進入檔案系統:(setup1->view->檔案系統)

QT從入門到入土(八)——專案打包和釋出

  (2)新增檔案

Application Folder->add->檔案(在此新增相關的依賴資源)

QT從入門到入土(八)——專案打包和釋出

 將exe所在目錄下的所有檔案新增到該處

  (3)新增專案輸出

Application Folder->add->專案輸出(主程式入口)

 QT從入門到入土(八)——專案打包和釋出

對主輸出建立快捷方式,並將其拖動到User‘s Desktop內

QT從入門到入土(八)——專案打包和釋出

   (4)打包釋出

 對setup1專案進行重新生成,即生成安裝程式

QT從入門到入土(八)——專案打包和釋出

 三,利用Enigma Virtual Box(單檔案封裝工具) 進行打包

Enigma 虛擬檔案打包系統可以將程式和配套檔案打包成一個可執行檔案,而沒有任何效率的損失,配套檔案也不會被釋放至硬碟。(同時支援X86和X64二進位制檔案)。

如圖:

QT從入門到入土(八)——專案打包和釋出

 QT從入門到入土(八)——專案打包和釋出

將生成的GCtest_boxed檔案複製到要執行的裝置上即可(可以單獨執行)

 

相關文章