New issue
Advanced search Search tips
Starred by 35 users

Issue metadata

Status: Fixed
Owner:
Closed: Aug 2014
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 2
Type: Bug

Blocking:
issue 8606



Sign in to add a comment
link

Issue 338706: Support Win64 to Win32 system install upgrades and downgrades

Reported by jsc...@chromium.org, Jan 28 2014 Project Member

Issue description

We've talked about this over the last several months but never filed a bug for it. It's not a blocker for the canary, but it is for the next phase.

First step is to figure out exactly how we want to support this. Do we plan to uninstall the old versions (either 32 or 64 depending on the scenario) and just leave a stub exe behind to keep all the links working?
 

Comment 1 by jsc...@chromium.org, Jan 28 2014

Issue 338556 has been merged into this issue.

Comment 2 by jsc...@chromium.org, Jan 28 2014

Cc: dxie@chromium.org
Status: Available

Comment 3 by grt@chromium.org, Jan 28 2014

Take care not to break GCAPI (src/chrome/installer/gcapi). It would be good if old versions of GCAPI still work as expected when 64-bit Chrome is installed.

Comment 4 by jsc...@chromium.org, Jan 29 2014

Labels: Proj-Win64

Comment 5 by jsc...@chromium.org, Apr 14 2014

Blocking: chromium:8606

Comment 6 by wfh@chromium.org, Apr 14 2014

Owner: wfh@chromium.org
Status: Assigned

Comment 7 by grt@chromium.org, Apr 15 2014

Cc: jsc...@chromium.org
chrome/installer/setup/install_worker.cc's AddInstallWorkItems is likely where you'll want to add new work items to |install_list| to delete old files and registry keys. Maybe create a new helper function that checks for system-level install and adds the necessary work items. You'll also need to address the KEY_WOW64_32KEY stuff in  issue 338710  so that the Omaha integration works.

Comment 8 by wfh@chromium.org, May 2 2014

Canvasing opinions - how would you guys feel about keeping the Chrome installation in the original install directory - i.e. for fresh x64 installs it would go into C:\Program Files and for fresh x86 installs it would go into C:\Program Files (x86) but once there, it would stay for all future upgrades, unless the browser was manually removed and reinstalled.

That is roughly the behavior I have working now.  It deals with a lot of edge cases to do with upgrades, detecting omaha has upgraded the browser, and dealing with old_chrome.exe and new_chrome.exe renames during this process.

However, it breaks the principle of separation of directories between x86/x64 - however this is not unprecedented - e.g. MS does this with some binaries in SDK/MSVS and also some shared files in C:\Program Files\Common Files

Comment 9 by jsc...@chromium.org, May 2 2014

Does MS switch directories for MSVS and the SDKs? I thought they just kept them in the x86 directory because of either mixed x86/x64 executables or to avoid breaking e.g. include path dependencies.

Comment 10 by wfh@chromium.org, May 2 2014

It seems to be varied - examples of 64-bit files in Program Files (x86):

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\makecert.exe
C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\link.exe

examples of some 32-bit files in Program Files (on a 64bit host)

C:\Program Files\Microsoft Visual Studio 11.0\Common7\IDE\vsdiag_regwcf.exe
C:\Program Files\Google\Google Printer Installer\GooglePrinterInstaller.exe

It seems it's relatively common for 64-bit executables to be located in the C:\Program Files (x86) directory but they are normally in an 'amd64' or 'x64' directory to distinguish them.  Less common for 32-bit to be in C:\Program Files on a 64-bit system.

If we decide to go this route, then an issue might be that some installations (upgrades from x86) would be in C:\Program Files (x86) and some installations (new installs) would be located in C:\Program Files - we need to decide if this will be a problem for e.g. components that depend on Chrome binaries.  I believe that Chrome install/uninstall can handle this fine, as can Omaha, as can our crash backend.

Comment 11 by grt@chromium.org, May 2 2014

