我有一个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)和一个安装程序文件。
我有两个问题:
如何让它只带入3.5版本(这样用户就不必安装100多MB的文件)?
如何告诉WiX将这些文件打包到MSI文件中,以便用户只需下载1个文件?
答案 0 :(得分:3)
我如何只携带版本 3.5(这样用户不必安装100多MB的文件)?
你提到.NET中有“4个不同版本”。实际上只有3个:DotNetFX20,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)
我认为你最好为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>
WiX团队正在开发一个新的引导程序Burn,但在它准备好用于生产之前,您可以使用其中一个(商业)解决方案构建一个自动运行“自动运行”的自解压单个可执行文件。 EXE”。
答案 3 :(得分:1)
查看dotNetInstaller http://dotnetinstaller.codeplex.com。它是一个安装引导程序,因此您可以使用它来检查和安装应用程序的依赖项。您还可以嵌入安装程序以生成单个setup.exe。以下是他们的帮助文件“分发具有所有先决条件的单个,压缩,可执行的打包设置”的摘录。