Hans Leidekker : msi: Map neutral parts of package language ids to the system default language id .
Alexandre Julliard
julliard at winehq.org
Mon Dec 6 13:18:33 CST 2010
Module: wine
Branch: master
Commit: 23169289e6a2f43b256a3b2c8626bfe3dc3e864f
URL: http://source.winehq.org/git/wine.git/?a=commit;h=23169289e6a2f43b256a3b2c8626bfe3dc3e864f
Author: Hans Leidekker <hans at codeweavers.com>
Date: Mon Dec 6 13:20:02 2010 +0100
msi: Map neutral parts of package language ids to the system default language id.
---
dlls/msi/package.c | 12 +++++++++++-
dlls/msi/tests/install.c | 17 +++++++++++++++++
2 files changed, 28 insertions(+), 1 deletions(-)
diff --git a/dlls/msi/package.c b/dlls/msi/package.c
index a81d0bd..907768b 100644
--- a/dlls/msi/package.c
+++ b/dlls/msi/package.c
@@ -1402,7 +1402,17 @@ static UINT validate_package( MSIPACKAGE *package )
}
for (i = 0; i < package->num_langids; i++)
{
- if (!package->langids[i] || IsValidLocale( package->langids[i], LCID_INSTALLED ))
+ LANGID langid = package->langids[i];
+
+ if (PRIMARYLANGID( langid ) == LANG_NEUTRAL)
+ {
+ langid = MAKELANGID( PRIMARYLANGID( GetSystemDefaultLangID() ), SUBLANGID( langid ) );
+ }
+ if (SUBLANGID( langid ) == SUBLANG_NEUTRAL)
+ {
+ langid = MAKELANGID( PRIMARYLANGID( langid ), SUBLANGID( GetSystemDefaultLangID() ) );
+ }
+ if (IsValidLocale( langid, LCID_INSTALLED ))
return ERROR_SUCCESS;
}
return ERROR_INSTALL_LANGUAGE_UNSUPPORTED;
diff --git a/dlls/msi/tests/install.c b/dlls/msi/tests/install.c
index 58bc681..211d6a8 100644
--- a/dlls/msi/tests/install.c
+++ b/dlls/msi/tests/install.c
@@ -6057,6 +6057,23 @@ static void test_package_validation(void)
ok(!delete_pf("msitest\\maximus", TRUE), "file exists\n");
ok(!delete_pf("msitest", FALSE), "directory exists\n");
+ if (GetSystemDefaultLangID() == MAKELANGID( LANG_ENGLISH, SUBLANG_ENGLISH_US ))
+ {
+ DeleteFile(msifile);
+ create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;9");
+ r = MsiInstallProductA(msifile, NULL);
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+ ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
+ ok(delete_pf("msitest", FALSE), "directory does not exist\n");
+
+ DeleteFile(msifile);
+ create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel;1024");
+ r = MsiInstallProductA(msifile, NULL);
+ ok(r == ERROR_SUCCESS, "Expected ERROR_SUCCESS, got %u\n", r);
+ ok(delete_pf("msitest\\maximus", TRUE), "file does not exist\n");
+ ok(delete_pf("msitest", FALSE), "directory does not exist\n");
+ }
+
DeleteFile(msifile);
create_database_template(msifile, pv_tables, sizeof(pv_tables)/sizeof(msi_table), 100, "Intel32;0");
More information about the wine-cvs
mailing list