【问题标题】:How to make an MSI Minor Upgrade and How to apply it?如何进行 MSI 次要升级以及如何应用?
【发布时间】:2016-11-07 20:44:28
【问题描述】:

我想为产品创建一个Minor Upgrade,我已经定义了一个生成 MSI 安装程序的 WIX 项目。

来自Microsoft 的指示指出,在小升级中,ProductCode 不应更改,但 ProductVersion 必须更改。

此外,我更改了我的应用程序的 AssemblyInfo 以匹配 ProductVersion。 AssemblyInfo 的变化涉及 AssemblyVersion 和 AssemblyFileVersion 的变化。

在这些更改之后,我生成了另一个安装程序,现在我有两个安装程序:

  • Installer_1.0.1.msi (A)
  • Installer_1.0.2.msi (B)

我安装了 A(双击)然后继续安装 B(双击),但我得到了这个:

微软表示要应用小升级,我应该看看如何应用小更新,我选择尝试Reinstalling the product

所描述的步骤建议使用该命令
msiexec /I Installer_1.0.2.msi REINSTALL=ALL REINSTALLMODE=vomus

查看msiexec command line reference我发现:

  • v:从源代码运行并重新缓存本地包

  • o:如果文件丢失或安装了旧版本,则重新安装

  • m:重写所有必需的特定于计算机的注册表项

  • u:重写所有必需的用户特定注册表项

  • s:覆盖所有现有的快捷方式

    这就是我需要的!!! (我自己想)。

试了命令,结果是:

  • 没有文件被更改
  • 控制面板/程序中的版本已更改
  • 安装程序缓存更改,我无法从控制面板/程序/卸载中卸载产品

我继续更改 a 的命令参数 o,因为它强制重新安装所有文件

同样的结果。

我的目标是能够更改文件而无需手动卸载产品(这可以通过MajorUpgrade 实现,但这意味着更改产品代码)。

我在这个过程中遗漏了什么?

更新: 如果我将 ProductCode 设置为动态的,它会按预期工作,但它将成为主要升级中的次要升级(根据技术库)。

【问题讨论】:

    标签: c# wix windows-installer


    【解决方案1】:

    问题有点老了,但正确答案是:

    你做了什么,工作,如果做得对,两个要点是:

    • Package Id 应该与新版本不同(小升级)

    • (但是)在生产环境中使用REINSTALLMODE=vemus而不是vamus,后者是最糟糕的实践模式,如果你使用它,那么仅用于快速测试(“所有文件覆盖,无论哪个版本”)。

    所以命令行是: msiexec /I Installer_1.0.2.msi REINSTALL=ALL REINSTALLMODE=vemus

    这肯定有效。 “仅”(是)在首次安装后更改过的文件(通过手动编辑或使用程序更改)不会更新(出于安全考虑)。为此,您将需要其他方法(查找“伴随文件”)。

    但所描述的小升级方法虽然可行,但并不推荐用于生产环境,可能仅适用于 MSI 专家。

    1。 至少,更新设置中所有文件的文件版本,那么您就不必依赖“vemus”(或 vamus),而且,您不会失去概览,并且错误的可能性被高度最小化。

    2。 大多数消息来源都建议(我同意)不要使用次要升级,因为主要升级工作更顺畅,尤其是对于非专家。

    如果安装性能很重要,您甚至可以在安装模式后使用卸载旧版本(意味着“仅”,操作“RemoveExistingProducts”位于设置的最后部分(请参阅 MSDH 帮助))。

    3。 复杂性的下一步(但您必须处理)是使用补丁(.msp 文件)作为非完整更新。

    【讨论】:

      【解决方案2】:

      对于次要升级,您必须具有相同的 ProductCodeUpgradeCode。但是您已经更改了 ProductVersionPackage GUID 并且 MSI 包中的二进制文件(DLL 和 EXE 文件)的版本应该高于以前的版本

      【讨论】:

      • 你说的是我做的,我也在我的问题中解释了
      • 检查您是否更改了msi安装程序的包代码检查此链接-link
      • 包ID(是否与包代码相同??)设置为“*”,因此每次构建时都会更改。
      猜你喜欢
      • 2015-04-12
      • 1970-01-01
      • 2022-08-18
      • 2013-11-01
      • 1970-01-01
      • 2010-11-16
      • 2014-04-05
      • 1970-01-01
      • 2013-03-12
      相关资源
      最近更新 更多