C# winform  Visual Studio Installer打包教程

软件在功能开发实现后,其实并没有真正的完成。对于一个专业的开发者来说,Release软件应该是以安装版本的形式进行发布的,这篇文章将具体介绍如何使用VS2010下Visual Studio Installer进行打包软件。

 

Setp1.首先建立Visual Studio Installer下Setup Project工程,如下图1:

图1

Step2.在“应用文件夹”下选择“添加”,再选择“文件”,如图2:

图2

Step3.在弹出的对话框中,选择我们已编写好的文件,如.exe/ .dll等,注意:这里只选择软件一级目录下的文件。其实,“Application Folder”对应的就是软件文件夹,如图3:

一定要注意第三步和第四步。这两步很重要,因为我掉进这个坑半天,所以特意提醒大家一下,一定要选择软件一级目录下的文件。

                                                                                                                       图3

Step4.由于我们编写的软件中带有Config/ Database…等文件夹,所以在“Application Folder”文件夹目录下也要建立对应的文件夹。操作步骤为:“Application Folder”-->“Add”-->“Folder”,具体如下图4所示:

图4

Step5.上一步的文件夹添加完成之后,接下来就需要把已编写好的软件内,对应的每一个文件夹下的文件进行添加,添加的步骤如下图5所示:

图5

Step6.接下来,我们要创建快捷方式,具体操作为:选择.exe文件所在目录“Application Folder”-->在右边的“Name”下右键点击.exe名称-->“创建快捷方式”,同时,你可以重命名快捷方式的名称。具体如下图6

图6

Step7.将快捷方式拖放置“User’s Desktop”或“User’sPrograms Menu”下,同时,也可以在快捷方式的Icon属性内设置快捷方式的图标。如图7所示:

图7

Step8.设置系统必备,右键选择项目的属性,进入属性页中。在属性页下选择“Prerequisites”,如图8

图8

Step9.设置系统所需,重要一点:“从与我的应用程序相同的位置下载系统必备组件”必选

图9

Step10.添加卸载程序,选择“Application Folder”文件夹-->“Add”-->“File…”-->添加C:\WINDOWS\system32\msiexec.exe,(或者自己写一个卸载程序也是可以的)。如图10所示:

图10

Step11.设置卸载程序。首先创建msiexec.exe的快捷方式-->然后重命名快捷方式为“UnInstall.exe”-->接着把此项目的ProductCode(右击项目名称属性可以找到ProductCode)前添加“/x”设置到“UnInstall.exe”的Arguments属性内,具体如下图11

图11

Step12.重复Step7,把卸载程序的快捷方式拖到“User’s Programs Menu”内

Step13.更改项目属性,如作者及相关属性,如下图12所示:

图12

Step14.编译生成安装项目:

针对警告部分:

关于msiexec.exe的警告无需处理,因为msiexec.exe文件是受Windows保护,所以弹出警告。

关于dll对象重复的警告,删除一个即可。

C# winform Visual Studio Installer打包教程的更多相关文章

  1. C# winform Visual Studio Installer打包教程,安装包

    //具体打包过程,参考下面网址 https://www.cnblogs.com/dongh/p/6868638.html VS 扩展和更新-联机 搜索 Microsoft Visual Studio ...

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

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

  3. Visual Studio Installer打包安装项目VS2015

    使用VS2015的Visual Studio Installer打包安装项目,虽然整体操作很简单,但还是有几个特殊的点需要记一下,故写下此博客方便以后查阅 第一步,创建安装项目 如下: 里面最左侧的框 ...

  4. visual studio installer 打包123

    下载安装visual studio installer

  5. 使用Visual Studio Installer 2015打包WPF程序

    前言 做过WPF项目,就少不了要将程序打包部署到客户现场,因为一般长时间不会更新打包程序,每次变动较大需要重新配置打包程序时,就会有些生疏,不那么得心应手.为了方便记忆,记录到博客中. 准备 因为做过 ...

  6. InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)

    InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序) 标签: InstallShieldVS2013 2015 ...

  7. Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)

    原文:InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序) InstallShield Limited Edi ...

  8. Visual Stdio 2015打包安装项目的方法(使用Visual Studio Installer)

    首先在官网下载VS2015的Visual Studio Installer 1.创建安装项目 里面最左侧的框框有三个文件夹 1.“应用程序文件夹”即"Application Folder&q ...

  9. InstallShield Limited Edition for Visual Studio 2013 图文教程打包安装包

    http://www.wuleba.com/23892.html 从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,转而让大家去安装使用第三方的打包工具“Inst ...

随机推荐

  1. linux 和 windows 安装composer

    在 Linux 和 Mac OS X 中可以运行如下命令: curl -sS https://getcomposer.org/installer | phpmv composer.phar /usr/ ...

  2. CentO7 安装 redis, 主从配置,Sentinel集群故障转移切换

        一.Redis的安装(前提是已经安装了EPEL)   安装redis: yum -y install redis 启动/停止/重启 Redis 启动服务: systemctl start re ...

  3. js实现私有变量

    一.块级作用域 js中没有块级作用域的概念,可用匿名函数实现,由于匿名函数执行完一遍后,内部没有引用其变量对象的函数,其变量对象被清除,后面则引用不到其中的变量 (function(){ //块级作用 ...

  4. python-poll实现异步IO

    #!usr/bin/python from socket import * from select import * from time import ctime s=socket() s.bind( ...

  5. 【LeetCode题解】94_二叉树的中序遍历

    目录 [LeetCode题解]94_二叉树的中序遍历 描述 方法一:递归 Java 代码 Python代码 方法二:非递归 Java 代码 Python 代码 [LeetCode题解]94_二叉树的中 ...

  6. Java SPI

    一.什么是Java SPI? SPI的全名为Service Provider Interface.大多数开发人员可能不熟悉,因为这个是针对厂商或者插件的.在java.util.ServiceLoade ...

  7. Spring扩展:Spring框架的由来

    一.Spring框架的由来

  8. 撩课-Java每天5道面试题第10天

    撩课Java+系统架构 视频 点击开始学习 81.Servlet的会话机制? HTTP 是一种无状态协议, 这意味着每次客户端检索网页时, 都要单独打开一个服务器连接, 因此服务器不会记录下 先前客户 ...

  9. 图解源码之FutureTask篇(AQS应用)

    所以,FutureTask既可以由Executor来调度执行,也可以由调度线程调用FutureTask.run()直接执行. FutureTask是通过AQS的模板设计模式来实现阻塞get方法的. 从 ...

  10. 【SSH网上商城项目实战03】使用EasyUI搭建后台页面框架

    转自:https://blog.csdn.net/eson_15/article/details/51312490 前面两节,我们整合了SSH并且抽取了service和action部分的接口,可以说基 ...