为.NET部署应用程序添加个卸载程序

简介:

地球人都知道.NET自带的部署程序用起来很方便很简单,但.NET部署程序是没有卸载文件。

下面的方法可以很简单的为你的程序添加1个卸载文件,.NET是利用windows Installer来部署程序的,

所以我们也就可以用windows Installer来卸载程序。

1、先部署程序,记下程序的ProductCode 的值 
(选择解决方案资源管理器根目录如setup,再查看属性标签,不是右键中的属性)
2、建立1个新的winFrom程序
3、删除自动生成的form1。
4、添加个类,写入下面代码
  [STAThread]
  static void Main() 
  {
   if(System.Environment.OSVersion.ToString().IndexOf("NT 5") >= 0)
   {
    Process.Start("msiexec","/uninstall {BDA4996C-6895-4F4C-839C-9AFE22FB8545}");
    //BDA4996C-6895-4F4C-839C-9AFE22FB8545就是第1部的ProductCode
   }
   Application.Exit();
  }
5、再把这个新的卸载程序添加到你的安装包里就行了。

---------------------------
下面是Windows (R) Installer. V 3.0的命令差数(供参考):
msiexec /Option <Required Parameter> [Optional Parameter]

安装选项
 </package | /i> <Product.msi>
  安装或配置产品
 /a <Product.msi>
  管理安装 - 在网络上安装产品
 /j<u|m> <Product.msi> [/t <Transform List>] [/g <Language ID>]
  播发产品 - m 播发到所有用户,u 播发到当前用户
 </uninstall | /x> <Product.msi | ProductCode>
  卸载产品
显示选项
 /quiet
  安静模式,无用户交互
 /passive
  无从参与模式 - 只显示进程栏
 /q[n|b|r|f]
  设置用户界面级别
  n - 无用户界面
  b - 基本界面
  r - 精简界面
  f - 完整界面(默认值)
 /help
  帮助信息
重新启动选项
 /norestart
  安装完成后不重新启动
 /promptrestart
  提示用户重新启动(如果必要)
 /forcerestart
  安装后总是重新启动计算机
日志选项
 /l[i|w|e|a|r|u|c|m|o|p|v|x|+|!|*] <LogFile>
  i - 状态消息
  w - 非致命警告
  e - 全部错误消息
  a - 操作的启动
  r - 操作特定记录
  u - 用户请求
  c - 初始界面参数
  m - 内存不足或致命退出信息
  o - 磁盘空间不足消息
  p - 终端属性
  v - 详细输出
  x - 额外调试信息
  + - 扩展到现有日志文件
  ! - 每一行刷新到日志
  * - 记录所有信息,除了 v 和 x 选项
 /log <LogFile>
  与 /l* <LogFile> 相同
更新选项
 /update <Update1.msp>[;Update2.msp]
  应用更新
 /uninstall <PatchCodeGuid>[;Update2.msp] /package <Product.msi | ProductCode>
  删除产品的更新
修复选项
 /f[p|e|c|m|s|o|d|a|u|v] <Product.msi | ProductCode>
  修复产品
  p - 仅当文件丢失时
  o - 如果文件丢失或安装了更旧的版本(默认值)
  e - 如果文件丢失或安装了相同或更旧的版本
  d - 如果文件丢失或安装了不同版本
  c - 如果文件丢失或较验和与计算的值不匹配
  a - 强制重新安装所有文件
  u - 所有必要的用户特定注册表项(默认值)
  m - 所有必要的计算机特定注册表项(默认值)
  s - 所有现有的快键方式(默认值)
  v - 从源运行并缓存本地数据包
设置公共属性
 [PROPERTY=PropertyValue]












本文转自BearRui(AK-47)博客园博客,原文链接: http://www.cnblogs.com/BearsTaR/archive/2006/04/03/365348.html   ,如需转载请自行联系原作者


相关文章
|
21天前
|
SQL XML 关系型数据库
入门指南:利用NHibernate简化.NET应用程序的数据访问
【10月更文挑战第13天】NHibernate是一个面向.NET的开源对象关系映射(ORM)工具,它提供了从数据库表到应用程序中的对象之间的映射。通过使用NHibernate,开发者可以专注于业务逻辑和领域模型的设计,而无需直接编写复杂的SQL语句来处理数据持久化问题。NHibernate支持多种数据库,并且具有高度的灵活性和可扩展性。
37 2
|
21天前
|
监控 网络安全 调度
Quartz.Net整合NetCore3.1,部署到IIS服务器上后台定时Job不被调度的解决方案
解决Quartz.NET在.NET Core 3.1应用中部署到IIS服务器上不被调度的问题,通常需要综合考虑应用配置、IIS设置、日志分析等多个方面。采用上述策略,结合细致的测试和监控,可以有效地提高定时任务的稳定性和可靠性。在实施任何更改后,务必进行充分的测试,以验证问题是否得到解决,并监控生产环境的表现,确保长期稳定性。
34 1
|
30天前
|
开发框架 .NET API
Windows Forms应用程序中集成一个ASP.NET API服务
Windows Forms应用程序中集成一个ASP.NET API服务
83 9
|
1月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
46 0
|
1月前
|
监控 安全 API
Docker + .NET API:简化部署和扩展
Docker + .NET API:简化部署和扩展
35 0
|
2月前
|
Ubuntu 持续交付 API
如何使用 dotnet pack 打包 .NET 跨平台程序集?
`dotnet pack` 是 .NET Core 的 NuGet 包打包工具,用于将代码打包成 NuGet 包。通过命令 `dotnet pack` 可生成 `.nupkg` 文件。使用 `--include-symbols` 和 `--include-source` 选项可分别创建包含调试符号和源文件的包。默认情况下,`dotnet pack` 会先构建项目,可通过 `--no-build` 跳过构建。此外,还可以使用 `--output` 指定输出目录、`-c` 设置配置等。示例展示了创建类库项目并打包的过程。更多详情及命令选项,请参考官方文档。
172 11
|
1月前
|
监控 安全 API
最完美的扩展Docker + .NET API:简化部署和扩展
最完美的扩展Docker + .NET API:简化部署和扩展
56 0
|
2月前
|
存储 运维
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
.NET开发必备技巧:使用Visual Studio分析.NET Dump,快速查找程序内存泄漏问题!
|
2月前
|
SQL 关系型数据库 数据库
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
七天.NET 8操作SQLite入门到实战详细教程(选型、开发、发布、部署)
|
2月前
|
自然语言处理 C# 图形学
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试
使用dnSpyEx对.NET Core程序集进行反编译、编辑和调试