3

Windows 2012 R2 マシン (RTM ビルド 9600) で MSI を実行すると、VersionNT プロパティが (603 ではなく) 602 に設定されます。602 が実際に正しい OS バージョンである場合、インストール時に Windows 2012 と Windows 2012 R2 をプログラムで区別するにはどうすればよいですか?

更新: Windows 2012 R2 または Windows 8.1 で MSI を直接実行すると、VersionNT が正しく 603 に設定されるように見えます。MSI がブートストラップ (win32 アプリ) によって開始されると、VersionNT が設定されます。したがって、直接実行される MSI と win32 アプリによって起動される MSI の間には矛盾があります。

Windows 10 の更新:
Windows 10 の互換性をサポートするためにブートストラップのマニフェストを更新すると、MSI の InstallUISequence は正しく VersionNT=1000 に設定されますが、InstallExecuteSequence は VersionNT=603 になります。

InstallExecuteSequence も VersionNT=1000 に設定するにはどうすればよいですか?

4

1 に答える 1

2

Win8/2012R3 を明示的にサポートするには、ブートストラップをマニフェストにする必要があります。これは、Burn の WiX 3.8 でまもなく修正される予定ですが、ここに記載されているように、任意のブートストラップをマニフェストできます: 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ブートストラップのソース コードにアクセスできる場合は、次のドキュメントに記載されているように呼び出すことをお勧めします。 vs.85).aspx . これは、私が外部で Burn にプッシュしている変更です (これは内部的に Visual Studio で使用されます)。

于 2014-01-18T03:09:13.123 に答える