One thing that comes to mind (which maybe isn't a problem) is places in the code that use base::DIR_PROGRAM_FILES, base::DIR_PROGRAM_FILESX86, CSIDL_PROGRAM_FILES, and CSIDL_PROGRAM_FILESX86. We'd need to be careful not to assume that 64-bit Chrome is in one or the other. I haven't taken a survey of these.

We also have code in a few places that tries to find Chrome (src/chrome/installer/launcher_support and src/chrome/installer/gcapi come to mind). These need to keep working.

The purist in me things it's best if Win64 Chrome is in the 64-bit Program Files directory unconditionally, but the pragmatist in me understands that this may be challenging and ultimately not worth it.

Comment 12 by jsc...@chromium.org, May 2 2014

Yeah, I'm slightly more afraid of unexpected breakage from living in the wrong directory. What are the corner cases on the strict directory separation by architecture?

Comment 13 by wfh@chromium.org, May 2 2014

Either way it's quite complex, and there will be edge cases to deal with.  Example, if we move to strict directory separation, then the code that currently checks on browser start/stop for new_chrome.exe and performs the rename, will have to be significantly enhanced.

I believe that the biggest change would be that right now a Chrome upgrade does not call any of the uninstall code at all, so we would have to either call this code, or add additional installation steps if it was detected that we were moving from x86/x64 to fix up the installation.

I'm wary of performing a full uninstall and reinstall in this case because of things like potentially resetting the default browser.  Also, if an upgrade occurs while the browser is running, then triggering an uninstall at this point could potentially be quite catastrophic to the running browser.

Perhaps performing a delayed uninstall the first time the browser is loaded from a new platform directory might be the best option here.  Again, I'd be wary of the uninstaller trampling on any keys that the current version is using.

Comment 14 by jgepub...@gmail.com, May 2 2014

Just an ignorant shout from the bleachers.  Has the option of side-by-side installs been discussed?  My anticipation for Win64 Chrome was that it would be side-by-side as is Canary & Stable, and as was Internet Explorer.  I don't know if that would make things easier or harder, but as a user I wouldn't think it unusual.

That's under the presumption that the only time the platform changes is on a full install, not on update.

Comment 15 by grt@chromium.org, May 2 2014

That's an interesting suggestion. In the case of IE, it was required initially to support the vast ecosystem of 32bit plugins. Some consequences of sxs installs are double the disk space used on end-user machines as well as double the bandwidth for updates.

One possibility is to put Chrome64 in the 64-bit Program Files directory and put a stub exe in the old 32-bit location. This should keep existing shortcuts and third-party software working. I can see some complexity in handling in-use updates that straddle the 32->64 migration, but I wonder if this is worth it in the long run.

Comment 16 by stan...@gmail.com, May 2 2014

I'm pretty sure most users would be confused which version to run then.

Comment 17 by wfh@chromium.org, May 2 2014

The current idea I have is to add an additional command line switch to the mini_installer to allow a limited uninstall i.e. remove only the files and platform (x64/x86) specific registry entries (in particular, leave the Omaha entries in place).

Then, I will change the Chrome startup to detect that an old install needs cleaning up (same place that it detects old_chrome.exe) and call the old version of the uninstaller to remove these files.  I think this should make the changes relatively self contained, and delegates cleanup to the version of the installer (x64/x86) that understands all the registry/file locations correctly.

Comment 18 by jsc...@chromium.org, May 3 2014

wfh@  - That seems like a good plan.

jgepublic@ - I don't think side-by-side is an option. Our profile structure doesn't support access from simultaneous browser processes. So, you'd either be unable to run 32- and 64-bit simultaneously or you'd have different profiles for the different architectures. Both of those options seem less than ideal for most users.

Comment 19 by jesdisci...@gmail.com, May 3 2014

*raises hand from bleachers* I think there might be a hidden assumption that 32 and 64 bit installs come together, but why would everyone want both? And if I choose to install both separately, I expect them to behave as separate browsers.

Comment 20 by grt@chromium.org, May 3 2014

Can you elaborate a bit on why you would want both 32-bit and 64-bit Chrome
installed at the same time?

Comment 21 by jesdisci...@gmail.com, May 3 2014

The only scenario I can imagine is keeping 32-bit around for specific extensions that don't work on 64-bit. I'm actually more inclined to think I wouldn't want both, and therefore I don't want them to both be in the installer.

But, unless it's decided to drop support for 32-bit Chrome on 64-bit Windows, I would suggest that they be either:
* independent and tolerant of each other, or
* mutually exclusive installations.

If they're mutually exclusive, maybe have the uninstaller give an option to leave user data intact so the other installer can find and integrate it. This would reintroduce the potential problem of incompatible extensions.

This is of course with the "bleacher" caveat that I don't really know anything that's going on.

Comment 22 by jsc...@chromium.org, May 3 2014

I'm fine with the installer providing a command-line option to not remove an existing install on upgrade/downgrade. (wfh@ that shouldn't be much trouble, should it?) And a user who chooses that install option can run the win64 and win32 versions side-by-side with different profiles (via --user-data-dir). However, we can't support that as a default use case, because it simply wouldn't make sense to the vast majority of users, particularly when we start upgrading existing installs to 64-bit Windows (at some TBD point in the future).

