簡體   English   中英

Wix Burn僅在安裝的.Net版本較低且不較高的情況下才安裝.Net 4.5.1

[英]Wix Burn install .Net 4.5.1 only if installed .Net version is lower and not higher

我們有.Net 4.5.1作為我們軟件套件的先決條件。 在我們編寫Burn時,我們將.net 4.5.1作為最新版本,因此我們不必檢查更高版本的安裝。 現在我們在PC中有4.6.X或更高版本的.Net版本,我們的設置總是在嘗試安裝.Net 4.5.1。 那么,如何檢查是否安裝了更高版本並跳過.Net安裝?

我們不使用網絡安裝。 安裝文件將以.exe格式提供,以供刻錄訪問。 這是當前的創作代碼。

<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx451Full" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="$(var.NetFx40EulaLink)" />

<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version"
                     Variable="Net4FullVersion" />
<util:RegistrySearch Root="HKLM" Key="SOFTWARE\Microsoft\Net Framework Setup\NDP\v4\Full" Value="Version"
                     Variable="Net4x64FullVersion" Win64="yes" />

<PackageGroup Id="Netfx451Full">
  <ExePackage Id="Net45" Name="Microsoft .NET Framework 4.5.1.exe"
              Description="Microsoft .NET Framework 4.5.1 AllOS (x86 and x64) Setup"
              Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="yes"
              InstallCommand="/norestart"
              SourceFile="$(var.PreRequisites_x86)DotNetFramework\NDP451-KB2858728-x86-x64-AllOS-ENU.exe"
              DetectCondition="(Net4FullVersion = &quot;4.5.50938&quot;) AND (NOT VersionNT64 OR (Net4x64FullVersion = &quot;4.5.50938&quot;))"
              InstallCondition="(VersionNT >= v6.1 OR VersionNT64 >= v6.1) AND (NOT (Net4FullVersion = &quot;4.5.50938&quot; OR Net4x64FullVersion = &quot;4.5.50938&quot;))" />
</PackageGroup>

您應該使用WixNetFxExtension中提供的功能: http : //wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/install_dotnet.html

還要看一下: 使用Wix Bootstrapper(Burn)安裝可再發行的.NET。

只需添加以下內容(無需任何條件):

<Chain>
    <PackageGroupRef Id="NetFx451Redist" />
    <MsiPackage SourceFile="$(var.AppInstaller.TargetPath)" />
</Chain>

您確實應該使用內置包 如果不是這樣,至少要根據其源代碼來確定條件:

<?define NetFx451MinRelease = 378675 ?>

...

<Fragment> 
  <util:RegistrySearchRef Id="NETFRAMEWORK45"/> 

  ...

  <WixVariable Id="NetFx451WebDetectCondition"
               Value="NETFRAMEWORK45 &gt;= $(var.NetFx451MinRelease)"
               Overridable="yes" />

  ...

  DetectCondition="!(wix.NetFx451WebDetectCondition)"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM