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

使用WiX安装.NET 6运行时遇0x80070666错误,求升级/跳过方案

解决WiX部署.NET 6.0.10桌面运行时的版本冲突问题

针对你遇到的已安装其他6.0.x版本时安装失败的问题,可以通过WiX的版本检测逻辑结合**.NET运行时安装包的自动升级特性**来解决,具体实现如下:

1. 检测已安装的.NET桌面运行时版本

首先通过注册表搜索获取系统中已安装的.NET 6桌面运行时版本,在WiX的<Fragment>或<Product>节点中添加以下配置:

<Property Id="WINDOWSDESKTOP_RUNTIME_VERSION">
  <RegistrySearch Id="CheckDesktopRuntimeVersion"
                  Root="HKLM"
                  Key="SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedfx\Microsoft.WindowsDesktop.App"
                  Name="Version"
                  Type="raw"
                  Win64="yes" />
</Property>
  • 若需兼容x86系统,可复制上述节点并修改Key为SOFTWARE\WOW6432Node\dotnet\Setup\InstalledVersions\x86\sharedfx\Microsoft.WindowsDesktop.App,同时将Win64设为no。

2. 配置ExePackage的安装逻辑

修改原有的<ExePackage>节点,添加版本判断条件,同时确保安装命令支持自动升级:

<ExePackage
  SourceFile="$(var.ProjectDir)\ThirdParty\windowsdesktop-runtime-6.0.10-win-x64.exe"
  InstallCommand="/q /ACTION=Install /hideconsole"
  RepairCommand="/q ACTION=Repair /hideconsole"
  UninstallCommand="/q ACTION=Uninstall /hideconsole"
  DetectCondition="WINDOWSDESKTOP_RUNTIME_VERSION &gt;= v6.0.10"
  InstallCondition="NOT WINDOWSDESKTOP_RUNTIME_VERSION OR WINDOWSDESKTOP_RUNTIME_VERSION &lt; v6.0.10"
  PerMachine="yes" />

关键配置说明:

  • DetectCondition:当系统已安装的运行时版本≥6.0.10时,WiX会判定该依赖已满足,直接跳过安装,避免低版本安装包覆盖高版本的0x80070666错误。
  • InstallCondition:仅当系统未安装任何.NET 6桌面运行时,或已安装版本低于6.0.10时,才执行安装/升级操作。
  • PerMachine="yes":确保运行时按机器全局安装,符合.NET运行时的默认安装模式。

3. 原理说明

.NET 6桌面运行时的官方安装包本身支持自动升级同大版本的旧版本,执行/ACTION=Install命令时,安装程序会自动检测并替换低于当前版本的旧运行时;通过WiX的条件判断,可避免尝试安装低于已安装版本的运行时,彻底解决版本冲突报错。

内容的提问来源于stack exchange,提问作者peter reay

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 04:51:12