如何在 WiX 中检测 .NET 3.5?

20

我正在尝试使用WiX检测已安装的.NET版本。我已经尝试过:

<Condition Message='This setup requires the .NET Framework 3.5 or higher.'>
  <![CDATA[MsiNetAssemblySupport >= "3.5.0.0"]]>
</Condition>

但这行不通,因为MsiNetAssemblySupport属性检查的是fusion.dll的版本,在.NET 3.0或3.5中,它的版本仍然是2.0。

有没有可能检查系统目录中.NET库的存在?我该如何在WiX中实现?还是有一种使用注册表的方法可以实现?

(我知道有一个WiX用户电子邮件列表,但这是21世纪--我不喜欢上个世纪80年代的技术,我喜欢容易搜索的东西。)


3
有些讽刺的是,所有的回答都说去谷歌搜索。而实际上,这个问题在谷歌上的搜寻结果排名第一。 - trampster
2个回答

37

在 Visual Studio -> WiX 项目 -> 添加引用 -> WixNetFxExtension.dll,然后:

<PropertyRef Id="NETFRAMEWORK35" />
<Condition Message="This setup requires the .NET Framework 3.5 to be installed.">
  Installed OR NETFRAMEWORK35
</Condition>

完整详情,包括扩展中提供的所有.NET版本属性。还需考虑条件消息是否应进行本地化处理


错误 LGHT0094:在部分 'Product:*' 中未解析引用符号 'Property:NETFRAMEWORK35'。 - mmr
@mmr - 我已经澄清了答案,这就是我要做的一切才能使它正常工作。这将添加对wixproj的引用,该引用会自动将-ext WixNetFxExtension添加到命令行。 - si618
有人知道当只有.NET 4.0框架存在时,NETFRAMEWORK35是否为真吗? - KevM
1
@KevM,我添加了另一个链接,“NETFRAMEWORK35如果安装了.NET Framework 3.5,则设置为#1(否则不设置)。” 当然,您必须自己测试,但文档表明不会是真的。 - si618

1

答案似乎是否定的。您不能(以可靠的方式)检查是否安装了 .NET Framework 版本 X 或更高版本。您只能检查是否安装了特定的 .NET 版本。 现在 .NET 4.0 已经发布,即使已经安装了 .NET 4.0,仍然需要安装 .NET 3.5,这很烦人。

我希望 WiX 开发人员能够找到解决这个问题的方法。


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