大体上打包分为两步

目录

一、将编译后的exe可执行文件及其各种依赖dll、lib、图标、配置文件等先打包放到一个目录中

(1)dumpbin指令查看可执行文件的dll依赖包

(2)windeployqt.exe指令自动将qt依赖包复制过来

二、利用VS的插件Microsoft Visual Studio Installer Projects安装程序打包插件进行打包

(1)新建安装项目

(2)创建桌面快捷方式与开始菜单快捷方式

(3)卸载程序的创建

(4)设置开机启动

(5)设置安装流程和提示内容

(6)设置软件更新

Visual Studio Installer 部署(官方说明)


一、将编译后的exe可执行文件及其各种依赖dll、lib、图标、配置文件等先打包放到一个目录中

(1)dumpbin指令查看可执行文件的dll依赖包

dumpbin /dependents 程序路径
列:dumpbin /dependents C:\Users\wxj233\Desktop\新建文件夹\qrCodeAndScan.exe
dumpbin需要在VS开发人员命令提示符中执行

(2)windeployqt.exe指令自动将qt依赖包复制过来

列:windeployqt.exe C:\Users\wxj233\Desktop\新建文件夹\qrCodeAndScan.exe
windeployqt.exe需要在qt对应的命令提示中执行

    其他的非qt依赖文件只能自行拷贝了,另外要注意release版本与debug版本所需要的依赖是不一样的,这里需要分别打包!!!
该步骤完成后点击exe应该可以正常运行才对,若不能正常运行可能是某个文件缺失造成的,需要进行调试,调试方法为将vs中该项目的运行环境配置为你拷贝这些依赖文件的路径。可参考:c++项目在VS环境中运行正常,将exe拷贝出来后运行bug

二、利用VS的插件Microsoft Visual Studio Installer Projects安装程序打包插件进行打包

安装过程不再详述参见:Installer Projects插件的安装

(1)新建安装项目

将所有依文件按照相应的目录结构添加进安装项目中,右键项目->view->文件系统,如下图:

进入文件系统:

右键Application Folder添加文件与对应的文件目录结构。

(2)创建桌面快捷方式与开始菜单快捷方式


右键对应的可执行程序选择create shortcut to xxx.exe,这样子就创建了一个快捷方式,然后把这个快捷方式直接拖拽进User's Desktop目录即可,可以更改一下名称啥的。
开始菜单快捷方式的创建与桌面快捷方式方法一样,再右键对应的可执行程序选择create shortcut to xxx.exe,创建一个新的快捷方式,然后拖进User's Programs Menu里面即可。
设置快捷方式图标,选中对应的快捷方式->属性窗口,选择对应的图标,这个图标也必须是你上一步中包含的依赖文件哦,要是上一步没有包含,那就没有。

(3)卸载程序的创建

右键Application Folder添加卸载程序,该程序在C:\Windows\System32\msiexec.exe下,然后给msiexec.exe也创建一个快捷方式,可以改一下快捷方式名称。

我把我的快捷方式名称改成了“卸载.exe”,到此为止卸载是不能使用的,卸载程序得知道该去卸载谁啊?所以需要设置卸载参数。
找到项目的productcode,位置如下:①先选择项目;②点击右侧的属性;③复制ProductCode;

右键刚才“卸载.exe”快捷方式->属性窗口

配置Arguments值为"/x ProductCode",即完成了卸载程序的配置。

(4)设置开机启动

在给可执行程序创建一个快捷方式,方法与上面步骤一直,更改名称为你自己想要的名称,我的我是改成了“qrCodeAndScanLink.exe”,就放到当前目录即可。

开机启动需要设置注册表右键项目->view->注册表,打开后对应不同的系统增加以下项
HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Run   64位系统
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run  32位系统
随后在Run中增加字符串键值name随便取Value这个地方要注意,我的是“[TARGETDIR]qrCodeAndScanLink.exe”,[TARGETDIR]指安装目录,qrCodeAndScanLink.exe为上面创建的快捷方式,这个地方要用快捷方式,不要直接连接到可执行程序,有可能会出问题,我的就出了找不到配置文件的bug,我暂时也不清楚为什么会这样。[TARGETDIR]与qrCodeAndScanLink.exe之间不需要任何"\"之类字符。


这个地方设置开机自启遇到了作者一些麻烦,我自己电脑上怎么样都是正常的,拿到单位电脑上怎么样都没办法自启,后来我也是没办法采取了另一种方式,设置开机启动文件夹,如下图。

StartUp对应的就是windows系统的“启动”目录,我在该目录中增加了快捷方式到我的应用程序。

(5)设置安装流程和提示内容

右键安装项目->view->用户界面,这个比较简单读者自行试试就可以了。

(6)设置软件更新


此处更改Version版本号即可,ProductCode会自动更改改变,注意的是,任何更改最好都改一下Version,这个地方UpgradeCode不可以随便更改!

都配置完了右键项目生成就可以了

