【发布时间】: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