Can a greasemonkey-type userscript be packaged as a Chrome extension?

mix picture mix · Jul 14, 2012 · Viewed 11.8k times · Source

Today Google changed the way userscripts are installed in Chrome. No longer can you just click on a link that contains one, confirm a couple dialog boxes and have it installed. Now you have to download the script with Save As..., open the Finder/Explorer window that contains it, open the Extensions window in Chrome, then drag the script to the extensions window. IOW, a big PITA.

Presumably the alternative is to package as a Chrome extension and get it on the Chrome webstore. However, I can't find any information anywhere that suggests you can package a userscript as an extension. Is this possible? If yes, any new limitations, links to docs, or other tips?

Answer

Brock Adams picture Brock Adams · Jul 14, 2012

Two things first:

  1. This new behavior of Chrome seems too restricting and draconian for userscripts. If you agree, please make your displeasure known to Google. (Userscripts are not quite as dangerous, or powerful, as full-fledged extensions.)

  2. Rather than trying to package extensions (which seems like a low benefit-to-hassle activity), Chrome provides two mechanisms to (selectively) disable this new annoyance:

    1. Configure Chrome to start with the --enable-easy-off-store-extension-install parameter.

    2. Add configuration keys to allow installations from specific sites:
      For example, add this entry to the Windows registry:

      Software\Policies\Google\Chrome\ExtensionInstallSources\1 = "http://userscripts.org/*"
      

      To allow easy installation from that useful script clearinghouse.



Packaging a userscript as an extension (Verified on the latest release, version 20.0.1132.57 and subject to change):

  1. Create a script folder and a manifest for your userscript, as in the "Controlling the Script and name" section of this answer.

  2. From the Chrome Extensions page, activate Developer mode: dev mode

  3. Click Pack Extension. pack extension

  4. Enter the folder path, created in step 1, and click Pack Extension: pack ext, enter fields

  5. Note that the new extension file (HelloWorld.crx) and key file (HelloWorld.pem) are created in the parent directory (C:\MyChromeScripts\). pack results

  6. Now the extension can be installed like any other, or uploaded to the Chrome Web Store.