.net平台 通过Windows installer 打包和部署实例操作
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 打包和部署实例操作的更多相关文章
- 安全模式下卸载windows installer打包的软件(转)
安全模式下卸载windows installer打包的软件 起因: 主机系统MAC,虚拟软件Parallels Desktop, 虚拟系统 Win 7. 今天在虚拟机WIN7里面安装了某个软件导致重启 ...
- Winform程序部署方式总结二——Windows Installer发布
针对Winform程序,介绍两种常用打包方式:ClickOnce和Windows Installer 应用程序如下: 二.Windows Installer发布 1.新建项目 创建后视图 第一步: 应 ...
- SNF开发平台WinForm之八-自动升级程序部署使用说明-SNF快速开发平台3.3-Spring.Net.Framework
9.1运行效果: 9.2开发实现: 1.首先配置服务器端,把“SNFAutoUpdate2.0\服务器端部署“目录按网站程序进行发布到IIS服务器上. 2.粘贴语句,生成程序 需要调用的应用程序的Lo ...
- springboot测试、打包、部署
本文使用<springboot集成mybatis(一)>项目,依次介绍springboot测试.打包.部署. 大多数朋友是做后端的,也就是为其他系统或者前端UI提供Rest API服务. ...
- 机房收费系统vb.net之打包与部署(二)
版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/wangdan199112/article/details/28286365 ...
- flask在windows上用mod_wsgi部署
flask在windows上用mod_wsgi部署也是折腾了不少时间,下面就总结下. 首先下载Apache httpd,我认为Apache Hans比较好: 一般这种情况下,你的python环境已经安 ...
- 【工具】清理Windows Installer冗余文件(支持64位NT6.x系统)
样子: 支持系统: Windows NT 5.x/6.x 32及64位所有系统.需.net framework 2.0运行环境 功能: 清理上述系统中冗余的Windows Installer补丁文件. ...
- (转)使用 Advanced Installer 打包 一键安装Web应用程序
使用 Advanced Installer 打包 一键安装Web应用程序 安装预览: 资源下载: 示例安装包 操作流程: 1.新建Asp.net Application. 2.设置 ...
- Visual Studio Installer打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案
原文:Visual Studio Installer打包后生成的安装文件每次执行都需要重新安装C++ 2010运行库(x86)的解决方案 如果你是用Visual Studio自带的打包项目打包了一个I ...
随机推荐
- [ Python入门教程 ] Python中日志记录模块logging使用实例
python中的logging模块用于记录日志.用户可以根据程序实现需要自定义日志输出位置.日志级别以及日志格式. 将日志内容输出到屏幕 一个最简单的logging模块使用样例,直接打印显示日志内容到 ...
- DFS或BFS(深度优先搜索或广度优先搜索遍历无向图)-04-无向图-岛屿数量
给定一个由 '1'(陆地)和 '0'(水)组成的的二维网格,计算岛屿的数量.一个岛被水包围,并且它是通过水平方向或垂直方向上相邻的陆地连接而成的.你可以假设网格的四个边均被水包围. 示例 1: 输入: ...
- CentOS 6.6 下源码编译安装MySQL 5.7.5
版权声明:转自:http://www.linuxidc.com/Linux/2015-08/121667.htm 说明:CentOS 6.6 下源码编译安装MySQL 5.7.5 1. 安装相关工具# ...
- linux--->用户管理和sudo权限
linux 用户 配置文件 linux主要通过用户配置文件来查看和修改用户信息 etc/passwd 第一个字段:用户名 第二个字段:密码标志 (表明这个用户有密码,密码放在etc/shadow文件) ...
- 记一次golang的内存泄露
程序功能 此程序的主要功能是将文件中数据导入到clickhouse数据库中. [问题描述] 服务器内存每隔一段时间会耗尽 [问题分析] 由于使用的是go语言开发的,所以采用了业界流行的工具pprof. ...
- VC简单操作mysql
#include <iostream> #include <winsock.h> #include <mysql.h> #pragma comment(lib, & ...
- HDU_1864_01背包
http://acm.hdu.edu.cn/showproblem.php?pid=1864 题目好像是输入的数据都是两位小数,先统计能报销的发票,然后把小数*100变成成熟就是01背包问题了. #i ...
- java9String类简单了解
public class jh_01_String类简单了解 { public static void main(String[] args) { /* * 函数:完成特定功能的代码块. * next ...
- springboot结合Docker部署
工程目录 创建Dockerfile FROM java VOLUME /tmp ADD springboot-docker-0.0.1-SNAPSHOT.jar app.jar RUN bash -c ...
- vue项目实战经验汇总
目录 1.vue框架使用注意事项和经验 1.1 解决Vue动态路由参数变化,页面数据不更新 1.2 vue组件里定时器销毁问题 1.3 vue实现按需加载组件的两种方式 1.4 组件之间,父子组件之间 ...