【问题标题】:Wix Installer detecting SELFFOUND when should be PREVIOUSFOUNDWix 安装程序检测 SELFFOUND 什么时候应该是 PREVIOUSFOUND
【发布时间】:2020-01-13 16:36:04
【问题描述】:

我有一个奇怪的问题,WiX 安装程序似乎检测到 SELFFOUND 而不是 PREVIOUSFOUND。

我正在将旧的 InstallAware 项目移至 WiX,因此我已将 UpgradeCode 从项目复制到此 Product.wxs

    <Upgrade Id='MyGuid'>
  <UpgradeVersion OnlyDetect='yes' Property='SELFFOUND' Minimum='!(bind.FileVersion.MainEXE)' IncludeMinimum='yes' Maximum='!(bind.FileVersion.MainEXE)' IncludeMaximum='yes' />
  <UpgradeVersion OnlyDetect='yes' Property='NEWERFOUND' Minimum='!(bind.FileVersion.MainEXE)' IncludeMinimum='no' />
  <UpgradeVersion Minimum="1.0.0"
          IncludeMinimum="yes"
          OnlyDetect="no"
          Maximum="!(bind.FileVersion.MainEXE)"
          IncludeMaximum="no"
          Property="PREVIOUSFOUND" />
</Upgrade>

<CustomAction Id='AlreadyUpdated' Error='[ProductName] is already installed.' />
<CustomAction Id='NoDowngrade' Error='A later version of [ProductName] is already installed.' />

<InstallExecuteSequence>
  <RemoveExistingProducts After="InstallInitialize"/>
  <Custom Action='AlreadyUpdated' After='FindRelatedProducts'>SELFFOUND</Custom>
  <Custom Action='NoDowngrade' After='FindRelatedProducts'>NEWERFOUND</Custom>
</InstallExecuteSequence>

并且升级 GUID 与我的 UpgradeCode 属性的产品标签中的匹配。两个版本之间的产品代码不同,但我认为将它们设为相同并不是一个好主意。

旧的 InstallAware 项目安装的版本是 4.11.7311.0,在控制面板中可以看到这个版本。我尝试通过升级安装并删除旧版本的版本是 4.11.7314.0。

由于某种原因,每当我尝试运行新的 WiX .msi 时,它都会抛出 [ProductName] 已安装消息。

我错过了什么吗?因为在我看来一切都是正确的。提前致谢。 Wix 工具集 v3.11。

【问题讨论】:

  • Have a look here please。您可以在编译后在生成的 MSI 中使用升级表中的屏幕截图进行更新吗?从外观上看,您需要取出指向 SELFFOUND 的 UpgradeVersion 元素。
  • 谢谢您,这不是我在搜索时发现的问题。我会检查一下并相应地更新我的问题。

标签: wix


【解决方案1】:

好的,所以我发现了问题,实际上有多个。

首先我通过命令提示符运行安装程序以生成日志文件。

msiexec /i "C:\Path\To\Installer.msi" /L*V "C:\ProgramData\Install.log"

然后我在这个文件中搜索了

查找相关产品

它找到了一个设置 SELFFOUND 属性的应用程序,现在我在注册表中搜索了 GUID,发现它是我测试中的旧应用程序,所以我卸载了它使用

msiexec /x {FoundGuid}

此时问题仍然存在,因此重复该过程并发现一条消息说

FindRelatedProducts:当前安装是每台机器。产品“{MyGUID}”的相关安装是按用户进行的。跳过...

所以我所要做的就是将我的 InstallScope 从 perMachine 更改为 perUser 并且它可以正确检测到。

【讨论】:

  • 我忘记添加此list of common major upgrade problems 的链接。如果您在此运行了 dark.exe 以将 InstallAware MSI 反编译为 WiX 标记,则可能有许多应该消除的结构。我会在虚拟机上进行测试,重点是升级场景。
  • 谢谢,会读一读。我的 MSI 现在的行为符合我的预期,但是当放置在引导程序中时它不会,但我相信这应该是一个单独的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多