Windows installer 视窗10“;msiexec.exe“;舱单仍在8.1

Windows installer 视窗10“;msiexec.exe“;舱单仍在8.1,windows-installer,Windows Installer,看来Windows 10Insider Preview提供了一个msiexec.exe,其中包含一个“supportedOS”=8.1的清单。这会中断对某些Windows 10元素的检测,如VersionNT、DirectX、IIS等 有人能确认这是否是一个已知的问题吗?有没有修复的ETA?现在很明显,微软不会修复它,恰恰相反:MSI技术在Windows 10中不受欢迎 但是,高级安装程序在Windows 10和Windows Server 2016上正确计算VersionNT(64)=1000

看来Windows 10Insider Preview提供了一个
msiexec.exe
,其中包含一个“supportedOS”=8.1的清单。这会中断对某些Windows 10元素的检测,如
VersionNT
、DirectX、IIS等


有人能确认这是否是一个已知的问题吗?有没有修复的ETA?

现在很明显,微软不会修复它,恰恰相反:MSI技术在Windows 10中不受欢迎


但是,高级安装程序在Windows 10和Windows Server 2016上正确计算
VersionNT(64)=1000

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

wmic os get Name,Version,BuildNumber /VALUE
它将准确返回确定您使用的操作系统所需的信息:

BuildNumber=14393

版本=10.0。14393

在使用Windows 10的系统上,Windows Installer属性VersionNT 而VersionNT64表示603,最初作为 Windows 8.1的版本号。因此,不可能创建 .msi包中专门针对Windows 10的条件

自Windows Installer 5.0和Windows 7以来,DLL在.msi中的自定义操作 包被填隙以阻止获取操作系统版本; API GetVersion、GetVersionEx和RtlGetVersion返回一个Windows 版本6.0.6000,它最初是的版本号 WindowsVista。因此,也不可能获得实际数据 来自DLL自定义操作或来自 InstallScript自定义操作(作为DLL实现)

由于Windows Installer中的上述行为,它不是 轻松检测.msi所在的Windows版本 程序包正在运行


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