在 Windows 2012 R2 上运行时,如何让 MSI 返回正确的 VersionNT 值?

2023-12-23

当我在 Windows 2012 R2 计算机(RTM 内部版本 9600)上运行 MSI 时,VersionNT 属性设置为 602(而不是 603)。如果 602 实际上是正确的操作系统版本,那么如何在安装时以编程方式区分 Windows 2012 和 Windows 2012 R2?

更新:看起来如果我直接在 Windows 2012 R2 或 Windows 8.1 上运行 MSI,VersionNT 将正确设置为 603。如果我的 MSI 由引导程序(win32 应用程序)启动,VersionNT 将被设置,错误地为 602。因此,直接运行的 MSI 与由 win32 应用程序启动的 MSI 之间存在差异。

Windows 10 更新:
我发现当我更新引导程序的清单以支持 Windows 10 兼容性时,MSI 的 InstallUISequence 将正确设置 VersionNT=1000,但 InstallExecuteSequence 将具有 VersionNT=603。

如何使 InstallExecuteSequence 也设置 VersionNT=1000?


您的引导程序需要明确支持 Win8/2012R3。这个问题很快就会在 WiX 3.8 的 Burn 中得到修复,但您可以按照此处记录的方式显示任何引导程序:http://msdn.microsoft.com/en-us/library/aa374191%28v=vs.85%29.aspx http://msdn.microsoft.com/en-us/library/aa374191%28v=vs.85%29.aspx.

具体来说,您需要添加 Windows 8 和 Windows 8.1 的 GUID:

  • {4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}
  • {1f676c76-80e1-4239-95bb-83d0f6d0da78}

如果您有权访问引导程序的源代码,更好的、面向未来的方法是调用RtlGetVersion如此处记录的:http://msdn.microsoft.com/en-us/library/windows/hardware/ff561910(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/hardware/ff561910(v=vs.85).aspx。这是我在外部推动 Burn 的更改(我们在 Visual Studio 内部使用此更改)。

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

