【问题标题】:WIX Installation ConditionWIX 安装条件
【发布时间】:2016-11-11 15:11:46
【问题描述】:

我为 WIX 安装程序设置了非常具体的条件,但迄今为止的每一次尝试都失败了。

我需要检测

  • 如果 Windows 10 使用周年纪念版更新进行更新
  • 如果安装了 Office 365 版本 build 12.0.6965.2092 版本

RegistrySearch会为对应的Properties赋值,但无论是否满足实际条件都会触发Condition。

<Property Id="OFFICE365DETECT">
    <RegistrySearch Id="Office365Search" Root="HKLM" Key="SOFTWARE\Microsoft\Office\ClickToRun\Configuration" Name="ProductReleaseIds" Type="raw"/>
  </Property>
<Property Id="OFFICE365VERSIONDETECT">
  <RegistrySearch Id="Office365VersionSearch" Root="HKLM" Key="SOFTWARE\Microsoft\Office\ClickToRun\Configuration" Name="ClientVersionToReport" Type="raw" />
</Property>
<!--Windows Anniversary Edition corresponds to CurentBuildNumber 14000 and above-->
<Property Id="WINDOWSANNIVERSARYEDITIONDETECT">
  <RegistrySearch Id="WindowsAnniversarySearch" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Name="CurrentBuildNumber" Type="raw"/>
</Property>

我知道,条件检查应该看起来不同,但我找不到针对这个非常具体的案例的任何指南。

    <![CDATA[((OFFICE365DETECT = "O365ProPlusRetail" OR OFFICE365DETECT = "O365BusinessRetail" OR OFFICE365DETECT = "O365SmallBusPremRetail" ) AND OFFICE365VERSIONDETECT = "16.0.6965.2092" AND WINDOWSANNIVERSARYEDITIONDETECT = "14393")]]>

我会非常感谢任何建议、cmets 和批评家。

【问题讨论】:

    标签: windows wix office365


    【解决方案1】:

    您无需在注册表中搜索 Windows 内部版本号 - 有一个属性 WindowsBuild 可以在启动条件中使用:

    https://msdn.microsoft.com/en-us/library/windows/desktop/aa372813(v=vs.85).aspx

    文档不是最新的,但我相信周年纪念版的值是 9600。如果 W10 周年纪念是您支持的最低要求,则更正常地说您想要

    Office 搜索 - 显而易见的做法是查看注册表,我假设您已经看到该值就在那里。但是,您的搜索可能需要在 64 位注册表中(使用 Win64="yes")。您还没有说出您的架构是什么,并且它可能默认为搜索错误的架构,如 WiX 文档中所述。

    【讨论】:

    • 在 Windows 10 1909 上运行的 MSI 安装程序也将导致 WindowsBuild 9600。因此我不确定您是否可以使用此属性来确定 Win10 版本之间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-04
    • 2011-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    相关资源
    最近更新 更多