2017-05-25 116 views
1

关于如何在Wix中处理.Net 4.7的想法? 该文档只显示支持462,除非我失去了一些东西。 http://wixtoolset.org/documentation/manual/v3/customactions/wixnetfxextension.html 我发现这个:http://dblock.github.io/dotnetinstaller/但我从来没有使用它。 任何建议表示赞赏!使用Wix Installer检测.Net 4.7 3.11

Tnx!

+0

可以复制对于那些在NetFxExtension通过在其代码在这里寻找https://github.com/wixtoolset/wix3/tree/develop/src/ext/NetFxExtension/使用.NET的检查实施wixlib –

+0

您可以使用RegistrySearch和以下页面检查注册表:https://msdn.microsoft.com/en-us/library/hh925568(v=vs.110).aspx – TeaHoney

回答

1

以下片段(从4.6.2修改)应该在您的包的链中添加<PackageGroupRef Id="NetFx47Redist"/>时起作用。这要求离线安装程序(从NetFx47RedistLink下载)出现在用于捆绑编译的相对源路径.. \ Redist \ NETFX47文件夹中。您还需要在捆绑包的引用中添加NetFxExtension,并在捆绑包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> 

您还需要添加以下RegistrySearch它使用的Util延伸,将它添加到引用,并在包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" 
     />