.NET安装软件包有时无法完全删除以前的版本

s6fujrry  于 2022-11-19  发布在  .NET
关注(0)|答案(3)|浏览(259)

我使用VS 2008安装包来分发我的应用程序,这通常很好用。当我创建新版本的应用程序时,我会进入并递增安装包上的Version属性,并验证RemovePreviousVersions属性是否设置为True。
这在大多数情况下都能正常工作-我只是运行新版本的安装包,旧版本被卸载,新版本替换它。
然而,偶尔安装包会成功运行,但当我启动程序时旧版本启动。显然旧版本的.exe仍然存在。
我最终不得不完全卸载软件,并安装新版本,这总是工作,但是一个痛苦。
据我所知,该文件没有使用,安装包也没有告诉我重新启动。
你知道这是怎么回事吗?

vohkndzv

vohkndzv1#

这不是一个直接的答案,但升级和卸载+重新安装之间的关键区别是,任何自定义卸载步骤都不会在2k 8中调用,而会在2k 5中调用。
这在Visual Studio 2005 -> 2008/10 Service Installer Project Upgrade issue中引用
与此相关的另一个区别是,在2k 8中,文件根据版本信息资源进行升级-如果您的模块没有更新的版本,它们不会被替换。
在某些情况下,您的强名称是否也有影响,但我很有信心,最后一段涵盖了您所看到的问题。

xxls0lw8

xxls0lw82#

第二种是利用逆戟鲸
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

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

u5rb5r59

u5rb5r593#

我们需要将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
重新安装模式

相关问题