功能:Installer Projects 是一个用于发布VS项目的官方扩展,可以将VS中开发的程序打包成标准的windows安装包,分发给用户安装。
版本:VS2013之前的版本默认自带Installer功能,VS2013之后的版本默认是不包含Installer模板的,所以需要自行去安装。
安装方法:
1、打开VS,选择 扩展-->管理扩展-->联机 (或者选择 工具-->扩展和更新-->联机),搜索Microsoft Visual Studio Installer Projects,进行安装,安装好之后,重启vs。
2、去官网下载VS对应版本的InstallerProjects,在此附上适用于VS2017和VS2019的InstallerProjects下载地址https://marketplace.visualstudio.com/items?itemName=VisualStudioClient.MicrosoftVisualStudio2017InstallerProjects
2.1添加Setup项目
User‘s Programs Menu文件夹中(如下图所示)
2.设置快捷方式属性,修改快捷方式名称和图标(.ico格式),如下图
(备注:{1028BF2E-832F-4B79-8D54-01CFB4BB30EC} 为 Setup项目属性中的ProductCode,当项目属性中ProductCode改变时,卸载这里的Arguments需要跟着改变)
1、以上配置完成,编译Setup项目即可在“Setup项目/Release”生成安装包。
2、setup.exe 与 Setup.msi的区别
msi文件时windows installer开发出来的程序安装文件,它可以让你安装、修改、卸载你所安装的程序,也就是说VS工具打包生成的msi文件就是windows installer的数据包,把所有和安装文件相关的内容封装在一个包里。VS工具打包生成的exe文件是主要是用于检查安装的环境(即系统必备),当安装的环境检查成功后,会自动再安装msi文件。
3、补充(无需卸载旧包直接覆盖升级):安装以上步骤生成的安装包,若程序更改后再次生成的安装包,安装时会提示已经安装了该产品的另外一个版本(如左下图),此时则需要使用控制面板或卸载程序(2.6中有介绍)卸载掉旧包,然后才能安装新包。若程序更改想要直接覆盖升级,则需要修改Setup项目属性(2.2 配置Setup项目中有介绍),将Version改为大于原版本号,修改后系统会自动提示是否修改ProductCode(如右下图),此时点“是”,此时生成的安装包运行则不会再提醒左下图了。
到这一步还未完,虽然此时未卸载旧包可以直接安装了,但是安装后的dll和exe仍然是旧版本的dll、exe,要解决这个问题则修改所有程序集的版本号(程序集右键属性-->应用程序-->程序集信息)(如下图),修改程序集版本和文件版本,大于原版本号即可。然后重新生成的安装包就可以不用卸载直接覆盖升级啦。
•打包程序增加自定义操作
1.Setup项目右键-->View-->自定义操作,可以看到有四个子项:安装、提交、回滚、卸载,如右图所示
2.在Install上点击右键-->添加自定义操作-->Application Folder -->【主输出】(这样,重新生成后,安装之后就会执行 OnBeforeInstall 、 OnAfterInstall 、 BeforeInstall事件、 AfterInstall事件的代码了。)
•CustomActionData 属性
自定义操作的附加数据,读取自定义操作的安装信息,需采用/name=value 的格式。多个值必须以单个空格隔开:/name1=value1 /name2=value2。如果值内有一个空格,则必须加引号:/name=“a value”。
举例:获取程序安装路径: /name=“[TARGETDIR]\” 代码中引用参数: this.Context.Parameters["name"];
• InstallerClass 属性
为了使自定义操作被视为安装组件,必须将 InstallerClass 属性设置为 true。(该属性默认为true)