5

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

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

4

1 回答 1

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]

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 旁边,它会检测到它。

在包含 .net ExePackage 和安装程序的 MsiPackage的Bundle中创建一个链。然后你会得到类似的东西(我会让你填写很多必需的属性!):

 <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>

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

于 2012-09-28T07:07:14.947 回答