Error when installing Chrome extension from file: CRX_HEADER_INVALID - google-chrome

I am trying to install extension on Google Chrome and I get this error when I drag and drop a .crx file onto Extensions page: Package is invalid: CRX_HEADER_INVALID.
How can I install it?

Change file type .crx to .zip and extract zip file to a folder.
Open the extensions page in Chrome or navigate to “chrome://extensions” from the address bar.
Check the “Developer mode” to enable the developer mode.
Click “Load unpacked” and select folder of extracted zip file;

This problem was reported on Mar 13, 2019 and closed as an intended behavior.
According to Chrome Enterprise release notes:
All extensions must be packaged with CRX3 format in Chrome 75
Starting with Chrome 75, all force-installed extensions will need to be packaged in the CRX3 format. Privately hosted extensions that were packaged using a custom script or a version of Chrome prior to Chrome 64.0.3242.0 must be repackaged. If your organization is force-installing privately hosted extensions packaged in CRX2 format and you don’t repackage them, they’ll stop updating in Chrome 75. And, new installations of the extension will fail. See ExtensionAllowInsecureUpdates.
However, it seems like in Chrome 73 Google forced this change for new installations already and introduced a policy option for updates only.
So, after unpacking extension in an old format (as described in another answer) you could pack it back with your current Chrome version and then install it as usual. This way you won't have to always keep that extension unpacked somewhere.

Related

Getting package is invalid `crx_required_proof_missing` when installing my own, signed extension

I'm building an internal extension for my company. Since it's an internal tool, I don't want to publish it on the Chrome Web Store.
To be able to self-host the browser extension, I'm doing the following steps:
(before): I created a .pem to sign the extension (+ keep a constant extension id across updates)
I'm building the source code
I'm packing and signing the extension with chrome using chromium --pack-extension=./build_dir/ --pack-extension-key=./key.pem
I'm updating the update.xml file to reflect the new version number
I uploaded the signed .crx and update.xml
I have a website with a link pointing to the .crx file. The issue is the following: when clicking on it, the file is downloaded and chrome understands it's a browser extension. Then: I'm getting "Package is invalid crx_required_proof_missing".
What am I missing?
What can I do to be able to install a self-hosted extension after downloading the extension?
Notes:
I am aware that I can extract the .crx content and load the extension as "unpacked", but that's not what I'm looking for: deployment will be more complex (more manual steps) and updates will not be automatic.
The .crx file seems to be served with the right headers and is publically accessible. The update file is also correct and accessible.
Info:
Yes, the manifest contains properties key and update_url.
When dragging/dropping the .crx file in chrome://extensions (in dev mode): the extension is installed but I'm getting a red warning on the extension card: "This extension is not listed in the Chrome Web Store and may have been added without your knowledge"
When dragging/dropping the .crx file in chrome://extensions (without dev mode):
The extension is not installed and I'm getting: "Package is invalid crx_required_proof_missing".
When dragging/dropping the .crx file in chrome://extensions (with CHROMIUM and dev mode):
The extension is properly installed and working.

Installing Chrome Extension via ExtensionInstallForcelist without Chrome Web Store

I try to auto-install a chrome extension on a WIN10 device that have no connection to the internet and thus can not access the Chrome Web Store. So uploading the extension to the CWS is no option. The extension exists as a crx file on a server in a network and on the device.
On Chrome Versions 59 and lower I could install the extension via settings in the registry. When Chrome was started, the user was ask if he wants to install the extension.
For this I used the registry key ExtensionInstallWhitelist and defined the path and version of the extension under the key "[...]/Google/Chrome/Extensions/[ExtensionID]".
But since Version 60 the extension does not appear in Chrome anymore. So I tried to auto-install the extension via an Active Directory domain policy.
I have imported the chrome policy templates and configured the entry ExtensionInstallForcelist (http://www.chromium.org/administrators/policy-list-3#ExtensionInstallForcelist) in the group policy editor. This policy setting is listed on the chrome://policy page in Chrome. But the extension does not appear in Chrome. The ExtensionInstallForcelist entry contains "[ExtensionID];[url where the crx file resides]". I also tested this with an url to an "Update Manifest XML document" which points to the crx file. Neither of them worked.
Does anyone know, if Chrome 60+ still supports this?
Is my configuration incorrect?
Any help will be appreciated, thanks!

Offline google chrome extensions

Background:
I manage an offline network of workstations.
I have written a chrome extension that needs to be in the browser for our webapp to function
I have published it through the chrome store (but not made it public)
Question:
How do I install this extension without the internet
What I've tried:
Windows GPO: Requires the update URL to be http://clients2.google.com/service/update2/crx
Windows Registry: same URL problem
Unpacked extensions: prompts users, requires developer tools, and disables the extension when chrome is restarted.
install crx: disables the extension when chrome is restarted.
Any other ideas, or ways around this?
Chrome version 48.
I was able to do this on a regular chrome installation by doing the following:
Download the extension in crx format - how to download a crx file from the chrome web store for a given id
Unzip the crx file
I had to rename the _metadata folder to metadata
Open the chrome extensions page
Enable Developer mode
Click "Load unpacked extension..."
Select the unzipped folder
This worked for me when I needed to install Advanced REST client.
I have just:
Downloaded the add-on CRX file using http://crxextractor.com/
Opened the "extensions" page on Chrome.
Drag-and-dropped the CRX file onto the "extensions" page.
I got it to work actually, sadly forgot about this post until now.
I had the Business version installed as #gerardnimo suggested.
What I wound up doing is
1) setup and IIS server to serve both the CRX and the update xml. based on this guide. https://developer.chrome.com/extensions/autoupdate
2) Then i was able to install the extension via group policy.
Here is a thread that I've found. He suggests that you can use Google Chrome for Business.
Since September 3, 2015, Installing Chrome extensions off-line no longer work (and here ) due to Google trying to prevent malicious extensions being downloaded and installed. To install an extension off-line today, require you to install a signed pre-packaged full Chrome install, using Googles Chrome for Business. This functionality is controlled by a policy list. Or according to this post, you can use their Dev or Canary channels to run any extension. Their latest builds can be found here

