使用VS2017将我的c++项目打包成安装程序,并设置开机自启,卸载,图标等
大体上打包分为两步
目录
一、将编译后的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++项目打包成安装程序,并设置开机自启,卸载,图标等相关推荐
- labview如何弹出提示窗口_以实例跟我学如何将LabVIEW的VI程序打包成安装程序
当我们在LabVIEW平台上辛辛苦苦编写完成测试软件程序时,一般很少情况将程序源代码分发给用户,而是将VI程序制作成可执行的安装包程序,供用户安装使用. 那么,如何将LabVIEW中的VI程序打包成安 ...
- 【C#】 软件打包与制作安装向导(打包成自解压和打包成安装程序)
1.不打包,直接使用 2.打包成自解压文件 一个SFX (SelF-eXtracting)自解压文件是压缩文件的一种,因为它可以不用借助任何压缩工具,而只需双击该文件就可以自动执行解压缩,因此叫做自解 ...
- Vue项目打包成桌面程序exe除了使用electron-vue你还可以这样
场景 electron-vue 基于 vue (基本上是它听起来的样子) 来构造 electron 应用程序的样板代码. 该项目的目的,是为了要避免使用 vue 手动建立起 electron 应用程序 ...
- Inno Steup 6 下载,安装,将 .exe 文件打包成安装程序(详细教程)
下载 点击链接进入官网:https://jrsoftware.org/isdl.php 选则版本后,点击下载(以6.2.0版本为例) 等待下载完成 下载完成 安装 双击文件运行 选中语言,默认 Eng ...
- vue项目打包成app,在ios端iconfont 部分字体图标不显示
最近在用vue结合capacitor 写app的项目,痛苦真痛苦. 在xcode上打包成app之后,发现有些字体图片怎么改都显示不出来. 解决办法: 把引用的css url 加上https
- bat启动脚本 springboot_奇葩需求:springboot项目注册为windows系统服务并设置开机自启...
关于springboot项目的部署与SSM(框架)部署war包到Tomcat下有所不同,比较明显的是springboot打包为jar包,运行则是执行通过java -jar xxx.jar,不再需要放置 ...
- java注册系统服务_奇葩需求:springboot项目注册为windows系统服务并设置开机自启...
关于springboot项目的部署与SSM(框架)部署war包到Tomcat下有所不同,比较明显的是springboot打包为jar包,运行则是执行通过java -jar xxx.jar,不再需要放置 ...
- 奇葩需求:springboot项目注册为windows系统服务并设置开机自启
程序员的成长之路 互联网/程序员/技术/资料共享 关注 阅读本文大概需要 4 分钟. 作者:双主双机热备 来源:http://suo.im/5yPoPJ 关于springboot项目的部署与SSM(框 ...
- sencha touch 扩展篇之将sencha touch打包成安装程序(下)- 使用phonegap打包安装程序
这讲我们来讲解下如何使用phonegapa创建项目环境并通过她们将sencha touch打包成app,这里我们只讲解打包android的apk,打包ios的过程有点类似,但是需要在mac环境 ...
最新文章
- Android 应用程序窗体显示状态操作(requestWindowFeature()的应用)
- 8、Power Map—实例:制作独立播放的视频
- 【机器学习】使用集成学习回归器改善预测模型的得分
- BugKuCTF WEB 输入密码查看flag
- MySQL使用时遇到的问题
- python 映射和反映射_python映射类型的相关介绍
- HTML 文档流和文本流的理解
- 常用字符串处理函数汇总
- boost库编译安装以及Qt导入
- 无人驾驶泊车?你要再多等等,百度Apollo和大众刚启动合作
- 如何选择适合自己的阿里云服务器规格类型?
- 世界之窗如何保存html,世界之窗(文字版)
- MySQL索引的原理,B+树、聚集索引和二级索引的结构分析
- Please port CPUType detection to your platform (CPU_ABI string ‘loongarch64‘)
- 《模拟电子技术》–童诗白
- Uva10616+10820
- vue的生命周期(详细)
- 中国小微企业调查数据CMES:小型微型家庭作坊式企业收支工商税收营商情况
- C语言中memcpy()和memcpy_s()的区别
- Wordpress 所有 hook 钩子
热门文章
- 向量 模(module) 范数(norm)
- java指定图片的dpi和存储大小kb
- 华为MIB关键字IOD查询地址及方法
- pandas学习笔记:pandas.Dataframe.rename()函数用法
- cesium 鼠标操作习惯修改 鼠标左键旋转 鼠标右键平移
- 有关PHP文档生成工具---PHPDocumentor
- cocos2d-x 如何制作一个类马里奥的横版平台动作游戏 1 献给所有对动作游戏有爱的朋友
- 如何在云服务器安装操作系统
- TCP吞吐性能优化的吐槽与拯救
- Photoshop 导入堆栈出错: 载入图层 无法合并智能对象文档。将跳过这些文档