如何检查.NET 6运行时是否安装

2023-12-24

作为使用 .NET 6 和 WiX 安装程序安装 WPF 应用程序的一部分,我想检查是否安装了 .NET 6 运行时。

WiX 提供了预定义的属性来检查 .NET 框架的属性,但没有提供 .NET Core 及其他版本的属性,因此我尝试检查注册表项是否存在。

可以在以下位置检查一个注册表项: HKEY_LOCAL_MACHINE\SOFTWARE\dotnet\Setup\InstalledVersions\x64\sharedhost\Version

但是,如果我卸载运行时,注册表项不会被删除,是否有其他可靠的方法来检查是否安装了运行时以及安装了哪个版本?


2023 年 4 月

随着 WiX 4 的正式发布,现在原生支持通过 WiX 4 Netfx wixextension 检查计算机上是否安装了 .NET 运行时(核心、桌面或 aspnet):https://wixtoolset.org/docs/schema/netfx/dotnetcompatibilitycheck/ https://wixtoolset.org/docs/schema/netfx/dotnetcompatibilitycheck/

用法示例:

<Fragment>
    <netfx:DotNetCompatibilityCheck Id="netCoreStatus" 
        Property="NETCORESTATUS" RollForward="latestMajor" 
        RuntimeType="core" Version="6.0.1" Platform="x64" />
    <Launch Condition="Installed OR NETCORESTATUS=&quot;0&quot;" 
        Message="[ProductName] requires Microsoft .NET Core - 6.0.1 or greater." />
</Fragment>

在内部,它使用我在下面链接的相同包来运行 NetCoreCheck 可执行文件。


原答案

