.NET安装包有时不完全删除以前的版本

我使用VS2008安装包分发我的应用程序,这通常很有用。 当我创建应用程序的新版本时,我进入并增加安装包上的Version属性并validationRemovePreviousVersions属性是否设置为True。

这在大多数情况下工作得很好 – 我只是为较新版本运行安装包,并且卸载旧版本并且更新版本替换它。

但是,偶尔安装包将成功运行,但是当我启动程序时,旧版本启动。 显然旧版本的.exe仍然存在。

我最终不得不完全卸载软件并安装新版本,它总是有效,但很痛苦。

据我所知,文件没有被使用,安装包没有告诉我重启。

关于这里发生了什么的任何想法?

不是直接的答案,但升级和卸载+重新安装之间的关键区别在于,任何自定义卸载步骤都不会在2k8中调用,而是在2k5中。

这在Visual Studio 2005 – > 2008/10服务安装程序项目升级问题中引用

与此相关的另一个区别是,在2k8中,文件会根据版本信息资源进行升级 – 如果您的模块没有更新版本,则不会被替换。

在某些情况下,你的强名是否也有效果,但我相信最后一段涵盖了你所看到的问题。

第二是使用逆戟鲸

Orca是修改msi文件的实用程序。

您可以从以下链接下载’Orca’。 http://www.softpedia.com/get/Authoring-tools/Setup-creators/Orca.shtml

脚步:

  a. Install orca into your computer. b. Open orca c. Drag and drop your msi into orca UI d. Into left panel it will list the name of tables e. select property table f. go to right panel and right click g. click on 'Add Row' h. into 'Property' type REINSTALLMODE i. into 'Value' type amus j. save msi file k. and that's it 

现在,当您安装它时将覆盖所有文件。

我们需要将msi文件的REINSTALLMODE属性设置为amus。

以下是了解更多关于’amus’含义的链接http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx

有两种方法可以做到这一点。

  1. 通过使用.NET SDK附带的msiexec.exe(如果你有VS 2005或VS 2008它将随附它,只需浏览到visual studio的命令提示符,你就会在那里找到它)

一旦找到msiexec.exe,只需键入以下命令,将安装程序的REINSTALLMODE属性设置为amus。

msiexec.exe / i foo.msi REINSTALLMODE = amus