QT 打包發佈

Qt之打包發佈(NSIS詳解)

sg_trans.gif(2013-09-02 17:41:11) 
發佈方式   
 Qt發佈的時候,通常使用兩種方式:  
(1)靜態編譯
(2)動態編譯  
 靜態編譯:把相關聯的庫一併引入可執行程序,雖然發佈簡單,但可執行程序較大。。。
 動態編譯:相關聯的庫,以dll的形式引用,不被包含進可執行程序,發佈不方便,但可執行程序較小。。。
 靜態發佈雖然不需要較多的dll,發佈簡單、方便,但是往往會牽扯到授權問題(詳情請查看Qt LGPL授權),動態發佈則可以避免。。。如果附帶了Qt的dll,就相當於發佈了Qt的dll,而這些庫是屬於Qt的,這足以保證使用者知道程序使用了LGPL版本的Qt(這部分還有待探討)。

查找依賴項
1、檢測可執行程序依賴模塊
 下載工具:Dependency Walker
 打開可執行程序,檢測依賴項
Qt之打包發佈(NSIS詳解)
 檢測完成之後,將所需依賴庫拷貝進去。。。再次進行檢測,反覆進行。

2、常用依賴庫
(1)Qt模塊庫
 Qt5Cored.dll
 Qt5Guid.dll
 Qt5Widgetsd.dll
(2)ICU依賴庫
 icudt51.dll
 icuin51.dll
 icuuc51.dll
(3)EGL依賴庫
 libEGLd.dll
 libGLESv2d.dll
(4)插件庫(Qt安裝目錄下即可找到D:\Software\Qt\Qt5.1.0\5.1.0\msvc2010\plugins\platforms)
 圖片支持庫:imageformats
 音頻、視頻支持庫:mediaservice
 平臺支持庫:platforms
 等等。。。
注意:查找對應的插件文件夾,粘貼到安裝目錄(一定要保持目錄結構,例如“platforms/***.dll”),詳細結構見打包發佈準備的文件組織結構。
(5)VS運行時庫(在VS安裝目錄下即可找到D:\Software\Microsoft Visual Studio\VC\redist)
 msvcp100d.dll
 msvcr100d.dll

 注意:發佈程序的時候注意版本(Debug/Release)
 如果是Debug版本的則是.前面帶d的(Qt5Cored.dll、Qt5Guid.dll、Qt5Widgetsd.dll)
 如果是Release版本的則是.前面不帶d的(Qt5Core.dll、Qt5Gui.dll、Qt5Widgets.dll)
 以上是我所用到的依賴庫,基本可以解決問題,包括:
Qt之打包發佈(NSIS詳解)

關於NSIS
1、NSIS簡介
(1)NSIS是什麼?
 一款免費的Win32安裝、卸載系統!
(2)NSIS有什麼特點?
 腳本簡潔高效、系統開銷小,進行安裝、卸載、設置、解壓文件也不在話下,幾乎可以做所有的事情。

2、工具
 NSIS Edit + NSIS

3、使用方式
 腳本嚮導 + 修改代碼 = 個性化安裝包

準備文件
 以下是我即將打包的所有文件,安裝包目錄結構(包括:可執行程序、插件庫、運行時庫、授權文件、卸載程序圖標等等!)如下圖所示:
Qt之打包發佈(NSIS詳解)
1、利用嚮導製作安裝包: 
Qt之打包發佈(NSIS詳解)

2、填寫應用程序基本信息

Qt之打包發佈(NSIS詳解)

3、指定安裝程序所用選項
注意:這裏選擇語言爲SimpChinese
Qt之打包發佈(NSIS詳解)

4、設置應用程序安裝目錄與授權文件

Qt之打包發佈(NSIS詳解)

5、指定應用程序文件

Qt之打包發佈(NSIS詳解)

6、指定創建應用程序圖標

Qt之打包發佈(NSIS詳解)

7、選擇安裝程序完成後運行的動作

Qt之打包發佈(NSIS詳解)

8、指定接觸安裝程序屬性

Qt之打包發佈(NSIS詳解)

9、進行腳本編譯、保存

Qt之打包發佈(NSIS詳解)

10、等待編譯完成,即可運行打包後的安裝包
Qt之打包發佈(NSIS詳解)

 大功告成之後,即可進行安裝!

(1)安裝程序

Qt之打包發佈(NSIS詳解)

(2)此處顯示授權文件中的內容

Qt之打包發佈(NSIS詳解)

(3)選擇安裝目錄

Qt之打包發佈(NSIS詳解)

(4)運行程序,並顯示“自述文件”

Qt之打包發佈(NSIS詳解)

(5)運行結果

Qt之打包發佈(NSIS詳解)

 關於Qt的打包工具瞭解一些,個人感覺NSIS用起來比較順手,腳本修改起來也方便,所以就推崇一下。。。若想將安裝包變得更加美觀,則需要手動修改腳本,更多信息請查找相關資料,此處不再多做介紹!

注:
技術在於交流、溝通,轉載請註明出處並保持作品的完整性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章