Packaging Series: Google Chrome Enterprise

Written by Alex Marin · March 27th, 2019

Google Chrome is one of the most popular browsers on the market at the moment. For enterprise use and deployment, Google offers the Chrome browser as an MSI installer.

The new arrival of MSIX technology from Microsoft lets you repackage Win32 apps and deploy them to the Windows store or sideload them through different methods in your infrastructure.

In this article, we have a look on how to repackage the Chrome Enterprise MSI to MSIX using Advanced Installer.

Repackaging Chrome

In order to repackage Google Chrome Enterprise, we need to download the MSI from here, have a clean virtual machine and Advanced Installer installed.

If we open the MSI with Advanced Installer, we can see that there are no files, shortcuts, registry or services present. So how does Chrome get installed?

Let’s look closely in the Custom Actions section. We can see that we have a Custom Action called DoInstall which calls the GoogleChromeInstaller binary with the arguments defined in the BuildInstallCommand set property.


That means that the MSI is only a wrapper for the EXE that is stored in the Binary table and it’s executed silently.

If this package would have been standard MSI installing files, registry and the other resources you could have simply switched to Builds page in Advanced Installer, and generated the MSIX package with a single click, without repackaging it.

MSIX technology does not support this kind of scenarios (i.e. wrapping non-standard EXEs), which means that we have to use the Advanced Repackager to capture the installation. Here is a summary of the steps described in the tutorial linked above.

On the virtual machine:

  • Install Advanced Installer, if you don’t have it installed
  • Open Advanced Repackager
  • Click Capture Setup
  • Browse and select the Google Chrome Enterprise MSI
  • Press Start Local from the toolbar
  • Select the location where the project is saved
  • Install Chrome
  • Check MSIX/APPX Package in the top left corner
  • Click Open in Advanced Installer


Click on Google Chrome and set the AppList entry to Default. This will create the Title (shortcut) in the start menu after installation. If we check what other information we have in the package, we see that GoogleChromeElevationService is present.

MSIX does not support any kind of NT Services, these are excluded when the package is built.

What is Google Chrome Elevation Service?

'Currently, the elevation service is only installed for Google Chrome builds. The primary use case at the moment for the service has to do with the Chrome recovery component. The recovery component is registered only for Google Chrome builds. It repairs the Chrome updater (Google Update) when the algorithm detects that Chrome is not being updated. Since Chrome could be installed per-system or per-user, an elevation service is needed to repair the code in the per-system install case.'

In short, if Chrome is installed per-user and it needs elevation to update, Chrome Elevation Service comes into play.

Scheduled tasks are also excluded from MSIX. Google Chrome installs two scheduled tasks that quote: 'Keeps your Google software up to date. If this task is disabled or stopped, your Google software will not be kept up to date, meaning security vulnerabilities that may arise cannot be fixed and features may not work. This task uninstalls itself when there is no Google software using it.'


Because scheduled tasks are excluded from the package and the updates are disabled, the elevation service is not needed.

Let’s build the MSIX and try to install it. After a double-click on the MSIX we see that the AppInstaller GUI shows up, it’s loading for a bit and closes.

Upon further investigation, we found that if you delete the COM interface, found in COM page in Advanced Installer, {463ABECF-410D-407F-8AF5-0DF35A005CC8} the application will install.

This interface points to the TypeLib {463ABECF-410D-407F-8AF5-0DF35A005CC8} which is related to the ElevationService. Since the service is excluded from our package, the deletion of the interface does not influence the functionality of the application.


Let’s build again and try to install the MSIX. After the change, we can see that the installer works well and the application launches successfully.


Video Tutorial


Conclusion

There you go, aside from some minor changes that you have to do, repackaging Chrome Enterprise as an MSIX with Advanced Installer is fast and easy.

Yes, you do lose the elevation service and auto-updates from the package by going the MSIX route, but in most enterprise environments auto-updates are disabled by default.

Comments: