From: Hans Leidekker hans@codeweavers.com
--- dlls/msi/package.c | 32 +++++++++++++++----------------- dlls/msi/tests/package.c | 3 +++ 2 files changed, 18 insertions(+), 17 deletions(-)
diff --git a/dlls/msi/package.c b/dlls/msi/package.c index bfbbaadae1b..08847432326 100644 --- a/dlls/msi/package.c +++ b/dlls/msi/package.c @@ -740,28 +740,26 @@ static VOID set_installer_properties(MSIPACKAGE *package) msi_set_property( package->db, L"MsiRunningElevated", L"1", -1 );
/* set the os things */ + verval = LOBYTE(LOWORD(GetVersion())) * 100 + HIBYTE(LOWORD(GetVersion())); + len = swprintf( verstr, ARRAY_SIZE(verstr), L"%u", verval ); + OSVersion.dwOSVersionInfoSize = sizeof(OSVersion); RtlGetVersion(&OSVersion); - verval = OSVersion.dwMinorVersion + OSVersion.dwMajorVersion * 100; - if (verval > 603) - { - verval = 603; - OSVersion.dwBuildNumber = 9600; - } - len = swprintf( verstr, ARRAY_SIZE(verstr), L"%u", verval ); switch (OSVersion.dwPlatformId) { - case VER_PLATFORM_WIN32_WINDOWS: - msi_set_property( package->db, L"Version9X", verstr, len ); - break; - case VER_PLATFORM_WIN32_NT: - msi_set_property( package->db, L"VersionNT", verstr, len ); - len = swprintf( bufstr, ARRAY_SIZE(bufstr), L"%u", OSVersion.wProductType ); - msi_set_property( package->db, L"MsiNTProductType", bufstr, len ); - break; + case VER_PLATFORM_WIN32_WINDOWS: + msi_set_property( package->db, L"Version9X", verstr, len ); + len = swprintf( bufstr, ARRAY_SIZE(bufstr), L"%u", OSVersion.dwBuildNumber ); + msi_set_property( package->db, L"WindowsBuild", bufstr, len ); + break; + case VER_PLATFORM_WIN32_NT: + msi_set_property( package->db, L"VersionNT", verstr, len ); + len = swprintf( bufstr, ARRAY_SIZE(bufstr), L"%u", HIWORD(GetVersion()) ); + msi_set_property( package->db, L"WindowsBuild", bufstr, len ); + len = swprintf( bufstr, ARRAY_SIZE(bufstr), L"%u", OSVersion.wProductType ); + msi_set_property( package->db, L"MsiNTProductType", bufstr, len ); + break; } - len = swprintf( bufstr, ARRAY_SIZE(bufstr), L"%u", OSVersion.dwBuildNumber ); - msi_set_property( package->db, L"WindowsBuild", bufstr, len ); len = swprintf( bufstr, ARRAY_SIZE(bufstr), L"%u", OSVersion.wServicePackMajor ); msi_set_property( package->db, L"ServicePackLevel", bufstr, len );
diff --git a/dlls/msi/tests/package.c b/dlls/msi/tests/package.c index 05633c4b6df..ea592e23464 100644 --- a/dlls/msi/tests/package.c +++ b/dlls/msi/tests/package.c @@ -5736,6 +5736,9 @@ static void test_installprops(void) sprintf(buf, "%d", LOBYTE(LOWORD(GetVersion())) * 100 + HIBYTE(LOWORD(GetVersion()))); check_prop(hpkg, "VersionNT", buf, 1);
+ sprintf(buf, "%u", HIWORD(GetVersion())); + check_prop(hpkg, "WindowsBuild", buf, 1); + if (S(U(si)).wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64) { sprintf(buf, "%d", si.wProcessorLevel);