【嵌入式——QT】QT制作安装包

news/2024/12/2 2:01:09/

第一步

QT程序写好之后,编译release版本

第二步

拿到release生成的.exe文件

第三步

新建文件夹deploy
在这里插入图片描述

第四步

将.exe文件复制到deploy目录下

第五步

在该目录下输入cmd指令,回车
在这里插入图片描述

第六步

在打开的命令窗口下输入 windeployqt TegNetCom_1.0.0.exe命令
在这里插入图片描述
会自动将你这个qt程序所需要到的库带到deploy这个目录下,在这个目录下就是你所要发布的程序以及所有的库。

第七步

安装制作安装包的软件下载地址 正常下载安装即可。
在这里插入图片描述

第八步

打开inno Setup Compiler 。选择File -》new-》Next

在这里插入图片描述

第九步

填写应用程序名称,应用程序版本,应用程序发布者,应用程序网站,前两个是必填项。然后Next
在这里插入图片描述

第十步

填写安装时默认的路径及文件名,然后Next
在这里插入图片描述

第十一步

选择应用程序的主执行文件,也就是第二步中拿到的.exe文件。点击下方Add folder,把这个程序运行所需要的dll和资源放在一个文件夹中,我这里就是deploy文件夹。然后Next
在这里插入图片描述

第十二步

接着再次点击Next,来到下一个页面。输入开始菜单中显示的名字,Next
在这里插入图片描述

第十三步

这里选择许可文件,安装前的文件,安装后显示信息,我这里先没有填,然后Next
在这里插入图片描述

第十四步

再次点击Next,直到来到选择语言页面,Next
在这里插入图片描述

第十五步

选择自定义编译器输出文件夹,编译器输出基本文件名,自定义的安装程序图标文件,安装密码。Next
在这里插入图片描述

第十六步

一路Next直到结束,将文件保存一下,之后就可以修改这个文件然后编译再次生成安装包TegNetComInno.iss

生成的iss文件

; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!#define MyAppName "TegNetCom"
#define MyAppVersion "2.0"
#define MyAppExeName "TegNetCom_2.0.0.exe"
#define MyAppAssocName MyAppName + " File"
#define MyAppAssocExt ".myp"
#define MyAppAssocKey StringChange(MyAppAssocName, " ", "") + MyAppAssocExt[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={{ED354006-ACB2-4454-8951-D733CBD30D92}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
DefaultDirName=C:/Program Files (x86)/TegNetCom\{#MyAppName}
ChangesAssociations=yes
DefaultGroupName={#MyAppName}
; Uncomment the following line to run in non administrative install mode (install for current user only.)
;PrivilegesRequired=lowest
OutputDir=D:\work_qt_project\EthernetOverCANConfig\install
OutputBaseFilename=TegNetCom_2.0.0_x86_Setup
SetupIconFile=D:\work_qt_project\EthernetOverCANConfig\Resource\main.ico
Compression=lzma
SolidCompression=yes
WizardStyle=modern[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked[Files]
Source: "D:\work_qt_project\EthernetOverCANConfig\deploy\{#MyAppExeName}"; DestDir: "{app}"; Flags: ignoreversion
Source: "D:\work_qt_project\EthernetOverCANConfig\deploy\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files[Registry]
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocExt}\OpenWithProgids"; ValueType: string; ValueName: "{#MyAppAssocKey}"; ValueData: ""; Flags: uninsdeletevalue
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}"; ValueType: string; ValueName: ""; ValueData: "{#MyAppAssocName}"; Flags: uninsdeletekey
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\DefaultIcon"; ValueType: string; ValueName: ""; ValueData: "{app}\{#MyAppExeName},0"
Root: HKA; Subkey: "Software\Classes\{#MyAppAssocKey}\shell\open\command"; ValueType: string; ValueName: ""; ValueData: """{app}\{#MyAppExeName}"" ""%1"""
Root: HKA; Subkey: "Software\Classes\Applications\{#MyAppExeName}\SupportedTypes"; ValueType: string; ValueName: ".myp"; ValueData: ""[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{autodesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

再次编译生成安装包

修改程序之后点击图中按钮会再次生成安装包
在这里插入图片描述


http://www.ppmy.cn/news/1551634.html

相关文章

JSON_EXTRACT 使用

JSON_EXTRACT 是 MySQL 中的一个函数,用于从 JSON 文本中提取值。以下是 JSON_EXTRACT 的主要用途和特点: 提取 JSON 值:可以从 JSON 字符串中提取一个或多个值。路径表达式:使用路径表达式来指定要提取的数据位置。路径表达式以…

【海底地震仪】的发展越来越趋向于智能化、自主化、多功能化、小型化和便携化

摘要 根据 HengCe 研究团队调研统计,2023年全球海底地震仪市场销售额达到了 亿元,预计2030年将达到 亿元,年复合增长率(CAGR)为 %(2024-2030)。中国市场在过去几年变化较快,2023年市…

微服务之短信验证服务配置完后junit单元测试短信发送失败

总之岁月漫长,然而值得等待。 主要是版本冲突问题,具体报错与解决方法如下: 报错前: 启动失败 短信服务测试报错: 解决后: 启动成功 短信服务测试发送成功: 在使用 SpringBoot 开发时&am…

高级 SQL 技巧:提升数据库操作效率与灵活性

SQL(Structured Query Language)是关系型数据库管理系统中用于访问和管理数据库的标准语言。在数据库开发和优化过程中,掌握高级 SQL 技巧是提升开发效率和查询性能的关键。本文将介绍一些高级 SQL 技巧,帮助开发者在复杂查询中提高效率、优化性能,并在实际项目中灵活应对…

【爬虫框架:feapder,管理系统 feaplat】

github:https://github.com/Boris-code/feapder 爬虫管理系统 feaplat:http://feapder.com/#/feapder_platform/feaplat 爬虫在线工具库 :http://www.spidertools.cn :https://www.kgtools.cn/1、feapder 简介 对于学习 Python…

Java 泛型详细解析

泛型的定义 泛型类的定义 下面定义了一个泛型类 Pair&#xff0c;它有一个泛型参数 T。 public class Pair<T> {private T start;private T end; }实际使用的时候就可以给这个 T 指定任何实际的类型&#xff0c;比如下面所示&#xff0c;就指定了实际类型为 LocalDate…

pip安装库时报错(请求超时)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

单机环境下Caffeine和Redis两级缓存的实现与问题解决

1. Caffeine和Redis介绍 Caffeine 是一个高性能、基于 Java 的缓存库。它被设计用来作为 Java 应用程序的本地缓存解决方案&#xff0c;提供了比传统缓存更高效的功能和性能。Caffeine 可以缓存任意类型的数据&#xff0c;并具有丰富的配置选项&#xff0c;以满足不同应用的缓…