相关链接:Microsoft Visual Studio Installer Projects 安装包的制作案例

Visual Studio Installer 部署(官方说明)

使用VS2017将我的c++项目打包成安装程序,并设置开机自启,卸载,图标等相关推荐

  1. labview如何弹出提示窗口_以实例跟我学如何将LabVIEW的VI程序打包成安装程序

    当我们在LabVIEW平台上辛辛苦苦编写完成测试软件程序时,一般很少情况将程序源代码分发给用户,而是将VI程序制作成可执行的安装包程序,供用户安装使用. 那么,如何将LabVIEW中的VI程序打包成安 ...

  2. 【C#】 软件打包与制作安装向导(打包成自解压和打包成安装程序)

    1.不打包,直接使用 2.打包成自解压文件 一个SFX (SelF-eXtracting)自解压文件是压缩文件的一种,因为它可以不用借助任何压缩工具,而只需双击该文件就可以自动执行解压缩,因此叫做自解 ...

  3. Vue项目打包成桌面程序exe除了使用electron-vue你还可以这样

    场景 electron-vue 基于 vue (基本上是它听起来的样子) 来构造 electron 应用程序的样板代码. 该项目的目的,是为了要避免使用 vue 手动建立起 electron 应用程序 ...

  4. Inno Steup 6 下载,安装,将 .exe 文件打包成安装程序(详细教程)

    下载 点击链接进入官网:https://jrsoftware.org/isdl.php 选则版本后,点击下载(以6.2.0版本为例) 等待下载完成 下载完成 安装 双击文件运行 选中语言,默认 Eng ...

  5. vue项目打包成app,在ios端iconfont 部分字体图标不显示

    最近在用vue结合capacitor 写app的项目,痛苦真痛苦. 在xcode上打包成app之后,发现有些字体图片怎么改都显示不出来. 解决办法: 把引用的css url 加上https

  6. bat启动脚本 springboot_奇葩需求:springboot项目注册为windows系统服务并设置开机自启...

    关于springboot项目的部署与SSM(框架)部署war包到Tomcat下有所不同,比较明显的是springboot打包为jar包,运行则是执行通过java -jar xxx.jar,不再需要放置 ...

  7. java注册系统服务_奇葩需求:springboot项目注册为windows系统服务并设置开机自启...

    关于springboot项目的部署与SSM(框架)部署war包到Tomcat下有所不同,比较明显的是springboot打包为jar包,运行则是执行通过java -jar xxx.jar,不再需要放置 ...

  8. 奇葩需求:springboot项目注册为windows系统服务并设置开机自启

    程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 4 分钟. 作者:双主双机热备 来源:http://suo.im/5yPoPJ 关于springboot项目的部署与SSM(框 ...

  9. sencha touch 扩展篇之将sencha touch打包成安装程序(下)- 使用phonegap打包安装程序

        这讲我们来讲解下如何使用phonegapa创建项目环境并通过她们将sencha touch打包成app,这里我们只讲解打包android的apk,打包ios的过程有点类似,但是需要在mac环境 ...

最新文章

  1. Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
  2. 8、Power Map—实例:制作独立播放的视频
  3. 【机器学习】使用集成学习回归器改善预测模型的得分
  4. BugKuCTF WEB 输入密码查看flag
  5. MySQL使用时遇到的问题
  6. python 映射和反映射_python映射类型的相关介绍
  7. HTML 文档流和文本流的理解
  8. 常用字符串处理函数汇总
  9. boost库编译安装以及Qt导入
  10. 无人驾驶泊车?你要再多等等,百度Apollo和大众刚启动合作
  11. 如何选择适合自己的阿里云服务器规格类型?
  12. 世界之窗如何保存html,世界之窗(文字版)
  13. MySQL索引的原理,B+树、聚集索引和二级索引的结构分析
  14. Please port CPUType detection to your platform (CPU_ABI string ‘loongarch64‘)
  15. 《模拟电子技术》–童诗白
  16. Uva10616+10820
  17. vue的生命周期(详细)
  18. 中国小微企业调查数据CMES:小型微型家庭作坊式企业收支工商税收营商情况
  19. C语言中memcpy()和memcpy_s()的区别
  20. Wordpress 所有 hook 钩子

热门文章

  1. 向量 模(module) 范数(norm)
  2. java指定图片的dpi和存储大小kb
  3. 华为MIB关键字IOD查询地址及方法
  4. pandas学习笔记:pandas.Dataframe.rename()函数用法
  5. cesium 鼠标操作习惯修改 鼠标左键旋转 鼠标右键平移
  6. 有关PHP文档生成工具---PHPDocumentor
  7. cocos2d-x 如何制作一个类马里奥的横版平台动作游戏 1 献给所有对动作游戏有爱的朋友
  8. 如何在云服务器安装操作系统
  9. TCP吞吐性能优化的吐槽与拯救
  10. Photoshop 导入堆栈出错: 载入图层 无法合并智能对象文档。将跳过这些文档