1

我试图在安装较新的 MSI 期间自动卸载现有版本的 MSI。

我参考了 N 篇文章和博客,它们涉及升级代码、产品代码、安装项目的属性(如 RemovePreviousVersions、DetectNewerInstalledVersion、版本)、来自 AssemblyInfo 文件的 DLL 版本(AssemblyFileVersion)等......

使用这些信息,我有一个解决方案来完成上述任务。但是,在这种情况下,维护是这种方法的一个问题。

我从 Visual Studio 中观察到的另一项操作执行相同的任务。这完全执行了我需要的活动,并且我已经将问题框定如下。请对此查询有所了解...

"通过右键单击 VS 2010 中的安装项目来执行“安装”操作,卸载旧版本的产品(无论 RemovePreviousVersions 属性的值如何),然后继续安装最新版本。当 MSI 为用于安装(尽管 RemovePreviousVersions 属性设置为 TRUE)。只是想知道在以前的安装过程中触发了哪些操作或命令,以便可以使用代码以某种方式应用相同的操作或命令

希望这个问题是明确和直接的..让我知道任何输入..提前一百万

4

1 回答 1

1

“安装”操作使用Windows Installer API在启动当前安装程序之前手动卸载旧版本。您不需要复制它,因为 Windows Installer 支持主要升级。如果自动升级对您不起作用,则某处存在错误。

使用Orca检查两个 MSI 包,看看它们是否具有相同的 UpgradeCode。此外,ALLUSERS 属性应该在它们中具有相同的值。最后,尝试创建详细日志并搜索FindRelatedProductRemoveExistingProducts操作以查看旧版本会发生什么。

于 2012-09-06T07:19:25.727 回答