WiX 3 目前本身无法处理此问题。它正在针对 WiX v4 进行开发(GitHub问题 https://github.com/wixtoolset/issues/issues/6264)。阅读该问题后,我发现这些工具是当前的解决方法。

https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x86 https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x86
https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x64 https://www.nuget.org/packages/Microsoft.NET.Tools.NETCoreCheck.x64

您可以使用这些包内的文件来检查运行时。要么通过运行NetCoreCheck.exe直接或使用提供的自定义操作 DLL。

NetCoreCheck.exe -h查看帮助。但你会想要这样的东西:

netcorecheck --runtimename Microsoft.NetCore.App --runtimeversion 6.0.0

我不知道如何使用自定义操作 DLL,但我确实看到它有两个 DLL 导出。

 ordinal hint RVA      name

          1    0 00001500 CheckNETRuntime
          2    1 00002260 get_hostfxr_path
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查.NET 6运行时是否安装 的相关文章

随机推荐

  • 有没有一种方法可以在不使用Subject的情况下创建由方法调用触发的可观察序列?

    我有一个带有几个方法的服务 在我的代码中的各个不同位置调用 class Service method1 method2 我希望能够订阅这些方法调用 即有一个可观察对象 每当调用这些方法之一时它就会发出一个值 我意识到我可以用Rx Subje
  • 共享内存中的data.table以进行并行计算

    继有关的帖子之后数据表和并行计算 https stackoverflow com questions 14759905 data table and parallel computing 我正在尝试找到一种方法来进行手术data table
  • 如何在浮动 IP 后面使用 docker swarm 模式管理器

    某些提供商 例如 ScaleWay 将为您的服务器提供一个未连接到本地接口的 IP docker swarm init advertise addr
  • 修复 macOS 12 上的 git HTTPS 错误:“错误的密钥长度”

    我使用的是公司托管的 Bitbucket git 存储库 可以通过 HTTPS 访问 访问它 例如git fetch 在 macOS 11 Big Sur 上运行 但在更新到 macOS 12 Monterey 后出现故障 将 macOS
  • Java6 中对象 的通配符

    请问如何纠正投射并删除警告 unchecked unchecked cast required T found java lang Object 来自SSCCE import java awt import javax swing publ
  • Flutter:获取 HTML 页面的某些元素

    我最近开始使用 dart 和 flutter 为动物收容所开发一个应用程序 但遇到了问题 这个想法是有一个捐赠页面 用户可以选择为狗购买食物 打开的脚手架将显示食物的图片 并从销售所述食物的网站获取一些数据以及当前价格 该图像作为资产存储在
  • 如何在 vim 中自动格式化/缩进 C 代码?

    当我从另一个文件复制代码时 格式会变得混乱 如下所示 fun for for if 如何在 vim 中自动格式化此代码 尝试以下按键 gg G 解释 gg转到文件顶部 是一个修复缩进的命令G告诉它执行操作到文件末尾
  • C 中的线程

    我想在C中创建一个线程 以便该线程在两秒后自动调用 我使用Visual Studio和Windows平台进行开发 我该如何开始 您将需要使用操作系统特定的库来执行线程 在 Posix 上 你会想要研究一下pthreads https com
  • 向 Android 应用程序添加屏幕亮度控制

    我希望在应用程序菜单中添加控件来本地调整屏幕亮度 但似乎不知道如何操作 我已经看到了最大化或调暗亮度的示例 但我希望添加控件 以便用户可以控制和设置亮度级别 有谁有任何示例 教程 源代码 或者只是一个可以为我指明正确方向的地方 互联网 ht
  • 通过电话进行 Google 地图/地点 API 搜索

    我们有一个注册页面 用户可以在其中输入他的公司电话号码 我们想从电话号码中找到他的商业信息以进行验证 如何使用 Google 地点 地图 api 来完成此操作 还有更好的选择吗 我有点迷失了 通过谷歌 API 仔细检查后 他们的回复也没有返
  • 带换行符的长字符串

    我见过 C 代码使用 告诉编译器字符串中有换行符并且它应该全部在一行中 C C 有类似的东西吗 就像如果我想放这样的东西 73167176531330624919225119674426574742355349194934 96983520
  • Numpy 中一维数组的滚动窗口?

    有没有办法在 Numpy 中有效地实现一维数组的滚动窗口 例如 我有这个纯 Python 代码片段来计算一维列表的滚动标准差 其中observations是一维值列表 并且n是标准差的窗口长度 stdev for i data in enu
  • 如何在mysql中将日期格式的月份减一? [复制]

    这个问题在这里已经有答案了 假设我有一个 select 语句 SELECT COUNT wedding DATE FORMAT weddate y m d FROM weddingtable 我想让它可以从返回的月份中减去 1 例如 SEL
  • .Net 4 在 StrongNameSignatureVerification 上不断浪费一个 CPU 核心

    我们有一个在 Net 4 Windows 2008 R2 上运行的混合模式汇编应用程序 MFC WinForms 它在一个线程上不断使用 100 的 cpu 使用 ProcessExplorer 我们在繁忙的线程上看到以下堆栈 我们还可以看
  • 需要将mysql数据库中的图像显示到fpdf

    A 将图像作为 blob 保存在 mysql 数据库中 我希望使用 php 将其显示在 fpdf 中 我在执行此操作时遇到问题 因为我对 fpdf 很陌生 我真的需要帮助 谢谢 您将需要 FPDF 的此扩展 http www fpdf or
  • 对 Pandas DataFrame 描述输出进行排序

    我正在尝试对输出进行排序describe 与计数 不太清楚 怎么解决 Tried sort by and loc但它们都没有达到对描述的输出进行排序的目的 需要编辑以下代码行 df groupby Disease Category Appr
  • Rails中的Bootstrap Modal一直显示第一条记录

    当我单击模态中的 视图 时 它继续仅显示第一条记录 即使我单击第二条记录 它仍然显示第一条记录 下面是我如何实现 link to 切换到名为 myModal 的模式框 div class modal fade div class modal
  • 使用 AngularJS 进行 PUT 的 CORS 请求无效

    我的 Spring 应用程序中有一个映射 如下所示 PutMapping path test id public ResponseBody Shop putTest PathVariable id long id RequestBody U
  • 如何从我的应用程序打开 Google Play 商店应用程序以安装 Play 商店中提供的最新版本的应用程序

    我对应用程序的应用程序升级方案有疑问 基本上 我将应用程序版本从应用程序发送到应用程序服务器 然后决定是否显示应用程序升级提醒屏幕 应用程序升级提醒屏幕有 立即更新 或 忽略 2 个选项 要求是 立即更新 应该打开 Play 商店应用程序
  • 如何检查.NET 6运行时是否安装

    作为使用 NET 6 和 WiX 安装程序安装 WPF 应用程序的一部分 我想检查是否安装了 NET 6 运行时 WiX 提供了预定义的属性来检查 NET 框架的属性 但没有提供 NET Core 及其他版本的属性 因此我尝试检查注册表项是