使用WIX3.6与Burn一起安装.NET Framework 3.5 SP1

Sam*_*han 5 wix burn .net-3.5

我正在尝试使用Burn和WIX 3.6为我的应用程序制作安装程序.安装程序必须能够从Microsoft的网站安装.NET 3.5 SP1.我正在使用WIX 3.5创建的工作WIX项目.如果先前已在目标计算机上安装了.NET 3.5 SP1,则它可以正常工作.第一步似乎是创建一个bundle,所以我在Product.wxs文件中添加了一个元素.当我这样做时,我得到一个错误,说它在架构中无效,我必须有一个.这是否意味着我必须将所有产品定义转移到片段中?目前还不清楚我是怎么做到的.然后事情变得更复杂,因为WixNetfxExtension仅为.NET 4.0和4.5提供PackageRef.我还没准备好将我的应用程序切换到该版本的框架.那么如何从我的捆绑包中的Web源获取.NET 3.5 SP1?

有没有一个在任何地方这样做的工作示例?

cav*_*ick 11

在你的问题中你不清楚你在做什么,所以我将从头开始.

创建一个新的Wix刻录引导程序项目.这是安装依赖项的地方,然后将生成现有的Wix 3.5安装程序.

下载.net 3.5 SP1完整包,并记下用于下载它的直接URL.

使用heat.exe(在wix 3.6 bin目录中)运行以下命令,该命令将生成包含.net安装程序详细信息的WXS文件.

heat.exe payload [path_to_net_installer] -o [path_to_wxs]
Run Code Online (Sandbox Code Playgroud)

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" />
Run Code Online (Sandbox Code Playgroud)

将此作为ExePackage元素的子项添加到引导程序项目中,并使用先前保存的下载URL更新元素.这将自动下载.net安装程序,或者您可以将它放在bootstrapper exe旁边,它会检测到它.

Bundle中创建一个包含.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>
Run Code Online (Sandbox Code Playgroud)

构建,你应该有一个包含你的msi的大exe或如果你选择不压缩它执行你的msi的exe(它将需要在同一个文件夹中).

  • 非常感谢!如果我需要一个以上的WIX项目,那就不清楚了.关于将你从基础知识转移到工作项目的文档并不太清楚(我并没有尝试做一些特别复杂的事情,我想:使用3.5 SP1的.NET很难,我想从microsoft的下载安装.NET ?).无论如何,那是我需要的小费! (2认同)