Also, I'd note that architecture differences with extensions should not be an issue in the medium-term, as we plan to drop support for NPAPI by the start of 2015, and NaCl binaries must already be 64-bit on 64-bit Windows (due to the absence of proper segment support from the win64 kernel).

Comment 23 by grt@chromium.org, May 5 2014

Regarding c17: the idea of a setup.exe mode that does a partial uninstall is interesting. One thing to consider is that I believe there will be a significant number of installs that will update from an old version of Chrome that doesn't have the new uninstall logic, so the 32-to-64 transition may require two successive updates: Old32 -> New32 -> New64 where "New" contains the uninstall logic you've mentioned.

Comment 24 by wfh@chromium.org, May 5 2014

Side by side 32/64 with working Omaha updates is even more tricky - because there is a single Client id for Chrome, with a locally defined setting to determine which channel the client is on, it would not be possible to have simultaneously updating 64-bit and 32-bit installations sharing the same Client id.

The only way of achieving this would be to have one architecture on Canary (which uses its own Client id) and one on stable/dev/beta.

@grt - agree, the partial uninstaller will have to be pushed before the 64-bit if we are going to go this way.

Comment 25 by bugdroid1@chromium.org, May 22 2014

Project Member
------------------------------------------------------------------
r272213 | wfh@chromium.org | 2014-05-22T17:16:57.096882Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/base/win/registry_unittest.cc?r1=272213&r2=272212&pathrev=272213
   M http://src.chromium.org/viewvc/chrome/trunk/src/base/win/registry.cc?r1=272213&r2=272212&pathrev=272213
   M http://src.chromium.org/viewvc/chrome/trunk/src/base/win/registry.h?r1=272213&r2=272212&pathrev=272213

Add WOW64 support to DeleteKey.  Add DeleteEmptyKey to mimic SHDeleteEmptyKey.  Add lots of WOW64 tests.  Add a DeleteKey and a CreateKey test.

These additions are needed to support Win64 installer logic.

BUG= 338706 , 348626 
TEST=base_unittests --gtest_filter=Registry* on XP (x86), Vista (x86/x64), Win7 (x86/x64).
TEST=installer_util_unittests
R=cpu@chromium.org, grt@chromium.org

Review URL: https://codereview.chromium.org/275103012
-----------------------------------------------------------------

Comment 26 by bugdroid1@chromium.org, May 22 2014

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/714b1bc31b98f73a8c218c40ba6eaaf72ca03b1e

