【发布时间】:2021-05-24 21:06:30
【问题描述】:
我将尝试通过示例来解释这个问题。我有mypackage-v1.0.msi 和mypackage-v1.1.msi。静默安装时的两个软件包都需要 PASSWORD 参数:
msiexec /i mypackage-v1.0.msi /qb PASSWORD=SomeThing1
mypackage-v1.0.msi 已经安装,mypackage-v1.1.msi 应该升级 mypackage-v1.0.msi。两个包中都有一个依赖于此参数的自定义操作,但由于在 mypackage-v1.0.msi 中调节此自定义操作的问题,在升级过程中会执行它,但不会将 PASSWORD 参数传递给它。
我想知道在升级到 mypackage-v1.1.msi 之前是否有办法修补 mypackage-v1.0.msi。但是补丁并没有改变安装的任何内容,而是包本身。有可能吗?
【问题讨论】:
-
软件包包含导致升级问题的错误并不少见。 Here are some approaches for dealing with installed packages that cause upgrade or uninstall problems。一种选择是使用小升级。这些minor upgrades have many limiations,但它们允许您“就地”升级产品,而不是卸载和重新安装(这是主要升级所做的并在此过程中引发问题)。
-
谢谢,我会调查的。
-
这些方法适用于无法卸载的包,但使用小升级通常可以修复已安装包的卸载顺序中的任何错误,这些错误在卸载或升级时出现并导致进程失败。实际上,次要升级会在调用或调用卸载序列之前“修复”卸载序列。在the list 中,只有方法 2 与您相关。
-
我编辑了这个问题,并添加了更多关于我想要实现的目标的问题。
-
是的,您几乎可以更改已安装包中的任何内容。目前我能找到的最简单的小升级示例可能是this one。打开
CreatePatch.cmd并更新 WiX 二进制文件的路径(此时可能以 v3.11 结束)。请记住,小升级有many limitations。保持简单,只更改解决问题所需的内容。
标签: wix windows-installer