分享3:

需求:对已经开发的应用程序进行安装封装操作,即创建安装、卸载部署程序;

分析:程序的开发是为了在不同的人在不同的机器上使用,为了使不同机器使用该软件就需要见程序安装包,并且保证安装包中必须包含此软件运行所需的运行环境;

具体操作:

1.在VS2010中新建项目,选择:其他项目类型->安装与部署->安装向导,然后确定;

2.界面默认出现文件系统,分左右两侧;在右侧中点击应用程序文件夹后,右键选择添加文件,将需要打包的执行文件以及相关的组件类库等添加进行;

3.右击左边的“应用程序文件夹”打开属性对话框,将属性中的“defaultlocation”的路径中的“[manufacture]”去掉(不然安装程序默认目录就是c:\programm file\你的用户名\安装解决方案名称)

4.对执行程序增加快捷方式,选中执行程序,右键选择生成快捷方式,可以进行重命名,并将其剪切到左侧的“用户的“程序”菜单”或用户桌面(这样在安装完成后,快捷方式就会在菜单或桌面出现)

5.(重要环节)选择项目名称右键,选择属性;在属性页中,选择“系统必备”,将勾选“创建用于安装系统必备组件的安装程序”;在复选框中选择你必备组件;勾选“从与我的应用程序相同的位置下载系统必备组件”(重要一点:勾选”从与我的应用程序相同的位置下载系统必备组件(D)”,其实意思就是说你勾选后,生成安装项目时,在你安装项目的路径下,会有你在系统必备组件列表中勾选的组件.(系统自动完成,这一点还不错,不需要你自己去下载组件))

到此,基本完成制作,点击“生成->生成解决方案”,即可在Debug中找到setup.exe或者“项目名称.msi”

6.关于“创建卸载功能”,有两种方式如下:

方法一:

A.在添加应用程序时,需要添加一个msiexec.exe(可以重命名为Uninstall.exe),同执行程序一样(这个文件在c:\window\system32文件夹下);

B.(重要环节)选中msiexec.exe,需要给该执行程序设置Aguement属性值输入“/x {ProductCode}”(/x与{ProductCode}间有空格),ProductCode值在项目属性中可以找到(即为该安装程序的注册表号)

这个卸载程序有一个缺点:当制作的安装包电脑系统如果是64位的话,那么如果安装程序完成后,在32位电脑上这个卸载功能的话,就行不通(因为msiexec.exe是64位的)。为解决这个问题,唯有自己创建一个应用程序,直接调用系统中的msiexec.exe。

方法二:

新建一个控制台程序,在Main方法中添加如下代码:string sysroot = System.Environment.SystemDirectory;System.Diagnostics.Process.Start(sysroot+“\\msiexec.exe“,“/x {ProductCode(此值在安装程序项目属性中取得) } /qr”);

点击生成,在bin文件夹中得到.exe文件,将其加入到安装程序项目中的“应用程序中去”(后面操作一样了)。这样就可以直接调用电脑系统中的msiexec.exe程序了。

至此,基本完成安装程序,至于其他设置,可以在属性中设置相关的参数,也可以在视图中自定义安装界面等等。