Install Chrome extension form outside the Chrome Web Store

I have developed a Chrome extension and I have packed it.
I sent my extension to some people to try it, but Chrome started to block extensions that it does not find in the store.
Is there any way to install my extension without getting blocked by Chrome?
EDIT
Is there any way to install extension as developer mode? I read that only extensions that installed in developer mode will not blocked.
For regular Windows users who are not skilled with computers, it is practically not possible to install and use extensions from outside the Chrome Web Store.
Users of other operating systems (Linux, Mac, Chrome OS) can easily install unpacked extensions (in developer mode).
Windows users can also load an unpacked extension, but they will always see an information bubble with "Disable developer mode extensions" when they start Chrome or open a new incognito window, which is really annoying. The only way for Windows users to use unpacked extensions without such dialogs is to switch to Chrome on the developer channel, by installing https://www.google.com/chrome/browser/index.html?extra=devchannel#eula.
Extensions can be loaded in unpacked mode by following the following steps:
Visit chrome://extensions (via omnibox or menu -> Tools -> Extensions).
Enable Developer mode by ticking the checkbox in the upper-right corner.
Click on the "Load unpacked extension..." button.
Select the directory containing your unpacked extension.
If you have a crx file, then it needs to be extracted first. CRX files are zip files with a different header. Any capable zip program should be able to open it. If you don't have such a program, I recommend 7-zip.
These steps will work for almost every extension, except extensions that rely on their extension ID. If you use the previous method, you will get an extension with a random extension ID. If it is important to preserve the extension ID, then you need to know the public key of your CRX file and insert this in your manifest.json. I have previously given a detailed explanation on how to get and use this key at https://stackoverflow.com/a/21500707.
For Windows, you can also whitelist your extension through Windows policies. The full steps are details in this answer, but there are quicker steps:
Create the registry key HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist.
For each extension you want to whitelist, add a string value whose name should be a sequence number (starting at 1) and value is the extension ID.
For instance, in order to whitelist 2 extensions with ID aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa and bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb, create a string value with name 1 and value aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, and a second value with name 2 and value bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb. This can be sum up by this registry file:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome]
[HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\ExtensionInstallAllowlist]
"1"="aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
"2"="bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb"
EDIT: actually, Chromium docs also indicate how to do it for other OS.
EDIT (06/05/2022): ExtensionInstallWhitelist is deprecated since Chrome 100, it has been renamed to ExtensionInstallAllowlist (answer updated)

Add external extension by using registry

I use Windows 7(64bit) and repeat steps in Google Document.
This is what I added in register.
In HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Google\Chrome\Extensions\nbfjanngloflombfddlmkgnambnfhgjc
path="C:\Extension.crx"
version="2.1"
But extension isn't install.
Before testing .crx file distribution,
I installed and uninstalled this extension with unpacked files many times by UI(chrome://extensions) for development and tested setting policy by using register. (But I removed all of them now.)
Does it cause any problem?
But when I tested same thing in another clean PC(Windows XP 32bit) nothing is changed, too.
I already checked some common mistakes in Google Document several times, but I can't find any mistakes.
- Not specifying the same id/version as the one listed in the .crx
- Key created in the wrong location in the registry
- Registry entry points to the wrong path to the .crx file (or path specified but no filename)
- Permissions problems on a network share
Are there other common mistakes I should check to install external extension?
According to this page - https://developer.chrome.com/extensions/external_extensions -
it is no longer possible to use the registry method to install locally-hosted .crx files.
in fact, the only allowed extension are those from Google's Extension gallery.
See a quote below from Google's policy page:
An extension that's installed automatically is known as an external extension. Google Chrome supports two ways of installing external extensions:
-Using a preferences JSON file (Mac OS X and Linux only)
-Using the Windows registry (Windows only)
Both ways support installing an extension hosted at an update_URL. In the Windows registry, the update_URL must point to the Chrome Web Store where the extension is hosted.
The extension-ID cannot be chosen at random.
I've installed your .crx file in Chromium 18 (Linux), and Chrome 18 (Windows 7 in VirtualBox), and the correct extension-ID is: lhmigopickaaleaaelbppeabnbdgcdhe
The version number has to match. In the manifest.json file, in the extension, I see "version": "1.0". So, the version entry in the registry has to be 1.0.
I was not able to install the extension via the registry using the steps from the Documentation. I've found two right ways to install the extension through the registry. Create a .reg file, and paste the text below to install the extension:
set_page_color_chrome-extension.reg (based on this file, md5: 10a1b95c249a2481bc88d3d1aead0e33).
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Google\Chrome\Extensions\lhmigopickaaleaaelbppeabnbdgcdhe]
"version"="1.0"
"path"="C:\\set_page_color.crx"
Replace HKEY_LOCAL_MACHINE with HKEY_CURRENT_USER if you're running in permission trouble, or if you want to install the extension only for the current user.