【问题标题】:WiX: Force installer to reinstall files if previously installedWiX:如果以前安装过,则强制安装程序重新安装文件
【发布时间】:2016-09-07 22:53:47
【问题描述】:

所以我们有 MSI,它安装了一个由两个文件和一个注册表项组成的补丁。它在初始安装时工作正常,但是如果您尝试重新安装它,它不会替换它应该替换的文件。有没有办法让 WiX 强制 MSI 进入重新安装模式而不是修复模式(我认为这就是它正在进入的模式)?

编辑: 被要求澄清用例,所以这是我在下面留下的评论的副本。

所以这里的用例是客户端安装了所有软件,包括这个补丁。有些东西不起作用,所以他们卸载了所有东西,然后尝试重新安装软件。当他们这样做时,此补丁 (msi) 将不会重新安装。它会看到它已经安装,并进入修复模式。从那里它将看到文件存在,而不关心文件是否较旧,并且不会更新它们。无论补丁是否认为它当前已安装,我们都需要更新这些文件。

【问题讨论】:

  • 如果您正在制作补丁,您应该制作 .MSP 而不是 .MSI。如果您正在制作第二个 MSI 并修复原始安装的 MSI,则您的文件没有得到正确处理。 wixtoolset.org/documentation/manual/v3/patching
  • 谢谢,我会调查的。

标签: wix windows-installer


【解决方案1】:

如果您确切说出导致此问题的原因可能会有所帮助。

当您安装补丁时,文件(等等)会被替换,现在补丁是产品的一部分,而不是可以重新应用的单独事物。尝试重新申请时进入修复模式应该没问题,因为修复将基于初始产品和补丁,因此任何需要修复的文件都会被修复。您不能安装相同的补丁两次,就像您不能安装相同的 MSI 文件两次一样 - 它已经安装了!因此,我关于您所看到的问题是一个问题。它没有正确修复吗?

看到您的编辑后,补丁是 msp 文件,而不是 MSI 文件。为了卸载所有需要卸载的 MSI 产品,而不仅仅是第一个。

【讨论】:

  • 所以这里的用例是客户端安装了所有软件,包括这个补丁。有些东西不起作用,所以他们卸载了所有东西,然后尝试重新安装软件。当他们这样做时,此补丁 (msi) 将不会重新安装。它会看到它已经安装,并进入修复模式。从那里它将看到文件存在,而不关心文件是否较旧,并且不会更新它们。无论补丁是否认为它当前已安装,我们都需要更新这些文件。
  • 这听起来像是一个本地问题 - 这不是场景应该表现的方式。卸载产品包括卸载应用到它的所有补丁。然后,再次安装产品​​会再次安装不带补丁的产品,然后可以应用补丁。如果这是单个客户端并且您无法在干净的系统上重现它,我怀疑客户端没有进行干净的卸载并使用 MsiZap 之类的东西来尝试“卸载”产品,或者一些不寻常的东西。
猜你喜欢
  • 1970-01-01
  • 2020-10-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-07
  • 1970-01-01
  • 2014-08-11
相关资源
最近更新 更多