Qt之程序发布以及打包成exe安装包
一、簡述
Qt項目開發完成之后,需要打包發布程序,而因為用戶電腦上沒有Qt配置環境,所以需要將release生成的exe文件和所依賴的dll文件復制到一個文件夾中,然后再用 Inno Setup打包工具 打包成一個exe安裝包,就可以發布了。
二、設置應用程序圖標
我們編譯好生成的exe文件的圖標是Qt自帶的一個白色的框框,不太好看,怎么能夠自己設置程序的圖標呢。先創建一個ico格式的文件,網上有很多在線就可以把png或jpg的圖片轉成ico格式的圖標文件,然后把ico文件放到源代碼目錄下,就是.pro文件的同一文件夾下。
在.pro項目文件中添加:
RC_ICONS = car.ico //這里的car.ico是我的ico文件的名字,改成你自己的ico文件名添加完后一定要重新qmake一遍,然后再運行一遍你的程序,這樣再看你的debug或者release文件夾下的exe文件就會有你設置好的圖標了。
三、發布程序
發布程序首先要獲得所依賴的dll文件,這里有兩種方法。方法一就是去Qt安裝目錄的bin目錄(筆者這里是F:\technology\Qt5.9.7\5.9.7\mingw53_32)中找所依賴的dll文件。方法二就是使用Qt自帶的發布程序工具windeployqt.exe,可以生成所依賴的dll文件。這里著重講解第二種方法,步驟如下:
(1)以 Release 方式編譯生成 exe 程序,也就是調試運行的方式選擇Release。
運行成功后,如果勾選了“shadow build”將源碼路徑和構建路徑分開,那么將在 build-cleanRobot-Desktop_Qt_5_9_7_MinGW_32bit-Release 文件夾下生成exe文件,如下圖1所示; 否則在源碼工程目錄下的 release 文件夾下生成exe文件,如下圖2所示。
將 cleanRobot.exe 可執行文件復制到別的文件夾下,這里我復制到F:\cleanRobot下,然后在 “開始菜單Qt5.9.7” 下找到 “Qt 5.9.7 for Desktop cmd”運行文件,打開運行。
執行cd F:\cleanRobot命令進入exe文件所在目錄下, 再執行dir命令查看目錄,最后執行windeployqt cleanRobot.exe命令,Qt就會自動把該程序所需要的所有dll拷貝過來。
當然有可能有些dll不是我們需要的,例如下面的D3Dcompiler_47.dll,為了使發布程序盡可能的小,可以把這些dll一個一個刪掉,再打開exe程序,看哪些dll是刪掉后就打開不了程序的,保留下來,剩下的刪除即可。
再將自帶文件夾,例如下圖的image文件夾復制過來,刪掉不必要的dll之后的exe安裝包文件夾如下圖所示。
其實到這一步,就可以將整個文件夾發布出去了,但如果想打包成一個exe安裝包,就要進行下面的步驟了。
四、打包程序
官方下載地址:http://www.jrsoftware.org/isdl.php#stable
下載后直接安裝即可。
項目開發完成之后,需要打包程序發行,可以使用 Inno Setup 軟件制作安裝exe。以下詳細講解如何打包應用程序:
(1)打開Inno Setup Complier,點擊 “文件”—>“新建”,新建一個腳本向導程序;然后點擊“next”
(2)在應用程序信息中輸入“應用程序名稱”、“應用程序版本”、“應用程序發布者”、“應用程序網站”,這些信息會自動在腳本中生成;然后點擊下一步
(3)自定義打包文件的的輸出地址以及輸出文件夾的名稱;然后點擊下一步
(4)選擇應用程序的主執行文件,也就是你編譯生成的exe文件,下面點擊“Add folder ”,把所有你的程序運行需要的dll和資源以及配置文件放在一個文件夾里,選擇這個文件夾;然后點擊下一步
注:Add folder 添加.exe的父文件夾,將依賴的dll等文件全部包含在內。
(5)輸入應用程序在開始菜單中顯示的名字,需要哪些功能,在前邊打上對勾,一般默認即可;然后點擊下一步
(6)這里可以選擇“許可文件”,“安裝前的文件”(如Readme文件等),“安裝后顯示信息”等;然后點擊下一步
(7)選擇安裝語言;然后點擊下一步
(8)選擇“自定義編譯器輸出文件夾”、“編譯器輸出基本文件名”、“自定義的安裝程序圖標文件”及“安裝密碼”;然后點擊下一步
注:第一個選項表示的是生成的 安裝包*.exe 的輸出目錄。icon文件是 安裝包*.exe 的圖標文件。
(9)在這里選擇是否使用#define編譯指令,選擇yes也就是在生成的腳本里使用#define宏定義一些常量,方便腳本編寫,勾不勾選隨意;然后點擊下一步
前面最后一步中間會詢問你是否立即編譯新的腳本,這個腳本是根據剛才我們前面填寫的那些內容自動生成的。可以直接使用編譯,也可以自己重新編寫,下面貼出生成的腳本代碼。
; Script generated by the Inno Setup Script Wizard. ; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName "紅牌檢測系統" #define MyAppVersion "2.5" #define MyAppPublisher "SHIOTC, Inc." #define MyAppURL "http://www.shiotc.com/" #define MyAppExeName "redplate_qt.exe"[Setup] ; NOTE: The value of AppId uniquely identifies this application. ; Do not use the same AppId value in installers for other applications. ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) AppId={{D21B4F6B-401E-4575-B6E1-612A9CA50D58} AppName={#MyAppName} AppVersion={#MyAppVersion} ;AppVerName={#MyAppName} {#MyAppVersion} AppPublisher={#MyAppPublisher} AppPublisherURL={#MyAppURL} AppSupportURL={#MyAppURL} AppUpdatesURL={#MyAppURL} DefaultDirName=D:/redplate_detection_v2.5 DefaultGroupName=redplate_detection_v2.5 OutputDir=E:\carriage_recognition\redplate_detection\qt\redplate_qt_svm2\x64\Release OutputBaseFilename=redplate_detection_2.5 ;SetupIconFile=E:\carriage_recognition\redplate_detection\qt\redplate_qt_svm2\x64\Release\ICON.ico Password=123456 Compression=lzma SolidCompression=yes[Languages] Name: "english"; MessagesFile: "compiler:Default.isl"[Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked[Files] Source: "E:\carriage_recognition\redplate_detection\qt\redplate_qt_svm2\x64\Release\redplate_qt.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "E:\carriage_recognition\redplate_detection\qt\redplate_qt_svm2\x64\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs ; NOTE: Don't use "Flags: ignoreversion" on any shared system files[Icons] Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon[Run] Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent注:運行過程中出現錯誤,可以直接在腳本中進行修改。
最后就生成了exe安裝包文件,點擊打開exe文件即可進行安裝,如下圖所示。
參考:
Qt使用自帶的windeployqt 生成exe來發布軟件
QT 程序發布以及用Inno Setup打包成安裝包
使用Inno Setup Compiler制作安裝軟件包
轉載于:https://www.cnblogs.com/linuxAndMcu/p/10974927.html
總結
以上是生活随笔為你收集整理的Qt之程序发布以及打包成exe安装包的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: hbase常用命令
- 下一篇: zip:命令行下zip压缩/解压缩