2012-09-27 121 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 ?)。无论如何,这是我需要的提示! –

相关问题