commit 714b1bc31b98f73a8c218c40ba6eaaf72ca03b1e
Author: wfh@chromium.org <wfh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Thu May 22 17:16:57 2014

Add WOW64 support to DeleteKey.  Add DeleteEmptyKey to mimic SHDeleteEmptyKey.  Add lots of WOW64 tests.  Add a DeleteKey and a CreateKey test.

These additions are needed to support Win64 installer logic.

BUG= 338706 , 348626 
TEST=base_unittests --gtest_filter=Registry* on XP (x86), Vista (x86/x64), Win7 (x86/x64).
TEST=installer_util_unittests
R=cpu@chromium.org, grt@chromium.org

Review URL: https://codereview.chromium.org/275103012

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272213 0039d316-1c4b-4281-b951-d872f2087c98

Comment 27 by bugdroid1@chromium.org, May 23 2014

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/a0ba7d7aac7980550e73951d427565a383965702

commit a0ba7d7aac7980550e73951d427565a383965702
Author: wfh@chromium.org <wfh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Fri May 23 15:27:59 2014

Add a flag to all of the registry related work items to specify whether to operate on the 64-bit or 32-bit hive on a WOW64 system.

Make DeleteRegKeyWorkItem call down into RegKey so WOW64 support works for delete work items.

All calls changed to use the Wow64_Default (0) parameter, so the behavior is identical.

This is prep for adding 64-bit support to the installer.

BUG= 348626 , 338706 
R=grt@chromium.org, grt
TBR=sky
TEST=installer_util_unittests

Review URL: https://codereview.chromium.org/282363003

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@272539 0039d316-1c4b-4281-b951-d872f2087c98

Comment 28 by bugdroid1@chromium.org, May 23 2014

Project Member
------------------------------------------------------------------
r272539 | wfh@chromium.org | 2014-05-23T15:27:59.511320Z

Changed paths:
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/copy_reg_key_work_item_unittest.cc?r1=272539&r2=272538&pathrev=272539
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/copy_reg_key_work_item.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_installer_util.gypi?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/install_util_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/install_util.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/chrome_installer.gypi?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/set_reg_value_work_item.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/registry_key_backup_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/registry_key_backup.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/mini_installer_test/installer_test_util.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/set_reg_value_work_item.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/mini_installer_test/installer_test_util.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/delete_reg_value_work_item_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/delete_reg_value_work_item.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/install_worker.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/delete_reg_key_work_item_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/delete_reg_key_work_item.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/create_reg_key_work_item_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/install.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/uninstall.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/work_item_list.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/work_item.cc?r1=272539&r2=272538&pathrev=272539
   D http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/copy_reg_key_work_item.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/work_item.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/set_reg_value_work_item_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/shell_util.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/install_util.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/registry_key_backup.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/delete_reg_value_work_item.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/app_command.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/install_worker_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/setup_main.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/create_reg_key_work_item.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/delete_reg_key_work_item.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/work_item_list_unittest.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/create_reg_key_work_item.h?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/work_item_list.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/mini_installer_test/test.cc?r1=272539&r2=272538&pathrev=272539
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/google_update_settings_unittest.cc?r1=272539&r2=272538&pathrev=272539

Add a flag to all of the registry related work items to specify whether to operate on the 64-bit or 32-bit hive on a WOW64 system.

Make DeleteRegKeyWorkItem call down into RegKey so WOW64 support works for delete work items.

All calls changed to use the Wow64_Default (0) parameter, so the behavior is identical.

This is prep for adding 64-bit support to the installer.

BUG= 348626 , 338706 
R=grt@chromium.org, grt
TBR=sky
TEST=installer_util_unittests

Review URL: https://codereview.chromium.org/282363003
-----------------------------------------------------------------

Comment 29 by wfh@chromium.org, May 24 2014

