You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Wix 3.11实现.NET 5运行环境检测

Wix 3.11 实现.NET 5运行时检测的方案

你之前使用的NETFRAMEWORK45属性仅适配传统.NET Framework 4.x及更早版本的检测。.NET 5及后续版本与传统.NET Framework完全独立,不会在原有的.NET Framework注册表路径写入任何版本信息,因此原有检测逻辑对.NET 5无效是正常现象。

核心检测逻辑

.NET 5及以上版本的桌面运行时(适配Windows桌面应用的运行时类型)安装完成后,会在系统注册表写入版本标识:

  • 64位运行时版本存储路径:HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.WindowsDesktop.App,路径下的Version键值对应已安装的运行时版本号
  • 32位运行时版本存储路径:将上述路径中的x64替换为x86即可
    如果需要检测ASP.NET Core运行时,只需要把路径末尾的Microsoft.WindowsDesktop.App替换为Microsoft.AspNetCore.App,路径结构完全一致

完整实现代码

方式1:自定义注册表搜索(适配所有Wix 3.11版本)

首先自定义属性读取注册表中的运行时版本信息:

<!-- 示例为检测64位.NET Desktop Runtime,32位安装包请调整路径和Win64参数 -->
<Property Id="DOTNET_DESKTOP_RUNTIME_VERSION">
  <RegistrySearch Id="SearchDotNetDesktopRuntime"
                  Root="HKLM"
                  Key="SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.WindowsDesktop.App"
                  Name="Version"
                  Type="raw"
                  Win64="yes" />
</Property>

之后添加安装条件,判断版本是否满足要求:

<Condition Message="This application requires .NET Desktop Runtime 5.0 or later. Please install the required runtime then run this installer again.">
  <![CDATA[Installed OR (DOTNET_DESKTOP_RUNTIME_VERSION >= "5.0.0")]]>
</Condition>

方式2:使用内置扩展属性(适配Wix 3.11.2及以上版本)

如果项目已经引用了WixNetFxExtension扩展,可以直接使用扩展内置的预定义属性快速检测,不需要手写注册表搜索逻辑:

<PropertyRef Id="DOTNETCORE5" />
<Condition Message="This application requires .NET Desktop Runtime 5.0 or later. Please install the required runtime then run this installer again.">
  <![CDATA[Installed OR DOTNETCORE5]]>
</Condition>

注意事项

  • Wix的内置版本对比逻辑可以正确识别语义化版本号格式,直接使用>=运算符即可准确判断版本高低,不需要额外做字符串处理
  • 如果是32位安装包,在64位系统上读取64位运行时信息时,必须保留Win64="yes"参数,否则系统会自动重定向注册表路径,无法读取到真实的64位运行时版本
  • 如果需要检测更高版本的.NET运行时,只需要将对比的版本号或预定义属性名替换为对应版本即可,比如要求.NET 6时,将属性名改为DOTNETCORE6
  • 条件中的Installed判断是为了避免在应用已经安装完成、后续修复或卸载流程中重复触发运行时校验,和原有检测逻辑的设计保持一致

内容的提问来源于stack exchange,提问作者Atif Waqar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.27 14:36:07