首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WiX:默认情况下如何在REINSTALL=ALL中安装已创建的修补程序?

WiX:默认情况下如何在REINSTALL=ALL中安装已创建的修补程序?
EN

Stack Overflow用户
提问于 2012-08-20 04:41:51
回答 2查看 2.9K关注 0票数 1

我使用wix生成了一个patch.msp文件,当我使用下面的命令通过命令行安装它时,我的应用程序的所有组件都会被更新。

通过命令行安装patch.msp文件非常完美!

代码语言:javascript
复制
msiexec.exe /p patch.msp /l*vx patch.log /qb REINSTALL=ALL REINSTALLMODE=omusa

但是当用户使用Windows安装patch.msp文件时(基本上是双击文件)。它安装得很好(没有生成错误,也在已安装的更新中显示),但我的dll和.exe文件没有更新.

那么,如何使用REINSTALL=ALL进行此安装呢?有命令可以添加到patch.wxs文件中吗?

提前感谢

编辑

代码语言:javascript
复制
<CustomAction Id="PatchInstall" Property="PATCH" Value="REINSTALL" />
<InstallExecuteSequence>
  <Custom Action="PatchInstall" Before="InstallInitialize">REINSTALL="ALL"</Custom>
</InstallExecuteSequence>

最新情况- 2012/09/27

建议的方法不起作用,但我的解决方案的问题是文件版本没有改变,因此安装程序会显示警告消息,提示文件没有更改。在安装修补程序时,我在日志中找到了这样的内容:

代码语言:javascript
复制
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就可以安装得很好,没有问题。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-21 08:15:47

如果正在安装修补程序,可以尝试将REINSTALL属性设置为ALL

因此,您需要修改您的新包,并添加一个新的自定义操作,该操作将更改以REINSTALL属性为条件的PATCH值。

编辑:您希望您的自定义操作以这样的方式工作:

代码语言:javascript
复制
if (PATCH) {
    REINSTALL = "ALL";
}

因此,在WiX中,它看起来是:

代码语言:javascript
复制
<CustomAction Id="PatchInstall" Property="REINSTALL" Value="ALL" />
<InstallExecuteSequence>
    <Custom Action="PatchInstall" Before="InstallInitialize">PATCH</Custom>
</InstallExecuteSequence>
票数 2
EN

Stack Overflow用户

发布于 2021-10-21 12:38:39

因为我没看到这个潜在的修复方案--

如果命令行指令具有相同的版本号,那么命令行指令成功地替换了文件,我对此感到有点惊讶。REINSTALLMODE指令“o--”应该意味着只有较低版本的文件才会重新安装。

无论如何,我认为这个问题也可以通过将MSI安装程序的REINSTALLMODE的内部设置改为“a--”来解决。“a”REINSTALLMODE属性指示应该重新安装所有文件,而不管版本或校验和。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12032354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档