WiX 在具有 .NET 3.5 的机器上安装 .NET 4.5,但不在具有 .NET 4.0 的机器上
Posted
技术标签:
【中文标题】WiX 在具有 .NET 3.5 的机器上安装 .NET 4.5,但不在具有 .NET 4.0 的机器上【英文标题】:WiX installs .NET 4.5 on a machine with .NET 3.5, but not on a machine with .NET 4.0 【发布时间】:2014-04-22 14:17:26 【问题描述】:我创建了一个 WiX 安装程序,如果它丢失了,我想安装它。
为此,我已将<PackageGroupRef Id="NetFx45Web" />
添加到我的链中。
我遇到的奇怪问题是,在 .Net 3.5 (Windows Vista) 的机器上,一切正常,WiX 可以正确安装 .NET 4.5,但在 .NET 4.0 (Windows 7) 的机器上,什么也没有发生,并且安装程序只是执行我的应用程序而不先安装 .NET 4.5,然后由于它需要 .NET 4.5 而崩溃
我有什么遗漏或者这是一个错误吗?
【问题讨论】:
发布日志中的内容可能会有所帮助。您应该可以在 C:\Users\username\AppData\Local\Temp\ 中找到它 .net 4.5 建立在 4.0 之上...这意味着如果没有正确检查,4.0“看起来像”4.5。 WIX 如何检查是否安装了 4.5 或 4.0? 您使用的是哪个版本的 WiX?对于来自wix.codeplex.com/SourceControl/latest 的分支 wix38、wix39 或 wix40,NetFx4.5.wxs 中的最新代码似乎没有任何问题。您是否有任何其他类型的条件试图检测 .Net? 我刚刚回忆起我们在安装了 .Net 4.0 客户端配置文件的机器上安装 .Net 4.0 时遇到了类似的问题。我认为使用最新更新更新的 Windows 7 只会安装 .Net 4.0 客户端配置文件,而不是完整版本。试着记住我认为解决方案是更改 bootstrappercore.config 文件中的我假设您正在使用来自 NetFxExtension 的 NetFx45Web 包,这意味着您正在使用 WiX 的内置检测方式。
我猜你所说的应用程序是指你的托管 BA。您必须确保正确设置您的BootstrapperCore.config。如果您的 MBA 需要 4.5 或更高版本,请确保 supportedRuntime 元素具有 4.5 而不是 4,与 supportedFramework 元素相同。
【讨论】:
抱歉,我花了这么长时间才真正尝试过。关键部分是添加<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
,谢谢!【参考方案2】:
如果您使用的是托管引导程序应用程序,那么您应该确保 BA 中设置的 supportedFramework
与您实际应用程序支持的框架相同。具体来说,如果您的应用程序需要完整的 .Net 4.5 版本,请确保您没有将客户端配置文件版本设置为受支持的框架,否则如果 BA 发现安装了客户端配置文件,它将不会下载并安装完整版本。我个人认为这是托管 BA 中的一个错误,但它已报告给 WiX 并以"notabug" 关闭。所以,从你的 BootstrapperCore.config 中删除它:
<supportedFramework version="v4.5\Client" />
【讨论】:
以上是关于WiX 在具有 .NET 3.5 的机器上安装 .NET 4.5,但不在具有 .NET 4.0 的机器上的主要内容,如果未能解决你的问题,请参考以下文章
将 .NET 3.5 库与应用程序捆绑在一起,因此它可以在仅安装 .NET 2.0 的机器上运行?
.NET 4.5 Framework 上的 WiX 检查总是返回一个值?