微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用WiX检测.NET Framework 4.5.1

我正在使用WiX 3.8在我的解决scheme中创build一个安装程序项目。 作为此安装的一部分,我创build了一些启动条件,其中之一是检查是否安装了Microsoft .NET Framework 4.5.1。

要做到这一点,我想使用WixNetFxExtension库中的一些属性,似乎适用于较旧版本的.NET框架。 有一个如何在http://wixtoolset.org/documentation/manual/v3/howtos/redistributables_and_install_checks/check_for_dotnet.html上这样做的例子。这不适用于.NET 4.5.1,但是因为没有NETFRAMEWORK451属性检查。

查看NetFx451.wxs模块的源代码( http://wix.codeplex.com/SourceControl/latest#src/ext/NetFxExtension/wixlib/NetFx451.wxs ),似乎没有单独的属性可用于.NET 4.5.1,而是它也使用相同的NETFRAMEWORK45。 据我所知,v4.5.1是v4.5的就地升级,所以它使用相同的registry键(我认为)。 无论如何,在这个模块中,他们只需检查从NETFRAMEWORK45返回的版本号如下:

DetectCondition="NETFRAMEWORK45 >= $(var.NetFx451MinRelease)"

所以我认为我可以写下如下的条件:

如何确定WPF .NET应用程序是否已经进入Windows 10平板电脑模式?

Windows内存和页面文件的使用情况

测量下载速度

为什么Graphics :: DrawImage不像预期的那样拉伸图像?

在使用C#/ .Net时,只读如何影响目录?

<PropertyRef Id="NETFRAMEWORK45" /> <Condition Message="The .NET Framework 4.5.1 was not found. Stopping installation."> <![CDATA[Installed OR (NETFRAMEWORK45 >= 378675)]]> </Condition>

但是,这在我知道安装了.NET Framework 4.5.1的计算机上返回了错误消息。 所以我创build了这样的条件,所以我只能看到从registry中返回的版本号:

<PropertyRef Id="NETFRAMEWORK45" /> <Condition Message ="[NETFRAMEWORK45]">0</Condition>

这将显示一个消息框,其中包含以下文本:#378758所以我知道registry中的值是正确的。

所以我有点困惑为什么我的情况失败了。 有没有什么明显的我在这里失踪,还是有其他的方式来比较条件元素中的值?

这里是修复包括由PhilDWbuild议的哈希符号:

<PropertyRef Id="NETFRAMEWORK45" /> <Condition Message="The .NET Framework 4.5.1 was not found. Stopping installation."> <![CDATA[Installed OR (NETFRAMEWORK45 >= "#378675")]]> </Condition>

沟通策略:Linux到.Net over SSL

.NET:发送文本消息到同一个应用程序的所有实例并读取它

禁用“应用程序已停止工作”窗口

如何testing主机名称是否指本地机器

.net3.5应用程序与.net框架4

你在比较中包括#,这不会有帮助。 你有没有尝试在你的CDATA比较中包含#号?

我会假设,当微软的人发布代码示例来检测框架版本时,不能用MSI文件中的简单RegistrySearch来完成。

http://blogs.msdn.com/b/astebner/archive/2013/10/17/10457758.aspx

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