日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt之程序发布以及打包成exe安装包

發布時間:2023/12/10 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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安装包的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。