Windows installer 打包和部署

1.新建项目。

打开VS,新建项目->其他项目类型->安装和部署(Visual Studio Installer)。

注:若VS2013 或者 VS2015 没有打包和部署模块。通过https://marketplace.visualstudio.com/搜索Microsoft Visual Studio 2013 Installer Projects或者Microsoft Visual Studio 2015 Installer Projects 与VS版本对应下载并安装。

2.添加打包项目。

将需要打包的项目添加到该解决方案中。(若不添加,则无法为步骤4添加项目输出)

3.添加打包项目的文件系统。

右键【添加】选择【文件系统】,如下图所示。

将需要打包项目的bin文件拷贝到 Application Folder目录下。

注:bin文件下可能包含文件夹,通过右键Add File过程繁琐,可以直接通过复制将整个目录进行拷贝。

4.添加项目输入。

右键文件夹->Add->项目输出。(注:右键主程序的上级目录的文件夹,而不一定是Application Folder)

5.创建桌面快捷方式。

右键选择该项目的启动程序(或者主输出),选择Create Shortcut to ***。将创建的快捷方式拖至User’s Desktop目录下。

    

改变快捷方式图标。

6.创建卸载程序。

右键文件夹根目录->Add->File,然后将"C:\Windows\System32" 下面的“msiexec.exe”文件给添加进来。可以再给msiexec.exe创建一个快捷方式命名为”UnInstall.exe“。将安装程序属性中的ProductCode复制给卸载快捷方式(UnInstall.exe)的Arguments属性,需在ProductCode的值前插入”/X ”。(X之后有空格) 卸载程序图标设置与上面相同。

7.添加注册表信息。

在HKEY_CLASSES_ROOT目录下依次创建”项目名”->”Shell”->”Open”->”command”四层目录关系,如下图所示。右键command->New->字符串值。将新建的字符串值的Name清空(还原为default值,可覆盖注册表中的默认值),将Value值设置为”[TARGETDIR]\+文件夹名称+启动项名称”+空格+”%1”。”%1”为参数,可以为其他值。例如该用例Value值为”[TARGETDIR]\MaWanClient\MaWanClient.exe” “%1”。(注:[TARGETDIR]为大写)

8.其他注意事项。

(1)注册表卸载时自动删除。右键选择在【HKEY_CLASSES_ROOT】目录下创建的文件->【属性窗口】,将DeleteAtUninstall属性改为True。

(2)X86与X64兼容性问题。打包过程中可能遇到待打包项目与打包程序执行平台不一致问题,可以将解决方案【属性】中的活动配置改为”Debug|Any CPU”

(3)HTML调用测试。HTML代码如下:

<html>
<head></head>
<body>
<a href="MaWanClient:0">启动</a>
</body>
</html>

  

MaWanClient 与注册表中的根目录名称一致,”0”为传入参数。通过注册表的信息即可调用系统中的安装完成的软件。

(4)打包程序信息设置。选择安装程序属性即可修改相关的作者、产品名称、版本号等相关信息。

最新文章

  1. 基于JQuery的浮动DIV显示提示信息并自动隐藏
  2. ListView的基础入门
  3. ecshop 点击领取红包
  4. UVA 11082 矩阵解压(网络流建模)
  5. SU sugabor命令学习
  6. QT连接mysql中文显示问题
  7. C++四种cast操作符
  8. 遇到的Mysql的一个坑
  9. MongoDB覆盖索引查询
  10. vuetify | vue | 文件上传组件 | file | upload | form input[type=&quot;file&quot;]
  11. Linux/Windows 应用程序开发
  12. Linux之临时配置网络(ip,网关,dns)+永久配置
  13. C语言中volatile的作用和使用方法
  14. python基础 - 字符串作
  15. LeetCode - Most Frequent Subtree Sum
  16. 066——VUE中vue-router之rewrite模式下配置404页面
  17. CentOS7.4 + Ambari 2.6.1.5 + HDP 2.6.4.0 安装部署
  18. mysql 约束条件 not null与default
  19. [原][译][osgearth][EarthFile]关于EarthFile 的Model Layer 讲解(通过earth文件加载模型层)(OE官方文档翻译)
  20. vue生命周期小笔记

热门文章

  1. es6 promise 简单总结
  2. 简单实现Android手机“全局可调试”(ro.debuggable = 1)的方法【锤子坚果3】
  3. Dubbo入门到实战
  4. ReactNative---ref的用法和技巧
  5. Shell常用命令之echo
  6. springboot中使用自定义注解实现策略模式,去除工厂模式的switch或ifelse,实现新增策略代码零修改
  7. C#系列之算数运算符(四)
  8. Django面试集锦(51-65)
  9. 十五 awk文本处理
  10. Python多重继承之菱形继承