【问题标题】:Windows 10 "msiexec.exe" manifest still at 8.1Windows 10“msiexec.exe”清单仍为 8.1
【发布时间】:2015-05-13 14:39:37
【问题描述】:

Windows 10 Insider Preview 似乎发布了一个 msiexec.exe,其中包含“supportedOS”= 8.1 的清单。这会破坏对某些 Windows 10 元素的检测,例如 VersionNT、DirectX、IIS 等。

谁能确认这是否是一个已知问题?有什么 ETA 可以修复吗?

【问题讨论】:

  • 您可能需要提供更多详细信息。 VersionNT(64)的什么vakue你拿回来了? DirectX 和 IIS 与 Windows Installer 有什么关系?有时,新版本的操作系统附带“错误”的 VersionNT 值,因此基于 VersionNT 的具有风险启动条件的设置仍然可以安装和测试应用程序,并且 exe 和 MSI 文件在属性中有一个“兼容性”选项卡来更改其中的一些,或者也许我完全找错了树。
  • VersionNT=603(就像 Win 8.1),但应该是 1000。
  • +1 即使安装了所有可用的 Windows 更新,这个问题现在仍然存在于已发布的 Windows 10 版本中。

标签: windows-installer


【解决方案1】:

目前微软显然不会修复它,恰恰相反:MSI 技术在 Windows 10 中已被弃用。

但是,Advanced InstallerWindows 10 和 Windows Server 2016 上正确计算 VersionNT(64)=1000

【讨论】:

    【解决方案2】:

    由于 Windows Installer 属性 VersionNT 在 Win 10 上给出了一个“错误”的值,我们不得不寻找另一种检测操作系统的方法。我发现检测 Windows 10 的一种非常简单且可靠的方法是调用内置的 WMIC 命令并解析它的输出:

    wmic os get Name,Version,BuildNumber /VALUE
    

    它将准确返回您需要确定您使用的操作系统的信息:

    BuildNumber=14393

    版本=10.0.14393

    http://helpnet.flexerasoftware.com/installshield22helplib/helplibrary/whats_newIS2015.htm

    在装有 Windows 10 的系统上,Windows Installer 属性 VersionNT 和 VersionNT64 表示 603,最初是作为 Windows 8.1 的版本号。因此,无法创建 .msi 包中专门针对 Windows 10 的条件。

    从 Windows Installer 5.0 和 Windows 7 开始,.msi 中的 DLL 自定义操作 包被填充以阻止获取操作系统版本; API GetVersion、GetVersionEx 和 RtlGetVersion 返回 Windows 6.0.6000 的版本,原来是 6.0.6000 的版本号 Windows Vista。因此,也无法获得实际的 来自 DLL 自定义操作或来自 InstallScript 自定义操作(作为 DLL 实现)。

    由于 Windows 安装程序中的上述行为,它不是 很容易检测到 .msi 所在的 Windows 版本 包正在运行

    【讨论】:

      猜你喜欢
      • 2016-11-13
      • 1970-01-01
      • 2021-12-14
      • 2015-11-25
      • 2018-09-02
      • 2016-01-23
      • 2015-09-15
      • 1970-01-01
      • 2015-10-29
      相关资源
      最近更新 更多