For Developers‎ > ‎

A short trip through the Chromium installer's mind!

Installed components

Registry Entries

Syntax:
<variable to be defined later>
{for all things matching this definition}
[RegistryValue]
(Wow6432Node\) -- Only on 64-bit versions of Windows.

Entry types:
  • AppId entries (Windows 8+ only):
  • ProgId entries:
  • DelegateExecute COM registration entries (Windows 8+ only):
    • <root>\Software\Classes\(Wow6432Node\)CLSID\{A2DF06F9-A21A-44A8-8A99-8B9C84F29160}
  • App Registration entries:
    • <root>\Software\Microsoft\Windows\CurrentVersion\App Paths\chrome.exe (for ShellExecute to be able to find chrome.exe without needing to modify PATH; MSDN).
    • <root>\Software\{file_assoc}\OpenWithProgids[ChromiumHTML<suffix>] (to show up in "Open With" in the context menu for supported file types; MSDN).
  • Shell Integration entries (can only be registered in <root>==HKLM pre-Win8):
    • <root>\Software\Clients\StartMenuInternet\Chromium<suffix> (StartMenuInternet on MSDN)
      • Capabilities (URL + File Associations) and other information (put under this entry, but could theoretically be anywhere in the registry; MSDN).
    • <root>\Software\RegisteredApplications[Chromium<suffix>] (to appear in "Default Programs" and have the ability to become default browser; MSDN).
  • XP-style default browser entries:
    • <root>\Software\Classes\{file_association | protocol_association}[Default] = ChromiumHTM<suffix>
      • These are not necessary post-XP to be the default browser, but many programs are still hardcoded to lookup these values.
  • Protocol specific entries:
    • <root>\Software\Client\StartMenuInternet\Chromium<suffix>\Capabilities\URLAssociations[<protocol>]
  • Active Setup entries (Google Chrome system-level installs only -- Active Setup design doc):
    • HKEY_LOCAL_MACHINE\Software\(Wow6432Node\)Microsoft\Active Setup\Installed Components\{8A69D345-D564-463c-AFF1-A69D9E530F96}
  • Uninstall entries:
    • <root>\Software\(Wow6432Node\)Microsoft\Windows\CurrentVersion\Uninstall\Chromium (to show up in "Programs and Features" or "Add or Remove Programs" in the Control Panel)
Note: <root>\Software\Classes is also known as HKEY_CLASSES_ROOT

For Google Chrome replace the following values as indicated:
  • Chromium --> Chrome (except for Protocol specific entries and Uninstall entries)
  • Chromium --> Google Chrome (for Protocol specific entries and Uninstall entries)
  • ChromiumHTM --> ChromeHTML
  • StartMenuInternet\Chromium --> StartMenuInternet\Google Chrome
  • {A2DF06F9-A21A-44A8-8A99-8B9C84F29160} --> {5C65F4B0-3651-4514-B207-D10CB699B14B}

System-level installs

  • <suffix> = ""
  • At Install:
    • All entry types fully registered in <root> = HKEY_LOCAL_MACHINE
    • If making Chromium default machine-wide:
      • Register XP-style default browser entries in <root>=HKEY_CURRENT_USER
  • + When making Chromium default for a user:
    • Register XP-style default browser entries in <root>=HKEY_CURRENT_USER
    • (on top of incanting Windows into making Chromium the default browser, but that doesn't require any further registrations post-XP).
  • + When making Chrome the default handler for some protocol:
    • Register protocol specific entries with <root>=HKEY_LOCAL_MACHINE if not already registered (requires UAC)
    • Register XP-style default entries for this protocol with <root>=HKEY_CURRENT_USER

User-level installs

  • <suffix> = .<base32 encoding of the md5 hash of the user’s SID> (which is always 26 characters (27 with the dot))
    • Exception (for backward compatibility with old registration schemas):
      • <suffix> = <none> if the user already has the unsuffixed registration in HKLM from the old-style registrations.
      • <suffix> = .<username> if the user already has the username suffixed registration in HKLM from the old-style registrations.
      • Note: AppId Entries are always suffixed with the new-style suffixed (as they were introduced after the registration schema changes).
  • At install:
    • Install AppId, ProgId, and App Registration entries in <root>=HKEY_CURRENT_USER.
    • On Windows 8+ also install Shell Integration entries in <root>=HKEY_CURRENT_USER.
    • Before Windows 8, if |elevate_if_not_admin| (which is true when triggering the "make chromium default" flow):
      • Elevate (UAC) and register all entry types in <root>=HKEY_LOCAL_MACHINE.
  • When making Chromium default:
    • If some registration are missing (i.e. Shell Integration entries before Windows 8 if the user has not yet elevated Chromium to complete registration):
      • Elevate (UAC) and register all entry types in <root>=HKEY_LOCAL_MACHINE.
    • Register XP-style default browser entries in <root>=HKEY_CURRENT_USER
  • When making Chrome the default handler for some protocol:
    • Register protocol specific entries with <root>=HKEY_LOCAL_MACHINE (HKEY_CURRENT_USER on Win8+) if not already registered (requires UAC before Win8)
    • Register XP-style default entries for this protocol with <root>=HKEY_CURRENT_USER

Shortcuts

User-level installs

  • At install:
    • Create Start Menu shortcut (Start Screen on Win8)
      C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Chromium\Chromium.lnk
    • Pin shortcut to taskbar (Windows 7+)
      C:\Users\<username>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
    • Create desktop shortcut
      C:\Users\<username>\Desktop
    • Create Quick Launch shortcut
      C:\Users\<username>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch

System-level installs

  • At install:
    • Create all-users Start Menu shortcut (in Win8 this will only show on the Start Screen for the user running the install (i.e., not for new users); Microsoft claims that this is by design).
      C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Chromium\Chromium.lnk)
    • Create all-users Desktop shortcut (shows on every user’s Desktop, but if any user deletes it, it’s gone for all...)
      C:\Users\Public\Desktop\Chromium.lnk
  • At install (if the installer is running in a given user's context; i.e., not for the MSI which runs as SYSTEM):
    • Create per-user Quick Launch shortcut
      C:\Users\<username>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch
    • Pin shortcut to taskbar (WIndows 7+)
      C:\Users\<username>\AppData\Roaming\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar
  • Upon the next login of each other user (when Active Setup triggers Chromium's Active Setup for that user and only if that user has yet to run Chrome on this machine):
    • Create per-user shortcuts that do not have a matching all-users shortcut.
      • Per-user Quick Launch shortcut.
      • Pin shortcut to taskbar (Windows 7+).
      • Per-user desktop shortcut (if the all-users Desktop shortcut is absent).
      • Per-user Start Menu shortcut (if the all-users Start Menu shortcut is absent).
Master Preferences
  • do_not_create_desktop_shortcut: Prevents creation of the Desktop shortcut in all scenarios above (including Active Setup).
  • do_not_create_quick_launch_shortcut: Prevents creation of the Quick Launch shortcut (Windows XP only) in all scenarios above (including Active Setup).
  • do_not_create_taskbar_shortcut: Prevents creation of the taskbar pin (Windows 7+) in all scenarios above (including Active Setup).
  • do_not_create_any_shortcuts: Supersedes any other preference and prevents creation of all shortcuts in all scenarios above (including Active Setup).
For Google Chrome replace Chromium by Google Chrome above.

Note that shortcuts didn't use to behave this way, here is the design doc of the latest shortcut refactoring.


Comments