完整的WiX示例*.wxs,用于下载和安装特定版本的.NET Framework(如果不可用)

8

关于如何下载和安装.NET Framework,互联网上有许多不完整的问题和答案,但似乎没有完整的代码可用。

你能提供一个最小的可编译代码或一个生成setup.exe / MSI的清晰示例的链接吗?我认为RTFM并不适用于这个问题,因为MSI和引导安装程序有许多特殊性,不容易推断出来。


3
没有附带评论的踩并不是真正有帮助的。 - sw.
设置开发就是开发。让别人替你工作是不好的行为。如果你想让它变得容易,使用 InstallShield。只需点击复选框,选择“从网络下载”,然后选择“.NET X”。如果它能正常工作,那太好了。如果不能,同样的复杂性仍然存在于内部。 - Christopher Painter
4
只有在某人是潜水者时,我才同意你的观点。虽然设置部署是开发方面的工作,但在社区分享方面却处于底层。你的解决方案并不是我所要求的。我正在寻找与 WiX 上下文相关的解决方案。在 Visual Studio 项目中做这件事是微不足道的。如果我没有得到任何答复,我会花时间自己解决,并与大家分享。 - sw.
我已经在我的博客上分享了12年。我还创建了一个名为ISWIX的开源项目。 :) WiX CHM中有一个帮助主题,解释了如何使用Burn安装.NET框架。它有一个指向NetFx扩展的链接,但链接已经失效。不过很容易修复URL并使其正确。 - Christopher Painter
@Cristopher,我从你的社区贡献中了解到你。在这种情况下,我遇到了缺失的链接,跳转到论坛,最终在这里发布了我的问题。 - sw.
1个回答

8

请注意,这些信息在手册中完整可用。以下是一些示例:

如何使用Burn安装.NET Framework

如何检查.NET Framework版本

WixNetfxExtension

话虽如此

使用WiX,您无法生成MSI以安装.NET [X]。但是,您可以使用它来生成引导安装程序可执行文件。

幸运的是,在WiX Bundle项目中轻松包含.NET安装程序。只需在Bundle项目中包含对 WixNetFxExtension.dll (应位于“[Wix安装位置]\bin”)的引用,然后在<Chain>中包含以下内容:

<PackageGroupRef id="[.Net package]" />

其中 [.Net package] 是:

  • NetFx40Web
  • NetFx40Redist
  • NetFx40ClientWeb
  • NetFx40ClientRedist
  • NetFx45Web
  • NetFx45Redist

例如,包含 .Net 4.5 Web 安装程序的捆绑包:

<Bundle Name="E.G." Version="1.0.0.0" Manufacturer="Me" UpgradeCode="[Guid]">
    <BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense"/>
    <Chain>
        <PackageGroupRef Id="NetFx45Web" />
        <MsiPackage SourceFile="$(var.ExampleInstaller.TargetPath)" />
    </Chain>
</Bundle>

如果你使用Redist软件包,你可以使用-layout来运行已编译的安装程序,以下载文件,这样它们就可以刻录到CD/DVD中(使用标准启动程序,自定义启动程序可能有类似功能)。

这个解决方案是否适用于在Windows 8上启用.NET Framework 3.5,而不是从Web下载它?有没有相应的软件包名称或WiX支持此情况?谢谢。 - sw.
1
据我所了解,不行。如果已经安装了 .Net 3.5 但未启用,我认为没有简单的方法可以从 WiX 启用它。你可以找到相应的注册表设置并进行更改,但这可能会变得有点混乱。关于 安装 .Net 3.5,请参见此问题 - XNargaHuntress
你能告诉我如何使用“-layout”参数吗?我已经根据您的指示进行了搜索,但找不到任何文档或示例。 - Chris Schiffhauer
@PaulyGlott,我找到的关于它的信息不多。这篇博客文章这个问题可能会有所帮助。 - XNargaHuntress

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接