C#创建安装、卸载部署程序的更多相关文章

  1. Android 安装 卸载 更新 程序

    安装程序的方法: .通过Intent机制,调出系统安装应用,重新安装应用的话,会保留原应用的数据. 1. String fileName =Environment.getExternalStorage ...

  2. C# Windows服务创建安装卸载

    一.创建Windows服务 使用VS创建一个新的windows服务应用程序 创建完成之后 二.相关配置 修改Service1名称为StartService(可以不改,自行选择) 添加安装程序并修改配置 ...

  3. MFC安装与部署(程序打包)

    (发现csdn传照片实在是太麻烦, 不能够直接拖拽进来;所以我直接使用云笔记生成一张图片 直接完成!) (懒癌晚期-)

  4. 安装和卸载windows程序

    安装windows service通常有两种工具 1.Framework目录下的installutil.exe工具.2.visual studio命令行工具 在这里我要说的是当我们使用的系统是64位的 ...

  5. android 静默安装 卸载 资料汇总

    1. android + eclipse + 后台静默安装(一看就会) 2. 适用于android1.5以下版本apk静默安装 3. error: INSTALL_FAILED_SHARED_USER ...

  6. ClickOnce部署疑难杂症:更新时部署与应用程序标识不一致问题。要安装此应用程序,请修改此文件的清单版本或卸载之前存在的应用程序。

    使用ClickOnce部署winform应用程序.无论是安装或者自动更新都极为方便,但有时候一些疑难杂症也令人头疼 1.注意每次部署完成之后 setup.exe无需覆盖,只需要在Application ...

  7. C#Windows Service程序的创建安装与卸载

    C#Windows Service程序的创建安装与卸载 一.开发环境 操作系统:Windows7x64 sp1 专业版 开发环境:Visual studio 2013 编程语言:C# .NET版本: ...

  8. 他山之石——vs2013 安装与部署及程序打包

    C#打包需要这个:InstallShield 2013 Limited Edition for Visual Studio  .下载地址: InstallShield 2013 Limited Edi ...

  9. 【转】.NET 安装和部署(Installer) 如何卸载上一个版本

    前言 当使用.NET“安装项目”打包的安装文件,再次安装的时候会弹出如下提示,这个时候会让我们很郁闷,怎样才能自动卸载上一个安装的版本呢?方法很简单,只需简单的两个操作步骤即可解决. 操作步骤 主要由 ...

随机推荐

  1. 『Shell编程』学习记录(1)

    例1. $ cat ex1 date pwd cd .. $ bash ex1 # 运行,显示当前日期和当前目录,但没有执行返回上级目录,因为执行的时候终端会产生一个子shell(类似于C语言调用函数 ...

  2. 6.Flask-WTForms

    Flask-WTF是简化了WTForms操作的一个第三方库.WTForms表单的两个主要功能是验证用户提交数据的合法性以及渲染模板.还有其它一些功能:CSRF保护, 文件上传等.安装方法:pip in ...

  3. C#版[击败99.69%的提交] - Leetcode 242. 有效的同构异形词 - 题解

    C#版 - Leetcode 242. 有效的同构异形词 - 题解 Leetcode 242.Valid Anagram 在线提交: https://leetcode.com/problems/val ...

  4. HttpUtil 【判断网络连接的封装类】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 该封装类主要包括以下功能: 判断是否有网络连接.判断是否有可用的网络连接: 判断是否是3G网络.判断mobile网络是否可用: 判断 ...

  5. Flink-Kafka-Connector Flink结合Kafka实战

    戳更多文章: 1-Flink入门 2-本地环境搭建&构建第一个Flink应用 3-DataSet API 4-DataSteam API 5-集群部署 6-分布式缓存 7-重启策略 8-Fli ...

  6. java 并发多线程 锁的分类概念介绍 多线程下篇(二)

    接下来对锁的概念再次进行深入的介绍 之前反复的提到锁,通常的理解就是,锁---互斥---同步---阻塞 其实这是常用的独占锁(排它锁)的概念,也是一种简单粗暴的解决方案 抗战电影中,经常出现为了阻止日 ...

  7. spring-boot-2.0.3源码篇 - @Configuration、Condition与@Conditional

    前言 开心一刻 一名劫匪慌忙中窜上了一辆车的后座,上车后发现主驾和副驾的一男一女疑惑地回头看着他,他立即拔出枪威胁到:“赶快开车,甩掉后面的警车,否则老子一枪崩了你!”,于是副驾上的男人转过脸对那女的 ...

  8. SLAM+语音机器人DIY系列:(二)ROS入门——10.在实际机器人上运行ROS高级功能预览

    摘要 ROS机器人操作系统在机器人应用领域很流行,依托代码开源和模块间协作等特性,给机器人开发者带来了很大的方便.我们的机器人“miiboo”中的大部分程序也采用ROS进行开发,所以本文就重点对ROS ...

  9. 【憩园】C#并发编程之异步编程(三)

      写在前面 本篇是异步编程系列的第三篇,本来计划第三篇的内容是介绍异步编程中常用的几个方法,但是前两篇写出来后,身边的朋友总是会有其他问题,所以决定再续写一篇,作为异步编程(一)和异步编程(二)的补 ...

  10. 【带着canvas去流浪】 (3)绘制饼图

    目录 一. 任务说明 二. 重点提示 三. 示例代码 四. hover高亮的实现思路 示例代码托管在:http://www.github.com/dashnowords/blogs 博客园地址:< ...