2012-09-27 117 views
5

我正在嘗試使用Burn和WIX 3.6爲我的應用程序創建安裝程序。安裝程序必須能夠從Microsoft網站安裝.NET 3.5 SP1。 我正在從使用WIX 3.5創建的WIX項目中工作。如果.NET 3.5 SP1以前已安裝在目標機器上,它就可以工作。 第一步似乎是創建一個包,所以我添加了一個元素到我的Product.wxs文件中。當我這樣做時,我得到一個錯誤,說該模式無效,我必須有一個。這是否意味着我必須將所有產品定義轉換爲片段?目前還不清楚我是如何做到的。 然後事情變得更加複雜,因爲WixNetfxExtension只提供PackageRef for .NET 4.0和4.5。我沒有準備好將我的應用程序切換到該版本的框架。那麼,我如何從我的包中的Web源代碼獲取.NET 3.5 SP1?使用WIX3.6安裝.NET Framework 3.5 SP1和Burn

有沒有在任何地方做這個工作的例子?

回答

11

在你的問題中你不清楚你試圖做什麼,所以我只會從頭開始。

創建一個新的Wix burn bootstrapper項目。這是您的依賴關係將被安裝的位置,然後您的現有Wix 3.5安裝程序將從此生成。

下載.net 3.5 SP1完整軟件包並記下用於下載它的直接url。

使用heat.exe(在wix 3.6 bin dir中)運行以下命令,該命令將生成一個WXS文件,其中包含.net安裝程序的詳細信息。

heat.exe payload [path_to_net_installer] -o [path_to_wxs] 

this.will給你一個WXS如下:

<RemotePayload CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8" 
       CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1" 
       Description=".NET Framework 3.5 Setup" 
       Hash="3DCE66BAE0DD71284AC7A971BAED07030A186918" 
       ProductName=".NET Framework 3.5" 
       Size="242743296" 
       Version="3.5.30729.1" /> 

這在你的引導程序的項目添加到爲ExePackage元素的子元素,並更新與先前保存你的下載URL的元素。這會自動下載.net安裝程序,或者您可以將它放在引導程序exe旁邊,它會檢測到它。

Bundle中創建一個chain,其中包含用於安裝程序的.net ExePackage和MsiPackage。然後,您最終會喜歡的東西(很多必需的屬性我將離開你填寫!):

<Bundle Name="$(var.SkuName)" 
     Copyright="$(var.Copyright)" 
     Manufacturer="$(var.Manufacturer)" 
     Version="$(var.ProductVersion)" 
     UpgradeCode="$(var.UpgradeCode)"> 
    <Chain> 
     <ExePackage Id="dotNetFX3.5"> 
      <RemotePayload /> 
     </ExePackage> 
     <MsiPackage Id="MyMsi" /> 
    </Chain> 
    </Bundle> 

生成,然後你應該有一個大的exe與MSI列入或者你選擇不壓縮它執行您的微星的exe(它將需要在同一個文件夾中)。

+2

非常感謝!如果我需要一個以上的WIX項目,還不清楚。這些文檔不太清楚如何讓你從基礎到工作項目(並且我不想做一些特別複雜的事情,我想:使用3.5 SP1的.NET很難,我想從微軟的下載中安裝.​​NET ?)。無論如何,這是我需要的提示! –

相關問題