分享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. 由浅入深讲述MVVM

    相信首次听说MVVM的人,内心都是充满疑惑的!这是个嘛???能干嘛??? MVVM是Model-View-ViewModel的简写.它本质上就是MVC (Model-View- Controller) ...

  2. Java进阶篇设计模式之三 ----- 建造者模式和原型模式

    前言 在上一篇中我们学习了工厂模式,介绍了简单工厂模式.工厂方法和抽象工厂模式.本篇则介绍设计模式中属于创建型模式的建造者模式和原型模式. 建造者模式 简介 建造者模式是属于创建型模式.建造者模式使用 ...

  3. (四)surging 微服务框架使用系列之网关

    一.什么是API网关 API网关是一个服务器,是系统对外的唯一入口.API网关封装了系统内部架构,为每个客户端提供一个定制的API.API网关方式的核心要点是,所有的客户端和消费端都通过统一的网关接入 ...

  4. 玩转SpringBoot之定时任务详解

    序言 使用SpringBoot创建定时任务非常简单,目前主要有以下三种创建方式: 一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer) 前者相信大家都很熟悉, ...

  5. pytorch深度学习60分钟闪电战

    https://pytorch.org/tutorials/beginner/deep_learning_60min_blitz.html 官方推荐的一篇教程 Tensors #Construct a ...

  6. oracle学习笔记(三) DCL 数据控制语言与 DDL 数据定义语言

    DCL 数据控制语言 Data control language 之前说过的授权和收权利语句 grant, revoke DDL 数据定义语言 Data define language create ...

  7. Eclipse常用快捷键速记

    补充 15 个 Eclipse 常用开发快捷键使用技巧 1.alt+? 或 alt+/:自动补全代码或者提示代码 2.ctrl+o:快速outline视图 3.ctrl+shift+r:打开资源列表 ...

  8. vue click事件 v-on:click

    v-on:click <!DOCTYPE html> <html lang="en"> <head> <meta charset=&quo ...

  9. Web前端-CSS必备知识点

    Web前端-CSS必备知识点 css基本内容,类选择符,id选择符,伪类,伪元素,结构,继承,特殊性,层叠,元素分类,颜色,长度,url,文本,字体,边框,块级元素,浮动元素,内联元素,定位. 链接: ...

  10. wordpress 图片上传冲突

    网上常见的wordpress图片上传 jQuery('#upload_image_button').click(function() { //formfield并未用上,可能代码遗漏了一段,怀疑和类的 ...