Index: chrome/installer/setup/install_worker.cc |
diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc |
index 120021989124d9d8be72dfa8ff440b9883ae8775..7105590aeb07344809637a24470e535c92062e00 100644 |
--- a/chrome/installer/setup/install_worker.cc |
+++ b/chrome/installer/setup/install_worker.cc |
@@ -30,6 +30,7 @@ |
#include "chrome/installer/util/installation_state.h" |
#include "chrome/installer/util/installer_state.h" |
#include "chrome/installer/util/install_util.h" |
+#include "chrome/installer/util/l10n_string_util.h" |
#include "chrome/installer/util/product.h" |
#include "chrome/installer/util/set_reg_value_work_item.h" |
#include "chrome/installer/util/shell_util.h" |
@@ -239,6 +240,7 @@ void AddMultiUninstallWorkItems(const InstallerState& installer_state, |
void AddVersionKeyWorkItems(HKEY root, |
BrowserDistribution* dist, |
const Version& new_version, |
+ bool add_language_identifier, |
WorkItemList* list) { |
// Create Version key for each distribution (if not already present) and set |
// the new product version as the last step. |
@@ -252,6 +254,17 @@ void AddVersionKeyWorkItems(HKEY root, |
google_update::kRegOopcrashesField, |
static_cast<DWORD>(1), |
false); // set during first install |
+ if (add_language_identifier) { |
+ // Write the language identifier of the current translation. Omaha's set of |
+ // languages is a superset of Chrome's set of translations with this one |
+ // exception: what Chrome calls "en-us", Omaha calls "en". sigh. |
+ std::wstring language(GetCurrentTranslation()); |
+ if (LowerCaseEqualsASCII(language, "en-us")) |
+ language.resize(2); |
+ list->AddSetRegValueWorkItem(root, version_key, |
+ google_update::kRegLangField, language, |
+ false); // do not overwrite language |
+ } |
list->AddSetRegValueWorkItem(root, version_key, |
google_update::kRegVersionField, |
ASCIIToWide(new_version.GetString()), |
@@ -782,6 +795,9 @@ void AddInstallWorkItems(const InstallationState& original_state, |
new_version, install_list); |
const HKEY root = installer_state.root_key(); |
+ // Only set "lang" for user-level installs since for system-level, the install |
+ // language may not be related to a given user's runtime language. |
+ const bool add_language_identifier = !installer_state.system_install(); |
const Products& products = installer_state.products(); |
for (size_t i = 0; i < products.size(); ++i) { |
@@ -791,7 +807,7 @@ void AddInstallWorkItems(const InstallationState& original_state, |
install_list, *product); |
AddVersionKeyWorkItems(root, product->distribution(), new_version, |
- install_list); |
+ add_language_identifier, install_list); |
} |
if (installer_state.is_multi_install()) { |
@@ -800,7 +816,7 @@ void AddInstallWorkItems(const InstallationState& original_state, |
AddVersionKeyWorkItems(root, |
installer_state.multi_package_binaries_distribution(), new_version, |
- install_list); |
+ add_language_identifier, install_list); |
} |
// Add any remaining work items that involve special settings for |