如果尚未在客户端计算机上安装所需的.NET Framework,我如何让我的Wix软件包下载?我已经有条件检查已安装的.NET版本,但我不确定如何在未找到时下载并安装它。
ClickOnce通过检查属性页面中的先决条件自动执行此操作。由于其他一些要求,我只需要在Wix中完成它。
谢谢!
答案 0 :(得分:37)
更新 2017年8月: 这个非常好的答案现在看来已经过时了。还请阅读“线程”中的其他答案,了解一些不同的“bootstrapper选项”。
Wix创建的MSI包无法做到这一点。 Windows Installer相当有限,不允许一个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
答案 1 :(得分:11)
Wix将包含自己的名为burn的引导程序。看看:http://robmensching.com/blog/posts/2009/7/14/Lets-talk-about-Burn
答案 2 :(得分:9)
DotNetInstaller也被许多开发人员推荐为优秀且可靠的引导程序。
更新:更新了DotNetInstaller的网址,2017年8月。
答案 3 :(得分:7)
现在支持从WiX 3.6开始。文档仍然是粗略的,但对于初学者,请查看How To: Install the .NET Framework Using Burn。
答案 4 :(得分:7)
在使用bootstrapper的wix 3.6中,你需要添加.net 4.0作为必要时下载的先决条件..
a)将文件WixNetFxExtension.dll的引用添加到Bootstrapper /托管引导程序应用程序项目中
b)将以下内容添加为链中的第一项..
<PackageGroupRef Id="NetFx40Web"/>
真的就是这样!
此处的详细信息:wixnetfxextension documentation