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)打包程序信息设置。选择安装程序属性即可修改相关的作者、产品名称、版本号等相关信息。

.net平台 通过Windows installer 打包和部署实例操作的更多相关文章

  1. 安全模式下卸载windows installer打包的软件(转)

    安全模式下卸载windows installer打包的软件 起因: 主机系统MAC,虚拟软件Parallels Desktop, 虚拟系统 Win 7. 今天在虚拟机WIN7里面安装了某个软件导致重启 ...

  2. Winform程序部署方式总结二——Windows Installer发布

    针对Winform程序,介绍两种常用打包方式:ClickOnce和Windows Installer 应用程序如下: 二.Windows Installer发布 1.新建项目 创建后视图 第一步: 应 ...

  3. SNF开发平台WinForm之八-自动升级程序部署使用说明-SNF快速开发平台3.3-Spring.Net.Framework

    9.1运行效果: 9.2开发实现: 1.首先配置服务器端,把“SNFAutoUpdate2.0\服务器端部署“目录按网站程序进行发布到IIS服务器上. 2.粘贴语句,生成程序 需要调用的应用程序的Lo ...

  4. springboot测试、打包、部署

    本文使用<springboot集成mybatis(一)>项目,依次介绍springboot测试.打包.部署. 大多数朋友是做后端的,也就是为其他系统或者前端UI提供Rest API服务. ...

  5. 机房收费系统vb.net之打包与部署(二)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangdan199112/article/details/28286365             ...

  6. flask在windows上用mod_wsgi部署

    flask在windows上用mod_wsgi部署也是折腾了不少时间,下面就总结下. 首先下载Apache httpd,我认为Apache Hans比较好: 一般这种情况下,你的python环境已经安 ...

  7. 【工具】清理Windows Installer冗余文件(支持64位NT6.x系统)

    样子: 支持系统: Windows NT 5.x/6.x 32及64位所有系统.需.net framework 2.0运行环境 功能: 清理上述系统中冗余的Windows Installer补丁文件. ...

  8. (转)使用 Advanced Installer 打包 一键安装Web应用程序

      使用 Advanced Installer 打包 一键安装Web应用程序         安装预览: 资源下载: 示例安装包 操作流程: 1.新建Asp.net Application. 2.设置 ...

  9. Visual Studio Installer打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案

    原文:Visual Studio Installer打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案 如果你是用Visual Studio自带的打包项目打包了一个I ...

随机推荐

  1. Java基础系列2:深入理解String类

    Java基础系列2:深入理解String类 String是Java中最为常用的数据类型之一,也是面试中比较常被问到的基础知识点,本篇就聊聊Java中的String.主要包括如下的五个内容: Strin ...

  2. HTML-01-HTML格式

    <!DOCTYPE html><!--告诉浏览器这个文档是html5版本的文档声明--> <html> <!--html是我们网页中最大的标签--> & ...

  3. 2020年薪30W的Java程序员都要求熟悉JVM与性能调优!

    前言 作为Java程序员,你有没有被JVM伤害过?面试的时候是否碰到过对JVM的灵魂拷问?   一.JVM 内存区域划分 1.程序计数器(线程私有) 程序计数器(Program Counter Reg ...

  4. 互联网那些事 | MQ数据丢失

    本系列故事的所有案例和解决方案只是笔者以前在互联网工作期间的一些事例,仅供大家参考,实际操作应该根据业务和项目情况设计,欢迎大家留言提出宝贵的意见 背景 小王和小明分别维护分布式系统中A.b两个服务, ...

  5. 模块化系列教程 | 深入源码分析阿里JarsLink1.0模块化框架

    1. 概述 1.1 模块动态加载卸载主流程 2. 模块动态加载 2.1 模块加载源码分析 2.1.1 AbstractModuleRefreshScheduler 2.1.2 ModuleLoader ...

  6. springmvc html与jsp解析器

    1. 配置多个视图解析器 InternalResourceViewResolver内置了jsp解析器,用于解析jsp页面 此处我们使用了InternalResourceViewResolver,其有一 ...

  7. Android小记(整理一下自己犯过的错误)

    时间:2019/12/20 如题,写这篇博客的原因主要是为了记录自己在Android编程中犯的一些低级的错误,以此警戒自己不要出现类似的错误. 1.在监听按钮的点击事件时,如果使用的是实现View.O ...

  8. 娱乐往事,年初捡到1G PAR,平淡的日子泛起波澜

    常听说这样的故事 垃圾佬捡到蓝牙键盘,于是配了一台上万的电脑 垃圾佬捡到机箱,于是配了一台带遥控的HTPC 垃圾佬捡到假NAS,于是组了20+T的RAID 而我,不是垃圾佬,更没有捡到过U盘,对突如其 ...

  9. Java原子变量类需要注意的问题

    在学习多线程时,遇到了原子变量类,它是基于 CAS 和 volatile 实现的,能够保障对共享变量进行 read-modify-write 更新操作的原子性和可见性.于是我就写了一段代码试试,自认为 ...

  10. StackExchange.Redis 之 hash 类型示例

    StackExchange.Redis 的组件封装示例网上有很多,自行百度搜索即可. 这里只演示如何使用Hash类型操作数据: // 在 hash 中存入或修改一个值 并设置order_hashkey ...