0

我正在部署一个简单的.MSI安装程序。但是,作为测试,我想把它作为先决条件Microsoft .Net Framework 4.0,所以我把这个写在我的.wixproj

  <ItemGroup>
      <BootstrapperFile Include=".NETFramework,Version=v4.0">
         <ProductName>.NET Framework 4.0</ProductName>
      </BootstrapperFile>
      <Bootstra pperFile Include="Microsoft.Windows.Installer.4.5">
         <ProductName>Windows Installer 4.5</ProductName>
      </BootstrapperFile>
  </ItemGroup>

和:

<Target Name="AfterBuild">
    <GenerateBootstrapper ApplicationFile="InstallTest" ApplicationName="Face Phi Install Test" BootstrapperItems="@(BootstrapperFile)" ComponentsLocation="Relative" CopyComponents="True" OutputPath="$(OutputPath)" Path="C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\" />
</Target>

在我的.wxs项目中,我写了这个:

<PropertyRef Id="NETFRAMEWORK40FULL"/>

这很好用,我可以.Net Framework 4.0作为先决条件,不允许安装继续进行。但是当我生成我的 时SetupProject,我可以看到两个安装程序:

在此处输入图像描述

  1. InstallTest.msi是我在我的.wxs项目中生成的。第二个,不知道出处。我怎样才能只有一个安装程序并将其连接到我的先决条件?
  2. 如何自动安装 .Net Framework,而不是取消安装?
4

1 回答 1

2

setup.exe由您的构建GenerateBootstrapper任务创建,并包含安装您按BootstrapperFile元素选择的包的逻辑。但是,这不包括您的 InstallTest.msi。

为此,您需要创建一个引导程序包,它是一个包含 msi 文件和几个 xml 文件的目录结构。看看C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages例子。您可以手动设计一个并使用构建任务将其复制到该 Packages 文件夹中。Microsoft 的非正式工具Bootstrapper Manifest Generator在设计和复制包时也有帮助,并且可以从构建任务中调用。

一旦你有了一个安装所有包的 setup.exe,你可能希望将所有文件放入一个自解压文件中,例如 WinRAR 或 WinZip。我使用了一个非常基本的 NSIS 安装程序,因为它允许我创建一个具有专业外观的自定义欢迎屏幕。

选择

升级到 WiX 3.7 并使用WiX Bootstrapper项目(又名 Burn 项目),而不是 Visual Studio 引导程序。缺点是在其系统下安装依赖项的脚本尚未广泛使用,尽管 .NET 的脚本在文档中。[请参阅主题“如何:使用 Burn 安装 .NET Framework”。] Burn 的众多优点之一是它也是一个自解压存档。

于 2013-03-30T17:43:36.980 回答