Wix 捆绑条件适用于 Windows 10 周年更新或更高版本

问题描述 投票:0回答:4

我正在尝试添加 .Net 4.7 作为安装过程的一部分。但是,对于 Windows 10,.Net 4.7 仅支持周年更新或更高版本。

不幸的是,在 Burn 中,没有可以用来检查 Windows Build 的内置属性。

有什么方法可以指定安装程序仅在周年更新或更晚时继续进行吗?

wix
4个回答
4
投票

您可以使用 bal:Condition 元素来阻止基于条件的捆绑包安装。您可以将其与 util:RegistrySearch 元素结合起来搜索存储当前 Windows 版本的注册表项:

<util:RegistrySearch Id="CurrentBuild" Variable="CBNumber" Result="value" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Value="CurrentBuildNumber"/>

<bal:Condition Message="Windows 10 Anniversary update or later is required.">
  CBNumber &gt; 14390
</bal:Condition>

在这里,任何晚于周年版的 Windows 10 版本(其版本号为 14393)的 CBNumber 属性将允许安装继续进行,但任何早期版本都将被阻止。您还需要在源文件顶部添加对 WiX bal 和 util 扩展的引用:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
 xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
 xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

1
投票

Win10 版本检查可以通过将

<Condition..>
耦合到 wxs 文件中
<RegistrySearch..>
标记内的
<Product..>
属性来实现。 Win10 版本 1809 检查示例:

<Property Id="WINDOWSBUILDNUMBER" Secure="yes">
  <RegistrySearch Id="BuildNumberSearch" Root="HKLM" Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion" Name="CurrentBuildNumber" Type="raw" />
</Property>
<Condition Message="This application require Windows 10 version 1809 (build 17763) or newer.">
  <![CDATA[Installed OR (WINDOWSBUILDNUMBER >= 17763)]]>
</Condition>

相关资源:

根据https://github.com/wixtoolset/issues/issues/6026Wix 中没有内置支持来简化 Win10 版本检查。


0
投票
  <Product>
    <Condition Message="Windows 10 Anniversary update or later is required.">
      WindowsBuild &lt; 14390
    </Condition>
  </Product>

0
投票

这适用于 WiX 4:

<Property Id="WINDOWSBUILDNUMBER" Secure="yes">
    <RegistrySearch
        Id="BuildNumberSearch"
        Root="HKLM"
        Key="SOFTWARE\Microsoft\Windows NT\CurrentVersion"
        Name="CurrentBuildNumber"
        Type="raw" />
</Property>
<Launch
    Message="This application require Windows 10 version 1809 (build 17763) or newer."
    Condition="WINDOWSBUILDNUMBER &gt;= 17763" />
© www.soinside.com 2019 - 2024. All rights reserved.