【问题标题】:Installations from Setup Projects of VS 2010从 VS 2010 的安装项目安装
【发布时间】:2012-09-05 13:43:11
【问题描述】:

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

我参考了 N 篇文章和博客,其中提到了升级代码、产品代码、安装项目的属性(如 RemovePreviousVersions、DetectNewerInstalledVersion、版本)、AssemblyInfo 文件中的 DLL 版本(AssemblyFileVersion)等......

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

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

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

希望问题清晰明了..如有任何意见,请告诉我.. 提前一百万谢谢

【问题讨论】:

  • 我用于执行上述活动的另一个选项如下: 1) 将 RemovePreviousVersion 和 DetectNewerInstalledVersion 属性设置为 TRUE。 2) 保持与已安装 MSI 相同的升级代码,但更改产品代码以及新 MSI 的版本。 3) 还要更改每个项目的 AssemblyFileVersion 值。这些设置和更改将有助于替换所有 PE 文件。此活动实际上不会卸载和安装 MSI,而只是更新所有找到的具有不同版本的 PE。因此,在这种情况下,维护是一个问题

标签: windows-installer setup-project


【解决方案1】:

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

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

【讨论】:

  • 嗨 Cosmin,感谢您对此的快速响应。您在上面指定的条件在我的情况下是可以的。我尝试创建详细日志,我将分享您提到的关键字的日志部分。
  • 对于关键字 FindRelatedProduct 以下是日志的一部分:MSI (s) (AC:3C) [16:19:25:862]:执行操作: FindRelatedProducts 操作于 16:19:25 结束:AppSearch。返回值 1. 动作开始时间 16:19:25:FindRelatedProducts。 MSI (s) (AC:3C) [16:19:25:862]:属性更改:添加 PREVIOUSVERSIONSINSTALLED 属性。其值为“{24CDE93B-713B-4636-9318-FCEB125E38D8}”。 MSI (s) (AC:3C) [16:19:25:862]:跳过动作:ERRCA_CANCELNEWEVERSION(条件为假) MSI (s) (AC:3C) [16:19:25:862]:执行动作: VSDCA​​_VsdLaunchConditions 操作于 16:19:25:FindRelatedProducts 结束。返回值 1。
  • 对于关键字 RemoveExistingProducts 我观察到两个条目:一个返回值为 1,另一个返回值为 0。它如下:_MSI (s) (AC:C4) [16:19 :29:390]:执行操作:InstallFinalize 操作于 16:19:29 结束:RemoveExistingProducts。返回值 0。 MSI (s) (AC:C4) [16:19:29:390]:属性更改:删除 UpdateStarted 属性。它的当前值为“1”。 其他部分是 属性(N): INSTALLLEVEL = 1 MSI (s) (AC:3C) [16:19:29:437]: 注意: 1: 2262 2: 错误 3: -2147287038 MSI (s) (AC:3C) [16:19:29:437]:执行操作:InstallFinalize 操作于 16:19:29 结束:RemoveExistingProducts。返回值 1。
  • 如果您能从中推断出任何事情并帮助我,请告诉我。我对这个日志感到困惑。提前谢谢你:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多