当客户端计算机上尚未安装所需的 .NET Framework 时,如何让我的 Wix 包下载?我已经有条件检查已安装的 .NET 版本,但我不确定在找不到时如何下载和安装它。
ClickOnce 通过检查属性页面中的先决条件自动执行此操作。由于其他一些要求,我只需要在 Wix 中完成它。
谢谢!
当客户端计算机上尚未安装所需的 .NET Framework 时,如何让我的 Wix 包下载?我已经有条件检查已安装的 .NET 版本,但我不确定在找不到时如何下载和安装它。
ClickOnce 通过检查属性页面中的先决条件自动执行此操作。由于其他一些要求,我只需要在 Wix 中完成它。
谢谢!
2017 年 8 月更新:这个非常好的答案现在看起来已经过时了。另请阅读“线程”中的其他答案,了解一些不同的“引导程序选项”。
Wix 创建的 MSI 包无法做到这一点。Windows 安装程序相当有限,一个 MSI 文件(您的安装程序)不允许调用另一个 MSI 文件(.NET Framework 安装程序)。
您必须创建一个所谓的引导程序(一个 setup.exe 文件),它可以检查指定的先决条件,根据需要下载并安装它们,然后启动您的 MSI 安装程序。
创建引导程序的一种方法是使用 Visual Studio 或 MSBuild 任务 GenerateBootstrapper。这是一个提供更多详细信息的链接:
如果您只想为您的用户提供一个安装程序,您可能需要创建一个包含 setup.exe 文件和您的 MSI 包的自膨胀安装包。您可以使用 Windows 附带的iexpress来做到这一点。
这是另一个示例链接:http: //www.clariusconsulting.net/blogs/pga/comments/42831.aspx
Wix 将包含自己的引导程序,称为burn。看看:http ://robmensching.com/blog/posts/2009/7/14/Lets-talk-about-Burn
DotNetInstaller也被许多开发人员推荐为良好且可靠的引导程序。
更新:更新了 DotNetInstaller 的 URL,2017 年 8 月。
现在从 WiX 3.6 开始支持此功能。文档仍然很粗略,但对于初学者,请查看如何:使用 Burn 安装 .NET Framework。
在使用引导程序的 wix 3.6 中,您只需要添加 .net 4.0 作为先决条件,如果需要下载是..
a) 将文件 WixNetFxExtension.dll 的引用添加到您的 Bootstrapper / 托管 Bootstrapper 应用程序项目中
b)将以下内容添加为链中的第一项..
<PackageGroupRef Id="NetFx40Web"/>
真的是这样!
更多信息:wixnetfxextension 文档