我想为产品创建Minor Upgrade,我已经定义了一个生成MSI安装程序的WIX项目。
来自Microsoft的说明指出,在次要升级中,不应更改 ProductCode ,但必须更改 ProductVersion 。
此外,我更改了应用程序的AssemblyInfo以匹配ProductVersion。 AssemblyInfo中的更改涉及AssemblyVersion和AssemblyFileVersion的更改。
在这些更改后,我生成另一个安装程序,现在我有两个安装程序:
Microsoft声明要应用次要升级,我应该看看如何应用小更新,我选择尝试Reinstalling the product:
所描述的步骤建议使用命令
msiexec / I Installer_1.0.2.msi重新安装=所有重新安装模式= vomus
检查msiexec command line reference我发现:
s:覆盖所有现有的快捷方式
这就是我需要的东西! (我想到了我自己)。
尝试了命令,结果是:
我继续为 a 更改命令参数 o ,因为强制重新安装所有文件。
同样的结果。
我的目标是能够在不必手动卸载产品的情况下更改文件(这可以通过MajorUpgrade来实现,但这意味着更改了ProductCode。)
在这个过程中我缺少什么?
更新 如果我将 ProductCode 设置为动态,它将按预期工作,但它将成为主要升级中的次要升级(根据技术库)。
答案 0 :(得分:1)
这个问题有点老了,但正确的答案是:
你做了什么,有效,如果做得好,两个要点是:
包ID应与新版本(次要升级)不同
(但)在生产环境中使用REINSTALLMODE=vemus
而不是vamus,后者是最糟糕的练习模式,如果你使用它,那么只能用于快速测试("所有文件覆盖,无论哪个版本")。
所以命令行是: msiexec / I Installer_1.0.2.msi重新安装=所有重新安装模式= vemus
这肯定有效。的"仅" (是)第一次安装后已更改的文件(通过手动编辑或随程序更改)将不会更新(为安全起见)。您将需要其他方法(查找"伴随文件")。
但所描述的虽然可行的小升级方法并不是建议用于生产环境,也许仅适用于MSI专家。
1。 至少,更新设置中所有文件的文件版本,然后你不必依赖" vemus" (或vamus),而且,你不会忽略概述,并且错误的可能性被大大降低。
2。 大多数消息来源(我同意)建议不要使用次要升级,因为主要升级工作更顺畅,特别是非专家。
如果安装性能是一个点,你甚至可以在安装模式之后使用卸载旧版本(意味着"只有",操作" RemoveExistingProducts"在最后一部分设置(请参阅MSDH帮助))。
3。 复杂性的下一步(但你必须处理)是使用补丁(.msp文件)作为非完整更新。
答案 1 :(得分:-1)
对于次要升级,您必须具有相同的 ProductCode 和 UpgradeCode 。但是您已经更改了 ProductVersion ,包GUID ,并且MSI包中的二进制文件版本(DLL和EXE文件)应该大于以前的版本