我使用wix生成了一个patch.msp文件,当我使用下面的命令通过命令行安装它时,我的应用程序的所有组件都会被更新。
通过命令行安装patch.msp文件非常完美!
msiexec.exe /p patch.msp /l*vx patch.log /qb REINSTALL=ALL REINSTALLMODE=omusa但是当用户使用Windows安装patch.msp文件时(基本上是双击文件)。它安装得很好(没有生成错误,也在已安装的更新中显示),但我的dll和.exe文件没有更新.。
那么,如何使用REINSTALL=ALL进行此安装呢?有命令可以添加到patch.wxs文件中吗?
提前感谢
编辑
<CustomAction Id="PatchInstall" Property="PATCH" Value="REINSTALL" />
<InstallExecuteSequence>
<Custom Action="PatchInstall" Before="InstallInitialize">REINSTALL="ALL"</Custom>
</InstallExecuteSequence>最新情况- 2012/09/27
建议的方法不起作用,但我的解决方案的问题是文件版本没有改变,因此安装程序会显示警告消息,提示文件没有更改。在安装修补程序时,我在日志中找到了这样的内容:
MSI (s) (48:F4) [17:32:34:025]: File: C:\Muzi_Test_Installer\ACME.dll; Won't Overwrite; Won't patch; Existing file is of an equal version因此,我将更新文件版本并重新运行测试。
最后更新,只为了确认这是一个文件版本控制问题!只需更新文件版本,MSP就可以安装得很好,没有问题。
发布于 2012-08-21 08:15:47
如果正在安装修补程序,可以尝试将REINSTALL属性设置为ALL。
因此,您需要修改您的新包,并添加一个新的自定义操作,该操作将更改以REINSTALL属性为条件的PATCH值。
编辑:您希望您的自定义操作以这样的方式工作:
if (PATCH) {
REINSTALL = "ALL";
}因此,在WiX中,它看起来是:
<CustomAction Id="PatchInstall" Property="REINSTALL" Value="ALL" />
<InstallExecuteSequence>
<Custom Action="PatchInstall" Before="InstallInitialize">PATCH</Custom>
</InstallExecuteSequence>发布于 2021-10-21 12:38:39
因为我没看到这个潜在的修复方案--
如果命令行指令具有相同的版本号,那么命令行指令成功地替换了文件,我对此感到有点惊讶。REINSTALLMODE指令“o--”应该意味着只有较低版本的文件才会重新安装。
无论如何,我认为这个问题也可以通过将MSI安装程序的REINSTALLMODE的内部设置改为“a--”来解决。“a”REINSTALLMODE属性指示应该重新安装所有文件,而不管版本或校验和。
https://stackoverflow.com/questions/12032354
复制相似问题