Load unpacked Chrome extension programmatically

2019-04-06 16:36发布

问题:

Is it possible to load and unload unpacked Chrome extensions from the Command Line?

回答1:

Yes, although only temporarily *:

chromium --load-extension=path/to/extension

If you want to load multiple extensions, just separate the path by a comma:

chromium --load-extension=path/to/extension,path/to/another/extension

Replace chromium with chrome.exe (or whatever is used to start your Chrome/Chromium browser).

* When you close the browser, and starts it again without the command line argument, then the extension will disappear from the list of installed extensions.



回答2:

It is possible to install using --load-and-launch-app=path/to/app

it is working for both apps and extensions. (I tested on chrome Version 35.0.1916.153 m)

I am not sure that there is another command for uninstalling. I found this list of chromium commands which is very useful.



回答3:

3 ways install/use Chrome extensions offline:


Method A: Drag & Drop (Simple)

  • Drag & drop ABP.crx on: chrome://extensions to install

Pros: Installs web & non-westore extensions

Cons: Google quickly & permanently disables non-webstore extensions


Method B: Load unzipped extension/7zip to unzip/ABP used as example

  • UnZip ABP.crx: C:\ABP
  • Load 1: Shortcut: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --load-extension="C:\ABP"
  • Load 2: "C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --load-extension="C:\ABP,C:\IEtab"

Pros: Permanently enables non-webstore extensions, so long as your using custom shortcut

Cons: Extensions only load via custom shortcut

~~~~~~~~~~~~~~~ 3 fixes for extracted extension errors: ~~~~~~~~~~~~~~~

  • Won't load: Create shortcut to folder containing manifest file, for example: akkmfdhlogbapbcgojknhfgppcionopk\5.4.7_0

  • Metadata: Extension\delete _metadata folder

  • Disabled: Open manifest.json with notepad & locate:

"name": "MSG_appName",

"offline_enabled": true,

Create: "offline_enabled": true, if it doesn't exist


Method C: WinRar SFX (Mass install local/non-local profile apps)

Chrome extracts all plugins to: %LocalAppData%\Google\User Data\Default\Extensions

Extensions list by web-store ID. Example: ABP=cfhdojbkjhnklbpkdaibdccddilifddb

ABP needs 3 files: Some extensions may only require 2

  • Install all plugins needed, remove all not needed. Exit Chrome.
  • Backup: %LocalAppData%\Google to: C:\Backup\Google
  • Copy: %LocalAppData%\Google\Chrome\User Data\Default\Extensions to: C:\Google\Chrome\User Data\Default\Extensions
  • Copy: %LocalAppData%\Google\Chrome\User Data\Default\secure preferences to: C:\Google\Chrome\User Data\Default\secure preferences
  • Copy: %LocalAppData%\Google\Chrome\User Data\Default\Local Extension Settings to: C:\Google\Chrome\User Data\Default\Local Extension Settings
  • Create WinRar SFX: Extract C:\Google to: %LocalAppData%\Google

(ABP stores settings: %LocalAppData%\Google\User Data\Default\Local Extension Settings)

Pros: Mass install web & non-webstore apps, from local/nonlocal pc's

Cons: Google quickly & permanently disables non-webstore extensions

When SFX imports secure preferences file, it replaces old extensions/settings with imported

Restore Chrome Backup:

  • Exit Chrome & delete %LocalAppData%\Google\Chrome
  • Copy C:\Backup\Google to: %LocalAppData%\Google
  • Launch Chrome


回答4:

Try to kill all existing instances of Chrome from task manager : TASKKILL /IM chrome.exe /F and then chrome.exe --load-extension=path/to/extension should work

This working C# code for console application can help

class Program
    {
        static void Main(string[] args)
        {
            Process cmd = new Process();

            cmd.StartInfo.FileName = "cmd.exe";
            cmd.StartInfo.RedirectStandardInput = true;
            cmd.StartInfo.RedirectStandardOutput = true;
            cmd.StartInfo.CreateNoWindow = true;
            cmd.StartInfo.UseShellExecute = false;

            cmd.Start();
            //kill all chrome instances
            cmd.StandardInput.WriteLine("TASKKILL /IM chrome.exe /F");
            //path to chrome.exe
            cmd.StandardInput.WriteLine("cd C:\\Program Files (x86)\\Google\\Chrome\\Application");
            //load extension
            cmd.StandardInput.WriteLine("chrome.exe --load-extension={path-to-extension}");

            cmd.StandardInput.Flush();
            cmd.StandardInput.Close();
            Console.WriteLine(cmd.StandardOutput.ReadToEnd());

        }
    }