List of current registry writes, whether they go into the 32-bit hive (Wow6432Node on 64-bit OS) or just into the native hive (depends on the platform)

 * Anything Omaha related - 32-bit
 * Software\Policies - native
 * Windows Uninstall - 32-bit.
 * Active Setup - native
 * IELowRightsPolicy - native
 * Delete Execute - native
 * All file associations including class associations, and open-with keys - native (these get reflected by Windows anyway)
 * Media player registry key Software\\Microsoft\\MediaPlayer\\ShimInclusionList - native
 * Start menu internet associations - native
 * Software\RegisteredApplications - native

Comment 30 by bugdroid1@chromium.org, May 28 2014

Project Member
------------------------------------------------------------------
r273108 | wfh@chromium.org | 2014-05-28T01:54:38.225143Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/gcapi/gcapi_last_run_test.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/gcapi/gcapi_reactivation_test.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/gcapi/gcapi_reactivation.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/installation_state.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/compat_checks.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/install_util.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/shell_util.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/mini_installer/mini_installer.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/google_chrome_distribution.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/app_command.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/helper.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/product.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/install_worker.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/setup_main.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/gcapi/gcapi.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/setup/uninstall.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/installer_state.cc?r1=273108&r2=273107&pathrev=273108
   M http://src.chromium.org/viewvc/chrome/trunk/src/chrome/installer/util/google_update_settings.cc?r1=273108&r2=273107&pathrev=273108

Omaha configuration parameters now use Wow6432Node (32-bit registry) on 64-bit installs.  GCAPI configuration parameters also use these same accesses since they read/write the same data.

Also, force installation of Win64 into C:\Program Files (x86) until the code is added to support moving the files to the right place during upgrade and downgrade.  Uninstall information will remain stored in the 32-bit registry (even on 64-bit) until the installation location is changed.

This fixes system installs on Win64.

BUG= 338706 
R=grt@chromium.org

Review URL: https://codereview.chromium.org/300593002
-----------------------------------------------------------------

Comment 31 by bugdroid1@chromium.org, May 28 2014

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f7c566f7c49967f6bd468400acf9515766a67c42

commit f7c566f7c49967f6bd468400acf9515766a67c42
Author: wfh@chromium.org <wfh@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed May 28 01:54:38 2014

Omaha configuration parameters now use Wow6432Node (32-bit registry) on 64-bit installs.  GCAPI configuration parameters also use these same accesses since they read/write the same data.

Also, force installation of Win64 into C:\Program Files (x86) until the code is added to support moving the files to the right place during upgrade and downgrade.  Uninstall information will remain stored in the 32-bit registry (even on 64-bit) until the installation location is changed.

This fixes system installs on Win64.

BUG= 338706 
R=grt@chromium.org

Review URL: https://codereview.chromium.org/300593002

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@273108 0039d316-1c4b-4281-b951-d872f2087c98

Comment 32 by bugdroid1@chromium.org, May 28 2014

Project Member
Labels: merge-merged-2017
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/fd207cb679d0c1516b7bbd8c8c7949e496ae3f00

commit fd207cb679d0c1516b7bbd8c8c7949e496ae3f00
Author: dxie@chromium.org <dxie@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>
Date: Wed May 28 03:12:43 2014

Revert 273108 "Omaha configuration parameters now use Wow6432Nod..."

> Omaha configuration parameters now use Wow6432Node (32-bit registry) on 64-bit installs.  GCAPI configuration parameters also use these same accesses since they read/write the same data.
> 
> Also, force installation of Win64 into C:\Program Files (x86) until the code is added to support moving the files to the right place during upgrade and downgrade.  Uninstall information will remain stored in the 32-bit registry (even on 64-bit) until the installation location is changed.
> 
> This fixes system installs on Win64.
> 
> BUG= 338706 
> R=grt@chromium.org
> 
> Review URL: https://codereview.chromium.org/300593002

TBR=wfh@chromium.org

Review URL: https://codereview.chromium.org/297233010

