WiX:.Net 3.5先决条件

时间:2010-03-29 22:10:36

标签: .net msbuild installer wix windows-installer

我有一个WiX安装程序,我想检查.Net 3.5,如果它不存在则安装它。我的wixproj文件中有以下几行:

<BootstrapperFile Include="Microsoft.Net.Framework.3.5">
    <ProductName>.NET Framework 3.5</ProductName>
</BootstrapperFile>
<BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
    <ProductName>WIndows Installer 3.1</ProductName>
</BootstrapperFile>

当我创建安装程序时,会创建一个DotNetFX35文件夹,其中包含4个不同版本的.Net(包括3.5)和一个安装程序文件。

我有两个问题:

  1. 如何让它只带入3.5版本(这样用户就不必安装100多MB的文件)?

  2. 如何告诉WiX将这些文件打包到MSI文件中,以便用户只需下载1个文件?

4 个答案:

答案 0 :(得分:3)

  

我如何只携带版本   3.5(这样用户不必安装100多MB的文件)?

你提到.NET中有“4个不同版本”。实际上只有3个:Dot​​NetFX20,DotNetFX30和DotNetFX35以及一些Windows更新。原因是.NET 3.5和.NET 3.0实际上主要是在.NET 2.0框架库和运行时之上的附加版本。

换句话说,.NET 3.0和.NET 2.0都是.NET 3.5的先决条件。如果您的应用程序以.NET 3.5为目标,则需要所有这些文件。

但是,某些应用程序只需要名为.NET 3.5 client profile的.NET 3.5子集。您可以通过选中visual studio项目的构建选项中的“仅客户端框架”复选框来尝试此操作。

如果您的应用程序仍然可以使用客户端配置文件构建并运行正常,则可以将“Microsoft.Net.Framework.3.5”更改为“Microsoft.Net.Client.3.5”。这只有28MB。

  

如何告诉WiX打包这些   文件到MSI文件,所以   用户只需要下载1个文件吗?

在启动MSI之前需要先安装的先决条件,因此它们不能成为MSI的一部分。但是,您可以执行相反的操作:将先决条件和MSI打包在自解压存档中,例如:与WinZip Self-Extractor。自解压存档可以调用解压缩的setup.exe。

答案 1 :(得分:1)

回答问题的第2部分:

引导程序的想法是提供一个没有太多(如果有)依赖项的.exe。这可以确保您还可以引导Windows Installer之类的东西。因此,引导程序是包含或下载所需文件的.exe。

这也可以确保当您已经安装了某些组件时,它不会再次下载。由于这个原因,您无法将所有内容打包在一个msi中,并且因为这意味着当有针对.NET的安全修复程序时,必须对其进行修补。使用自己的安装程序安装.NET时,Microsoft可以向其发布补丁

答案 2 :(得分:1)

  1. 我认为你最好为bootstrapper创建一个单独的项目。如果Web安装足够,则以下项目模板应该可以工作:

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="3.5">
    <ItemGroup>
        <BootstrapperFile Include="Microsoft.Windows.Installer.3.1">
            <ProductName>Windows Installer 3.1</ProductName>
        </BootstrapperFile>
        <BootstrapperFile Include="Microsoft.Net.Framework.3.5.SP1">
            <ProductName>.NET Framework 3.5 SP1</ProductName>
        </BootstrapperFile>
    </ItemGroup>
    <Target Name="Bootstrapper">
        <GenerateBootstrapper
            ApplicationFile="MyProject.msi"
            ApplicationName="MyProject"
            BootstrapperItems="@(BootstrapperFile)"
            OutputPath="$(OutputPath)"
            Culture="en-US"
            CopyComponents="true"
            ComponentsLocation="HomeSite"
            Path="$(BootstrapperPath)" />
    </Target></Project>
    
  2. WiX团队正在开发一个新的引导程序Burn,但在它准备好用于生产之前,您可以使用其中一个(商业)解决方案构建一个自动运行“自动运行”的自解压单个可执行文件。 EXE”。

答案 3 :(得分:1)

查看dotNetInstaller http://dotnetinstaller.codeplex.com。它是一个安装引导程序,因此您可以使用它来检查和安装应用程序的依赖项。您还可以嵌入安装程序以生成单个setup.exe。以下是他们的帮助文件“分发具有所有先决条件的单个,压缩,可执行的打包设置”的摘录。