使用Wix Installer 3.11检测.Net 4.7

4

您可以通过查看此处的代码 https://github.com/wixtoolset/wix3/tree/develop/src/ext/NetFxExtension/wixlib,复制用于检查 NetFxExtension 中使用的 .net 的实现。 - Brian Sutherland
您可以使用RegistrySearch和以下页面来检查注册表:https://msdn.microsoft.com/zh-cn/library/hh925568(v=vs.110).aspx - TeaHoney
1个回答

4
以下代码片段(修改自4.6.2)应该可以在您的捆绑包链中添加<PackageGroupRef Id="NetFx47Redist"/>后正常工作。这需要离线安装程序(从NetFx47RedistLink下载)存在于相对源路径..\Redist\NETFX47文件夹中进行捆绑编译。您还需要在捆绑的引用中添加NetFxExtension,并在bundle wxs中添加`xmlns:netfx='http://schemas.microsoft.com/wix/NetFxExtension'。
<Fragment>
    <?define NetFx47MinRelease = 460798 ?>
    <?define NetFx47WebLink = http://download.microsoft.com/download/A/E/A/AEAE0F3F-96E9-4711-AADA-5E35EF902306/NDP47-KB3186500-Web.exe ?>
    <?define NetFx47RedistLink = http://download.microsoft.com/download/D/D/3/DD35CC25-6E9C-484B-A746-C5BE0C923290/NDP47-KB3186497-x86-x64-AllOS-ENU.exe ?>
    <?define NetFx47EulaLink = http://referencesource.microsoft.com/license.html ?>

    <WixVariable Id="WixMbaPrereqPackageId" Value="NetFx47Redist" />
    <WixVariable Id="WixMbaPrereqLicenseUrl" Value="$(var.NetFx47EulaLink)" Overridable="yes" />
    <WixVariable Id="NetFx47RedistDetectCondition" Value="NETFRAMEWORK45 &gt;= $(var.NetFx47MinRelease)" Overridable="yes" />
    <WixVariable Id="NetFx47RedistInstallCondition" Value="" Overridable="yes" />
    <WixVariable Id="NetFx47RedistPackageDirectory" Value="Redist\NETFX47\" Overridable="yes" />

    <PackageGroup Id="NetFx47Redist">
        <ExePackage
            DisplayName="Microsoft .NET Framework 4.7"
            InstallCommand="/q /norestart /ChainingPackage &quot;[WixBundleName]&quot; /log &quot;[NetFx47FullLog].html&quot;"
            RepairCommand="/q /norestart /repair /ChainingPackage &quot;[WixBundleName]&quot; /log &quot;[NetFx47FullLog].html&quot;"
            UninstallCommand="/uninstall /q /norestart /ChainingPackage &quot;[WixBundleName]&quot; /log &quot;[NetFx47FullLog].html&quot;"
            PerMachine="yes"
            DetectCondition="!(wix.NetFx47RedistDetectCondition)"
            InstallCondition="!(wix.NetFx47RedistInstallCondition)"
            Id="NetFx47Redist"
            Vital="yes"
            Permanent="yes"
            Protocol="netfx4"
            DownloadUrl="$(var.NetFx47RedistLink)"
            LogPathVariable="NetFx47FullLog"
            Compressed="no"
            SourceFile="..\Redist\NETFX47\NDP47-KB3186497-x86-x64-AllOS-ENU.exe"
            Name="!(wix.NetFx47RedistPackageDirectory)NDP47-KB3186497-x86-x64-AllOS-ENU.exe"
        >
        </ExePackage>
    </PackageGroup>
</Fragment>

你还需要添加以下使用Util扩展的RegistrySearch,将其添加到引用中,并在bundle中添加xmlns:util='http://schemas.microsoft.com/wix/UtilExtension'
        <util:RegistrySearch
            Id="NETFRAMEWORK45"
            Variable="NETFRAMEWORK45"
            Root="HKLM"
            Key="SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full"
            Value="Release"
            Result="value"
        />

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接