git-svn-id: svn://svn.chromium.org/chrome/branches/2017/src@273138 0039d316-1c4b-4281-b951-d872f2087c98

Comment 33 by bugdroid1@chromium.org, May 28 2014

Project Member
------------------------------------------------------------------
r273138 | dxie@chromium.org | 2014-05-28T03:12:43.193872Z

Changed paths:
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/google_chrome_distribution.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/app_command.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/helper.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/product.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/setup/install_worker.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/setup/setup_main.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/gcapi/gcapi.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/setup/uninstall.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/installer_state.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/google_update_settings.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/gcapi/gcapi_last_run_test.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/gcapi/gcapi_reactivation_test.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/gcapi/gcapi_reactivation.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/installation_state.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/compat_checks.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/install_util.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/util/shell_util.cc?r1=273138&r2=273137&pathrev=273138
   M http://src.chromium.org/viewvc/chrome/branches/2017/src/chrome/installer/mini_installer/mini_installer.cc?r1=273138&r2=273137&pathrev=273138

Revert 273108 "Omaha configuration parameters now use Wow6432Nod..."

> Omaha configuration parameters now use Wow6432Node (32-bit registry) on 64-bit installs.  GCAPI configuration parameters also use these same accesses since they read/write the same data.
> 
> Also, force installation of Win64 into C:\Program Files (x86) until the code is added to support moving the files to the right place during upgrade and downgrade.  Uninstall information will remain stored in the 32-bit registry (even on 64-bit) until the installation location is changed.
> 
> This fixes system installs on Win64.
> 
> BUG= 338706 
> R=grt@chromium.org
> 
> Review URL: https://codereview.chromium.org/300593002

TBR=wfh@chromium.org

Review URL: https://codereview.chromium.org/297233010
-----------------------------------------------------------------

Comment 34 by stan...@gmail.com, Aug 27 2014

"Also, force installation of Win64 into C:\Program Files (x86) until the code is added to support moving the files to the right place during upgrade and downgrade." 

Is there a new bug for it already? Many users are confused by that fact and are even holding off installing the 64bit Version because of that (...people...)

Comment 35 by wfh@chromium.org, Aug 27 2014

Re: #34 - This bug covers the upgrade 64->32 and 32->64 scenarios.  Issue 380177 might be the bug you're looking for.

Comment 36 by wfh@chromium.org, Aug 28 2014

 Issue 338710  has been merged into this issue.

Comment 37 by wfh@chromium.org, Aug 28 2014

Status: Fixed
Added support for both 32->64 and 64->32 and verified that user->system still works for both of these scenarios.

Comment 38 by bugdroid1@chromium.org, Oct 9 2014

Project Member
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c

commit 9353beb978ce832381ad4869dc4eb9822c9dc11c
Author: wfh <wfh@chromium.org>
Date: Thu Oct 09 04:31:38 2014

Allow Registry Iterator functions to use a specified WOW64 mode when iterating.

Also fix up any callers to access the correct hive (32 or 64) depending on
where the data is, or whether the hive is Redirected, Shared, or Reflected
as specified in MSDN

http://msdn.microsoft.com/en-us/library/windows/desktop/aa384253.aspx

BUG= 338706 , 408018 
TEST=Follow steps in 408018 and make sure extension gets added on 64-bit Chrome
TEST=base_unittests --gtest_filter=Registry*

Review URL: https://codereview.chromium.org/616173003

Cr-Commit-Position: refs/heads/master@{#298758}

[modify] https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c/base/win/registry.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c/base/win/registry.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c/chrome/browser/extensions/external_registry_loader_win.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c/chrome/installer/util/app_commands.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c/chrome/installer/util/app_commands.h
[modify] https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c/chrome/installer/util/installation_state.cc
[modify] https://chromium.googlesource.com/chromium/src.git/+/9353beb978ce832381ad4869dc4eb9822c9dc11c/content/common/plugin_list_win.cc

Sign in to add a comment