2013-11-20 72 views
7

我是Wix/Burn的新手,並且試圖瞭解一些基礎知識。我有一個簡單的引導程序,使用以下鏈安裝所需的.NET 4.0框架:所推薦的How To: Install the .NET Framework Using Burn使用Wix Bootstrapper安裝.NET可再發行組件(刻錄)

<Chain> 
    <PackageGroupRef Id="NetFx40ClientRedist"/> 
    <MsiPackage Id="MyApp" SourceFile="$(var.WixInstaller.TargetPath)" DisplayInternalUI="yes" /> 
</Chain> 

。 該應用程序可用於不具有Web訪問權限的服務器,因此從本地可再發行組件安裝.net很重要。引導程序似乎工作得很好,並按預期安裝框架。然而,setup.exe文件與應用程序的大小大致相同(< 5 MB),所以我必須假定該框架在安裝過程中仍在下載。

問題

  1. 那麼,什麼是在WixNetfxExtension包 「NetFx40ClientWeb」 和 「NetFx40ClientRedist」 之間的區別?

  2. 如何在boostrapper中包含本地可再發行組件,以便不需要下載?

編輯:

我相信我找到了答案here

WiXNetFxExtension將檢查名爲 「REDIST」 的子目錄,其中 你的包是包然後下載它如果它不存在於 那條路徑例如「REDIST \ dotNetFx40_Client_setup.exe」。這是標準的 刻錄行爲。

+1

你是如何得到刻錄到redist文件夾複製到安裝程序的本地機器? –

+0

我在NetFx40Redist的源代碼中爲「ExePackage」定義添加了「SourceFile」屬性,但我仍想知道如何在不破壞源代碼的情況下執行此操作。 –

回答

1

兩者之間的區別是:
1 clientWeb - 意味着你必須有網絡和.NET 4.0將被下載,之後安裝在機器上的連接。

2.clientRedist - 意味着可再發行 - 意味着一個完整的軟件包,不需要任何連接到互聯網,你可以將它安裝在任何計算機上。


如果您使用可重新分發的軟件包,您應該沒問題 - 以下是.Net 4.5的示例,它與.Net 4.0相同,只是diff是可再發行組件包。

<?xml version="1.0" encoding="utf-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension"> 
    <Bundle Name="Prog" Version="1.0.0.0" Manufacturer="my Corporation" UpgradeCode="*"> 
    <Chain> 
     <!-- TODO: Define the list of chained packages. --> 
     <PackageGroupRef Id="Netfx45FullPackage" /> 
    </Chain> 
    </Bundle> 
    <Fragment> 
    <PackageGroup Id="Netfx45FullPackage"> 
     <ExePackage Id="Netfx45Xxx" Cache="no" Compressed="no" PerMachine="yes" Permanent="yes" Vital="no" InstallCommand="/q" SourceFile="..\SetupProject\dotnetfx45_full_x86_x64.exe" DetectCondition="(Netfx4FullVersion=&quot;4.5.50709&quot;) AND (NOT VersionNT64 OR (Netfx4x64FullVersion=&quot;4.5.50709&quot;))" InstallCondition="(VersionNT &gt;= v6.0 OR VersionNT64 &gt;= v6.0) AND (NOT (Netfx4FullVersion=&quot;4.5.50709&quot; OR Netfx4x64FullVersion=&quot;4.5.50709&quot;))" /> 

     <MsiPackage Id="MyProg" Cache="no" Compressed="no" DisplayInternalUI="yes" Vital="yes" SourceFile="$(var.installerPath)\MyProgCore.msi" /> 
    </PackageGroup> 
    </Fragment> 
</Wix> 
+0

如果安裝更高版本的.Net,我們如何檢測並跳過安裝? – jero2rome

+0

DetectCondition = 「(Netfx4FullVersion = " 4.5.50709 ")和(非VersionNT64 OR(Netfx4x64FullVersion = " 4.5.50709 "))」 – Gilad

+0

是的,我正在使用這個條件。但是,在安裝4.6的系統中,刻錄會嘗試啓動安裝程序。然後,我必須從.Net安裝程序UI手動退出.Net安裝程序。 – jero2rome

相關問題