在 Windows 2012 R2 上运行时,如何让 MSI 返回正确的 VersionNT 值? 的相关文章

  • 使用 Windows 命令行将多行环境变量回显到文本文件

    我有一个环境变量 SSH PRIVATE KEY 并希望使用命令行将其打印到文件中 而不使用批处理文件 这是因为我需要在 Gitlab Ci yml 脚本中使用此文件 在 Linux 中 这很简单 echo SSH PRIVATE KEY
  • 如何在Windows命令行中执行for循环?

    我想知道这是否可能 我不熟悉使用 Windows 命令行 但我必须将它用于我正在处理的项目 我有许多文件 我需要为每个文件执行一个功能 我习惯使用 python 但显然这有点不同 所以我希望得到一些帮助 基本上 我需要 for 循环来迭代文
  • 如何通过文件关联执行已启动应用程序的事件?

    在尝试了一个新的 Windows 窗体项目后 我发现当您将文件类型与 Windows 中的可执行文件关联时 您可以使用以下命令找到启动应用程序的文件的文件路径args 0 from static void Main string args
  • 将 Azure 网站迁移到 Azure 云服务

    我有一个项目 我计划将 Web 应用程序作为 Azure 网站启动 然后将其迁移到 Azure 云服务 也称为托管服务 如果需要作为扩展策略 做出这个决定是因为我了解到 Azure 网站的开发更加简单 快速 几乎不需要特定于 Azure 的
  • 命令行字符串的最大长度

    在Windows中 命令行字符串的最大长度是多少 意思是如果我指定一个在命令行上接受参数的程序 例如abc exe name abc 我编写的一个简单的控制台应用程序通过命令行获取参数 我想知道最大允许数量是多少 来自微软文档 命令提示符
  • 即插即用 ID (PNPID) 对于每个设备来说都是唯一的吗?

    我使用 Windows 并希望为通过 USB 连接的外部硬盘找到唯一 ID 我发现 PnpID 0010101D400000000 这是独一无二的吗 如果我将其连接到其他 Windows 和 PC 这不会改变吗 还有其他硬盘不能有这个 Pn
  • 谷歌基准迭代的意义是什么?

    我正在使用 Google Benchmark 来测量某些代码的执行时间 例如 我编写了以下代码来测量其执行时间性能 include
  • 合法管理员如何获取 Active Directory 中的用户密码?

    如果密码以可逆加密方式存储在 Active Directory 中 管理员 开发人员如何提取和解密该密码 具体来说 我指的是this http technet microsoft com en us library cc784581 WS
  • UnicodeDecodeError:“charmap”编解码器|安装 pip python-stdnum==1.8 时出错

    我对编程还很陌生 所以请耐心等待 当我为正在使用的模块安装一些必需的软件包时 我无法安装python stdnum 1 8 我收到以下错误消息 File C Users 59996 AppData Local Programs Python
  • Python将文件从Linux复制到WIndows

    我正在构建一个网站 该网站有一个表单 可以捕获用户数据并在用户数据上运行一些cgi cgi 的第一步是需要将文件从 Linux Web 服务器复制到 Windows 计算机 服务器将使用 Active Directory 角色帐户作为复制凭
  • Nodejs 在 Windows 上找不到已安装的模块

    我现在正在Windows上学习nodejs 使用npm cmd全局安装了几个模块 nodejs找不到已安装的模块 以玉石为例 npm install jade g Jade安装在目录中 C Program Files x86 nodejs
  • JScript:如何运行外部命令并获取输出?

    我正在使用 cscript exe 运行 JScript 文件 在脚本中我需要调用外部console命令并获取输出 Tried var oShell WScript CreateObject WScript Shell var oExec
  • 如何运行 Windows 批处理文件但隐藏命令窗口?

    如何运行 Windows 批处理文件但隐藏命令窗口 我不希望 cmd exe 在执行文件时在屏幕上可见 这可能吗 如果你写一个非托管程序并使用创建进程 https learn microsoft com en us windows win3
  • R 控制台是我的母语,如何将 R 设置为英语?

    我在 Windows 7 上使用 R 显然 R 不知何故发现了我说英语以外的语言的证据 并且顽固地坚持在控制台中以我自己的语言提供输出 由于多种原因 这是不可取的 我希望 R 是英语 什么有效 我能够使用LANGUAGE en作为 R 控制
  • Visual C++ free 和 malloc 的线程安全性?

    有谁知道 free 和 malloc 在 Visual C 2010 上是否是线程安全的 我遇到了奇怪的问题 内存被损坏 我几乎认为这是唯一的可能性 有谁知道安全装置是否可以打开和关闭以及如何打开和关闭 前提是您链接的是线程安全库 http
  • 无法在 Windows 7 上安装 Android USB 驱动程序

    所以我想使用我的新 Nexus 5 来调试我的应用程序 我尝试通过以下方式安装 Android USB 驱动程序装置经理 http developer android com tools extras oem usb html Win7但我
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • LNK2019:函数 ___tmainCRTStartup 中引用了无法解析的外部符号 _main

    我有以下错误 LNK2019 函数 tmainCRTStartup 中引用了无法解析的外部符号 main 有很多与此错误相关的线程 但这些解决方案都不适合我 而且 没有人解释为什么会出现这个错误 I tried wWinMainCRTSta
  • 如何在 RTMP 流中嵌入 pic_timing SEI 挂钟时间码?

    我需要将我的桌面流式传输到 AWS MediaLive 服务 并且根据要求 我必须在流中包含挂钟时间码 AWS 支持人员善意地通知我 对于 h 264 编码流 我需要提供时间码作为 pic timing SEI 消息 我在 Windows
  • Windows 相当于 Unix find 命令,用于搜索多种文件类型

    虽然在 Windows 中安装了 cygwin 可以提供大部分 unix 命令 但我仍然想知道如何使用 Windows find 命令在一个命令中搜索多个文件类型 ie find name cpp o name h o name java

随机推荐