如何使用.NET 2 System.Configuration.Install检测更新?

时间:2008-10-01 20:20:14

标签: .net visual-studio installer

我为我的安装程序创建了一个派生自System.Configuration.Install的类 但是当我尝试更新应用程序时,正在调用Uninstall()中的代码 如何检测用户是否尝试更新而不是卸载?

也许this post比我解释得更好:

  

我的问题归结为:什么时候   用户执行更新(即双倍   当他们点击MyAppVer2.msi时   已经安装了MyAppVer1.msi)   我的内部的卸载方法   首先调用安装程序,但我有   没有明显的财产来检查   在这个方法里面来检测一个   正在执行更新以便我   可以适当地分支我的代码。

4 个答案:

答案 0 :(得分:1)

您的安装项目中有一个设置默认情况下会“卸载”以前的版本,关闭此标志,您就不必担心了!

答案 1 :(得分:0)

盲目猜测,但我首先检查Installer.Context属性parameter。如果没有帮助,saveState参数中可能会有一些内容传递给Uninstall

最后一次机会是prompt the user,并将子安装程序设置为适当的。

答案 2 :(得分:0)

Visual Studio附带的部署项目严重不足以处理除最简单场景之外的任何事情。

在您的情况下,您需要执行以下操作之一:

  1. 找出一种在卸载原始MSI之前设置标志的方法,您可以在安装程序类中查看。
  2. 在安装程序类中以可视方式提示用户。
  3. 重新设计安装/卸载逻辑,使其不依赖于调用卸载程序的情况。

答案 3 :(得分:0)

有没有理由不能使用WIX,它可以更有效地处理这类事情,请查看升级教程,Here