What is the easiest way to find Chrome extension's id in a setup application? - google-chrome

I need to setup a native application which talks to a Chrome extension.
For that I am creating a setup, but I need the extension's id to be added in the native application's manifest file. That id says which extensions are allowed to talk with that native application.
How to get the extension id, assuming the user manually installs the extension by dragging and dropping.
Btw, To my knowledge installing an external chrome extension (no chrome web store) silently is close to impossible. I highly appreciate if someone has any solution for that, too.

The recommended flow would be to keep the extension in the Web Store (possibly unlisted if it does not work without the module), silently queue it for installation using the registry or other platform-specific method, and then warn the user to accept the install in the dialog on next browser restart. This is as close to "silent" as it gets.
If you absolutely have to distribute the extension externally (and drag&drop install will probably not work), you can pin the ID by setting the "key" field in the manifest. See this question for ways of doing so.

Related

How to distribute a Native Messaging Host with Chrome Extension

I developed an extension that communicates with a host (also developed by me), as provided by the https://developer.chrome.com/extensions/nativeMessaging example, and it works just fine.
Now I need to distribute my host with my extension and I couldn't find in Distributions how can I package my host along my extension. Are there any examples of how can I do it? Or must I distribute my host elsewhere?
I couldn't find in Distributions how can I package my host along my extension.
Support for this has been requested and turned down by Chrome developers.
I would recommend reading that thread for some insights in how native hosts are supposed to work according to them.
Or must I distribute my host elsewhere?
That's the idea. You need an installer hosted somewhere else.
wOxxOm's proposal is not going to work seamlessly, since a Native host cannot function without registering it with the system (e.g. adding a registry key on Windows) - something an extension cannot trigger.
It's possible you can still follow the bundle-download-open route for an installer, but I imagine it may get frowned upon by Chrome Web Store.

How to create installer for a Google Chrome Extension

I have developed a Google Chrome Extension that I need to automate installation for my users.
I have published it in Google Web Store but I don't want a user to search for it in order to install, because this extension is part of other development, including a C# application.
I am creating an installer that installs the C# application but I need to add the automatic installation for my extension. How can I do it?
Yes, you can. The procedure is described in the docs.
Summary:
The installer adds a registry entry that contains the extension ID.
Upon next Chrome restart (you may want to ask the user to do it), the extension will be downloaded and then the user will be prompted whether he/she wants to install it.
If yes, you live happily ever after, with the extension bearing "Installed by a third-party" mark in the extension list.
If no, the extension will be disabled, and you cannot enable it yourself (you have to ask the user to do that by going to chrome://extensions/ or the CWS listing)
If the user ever uninstalls the extension, it will be blacklisted from ever attempting that install procedure on this Chrome profile; if the user changes his mind, he'll have to install it directly from the Store.
Leave clear instructions for your users: that they must restart the browser and expect/accept the prompt.
The best way to do this is the way that Xan wrote in his answer.
If you need to force install Chrome extensions in your company without user interaction. You can do this with ExtensionInstallForcelist policy or with master_preferences file. Both ways described here.

How to save a chrome extension as .exe file?

I have implemented a chrome extension project but I need to install it by running a .exe file.
I tried many ways like extracting files to C:\Users\user\AppData\Local\Google\Chrome\User Data\Default\Extensions automatically using iExpress(i gave the id of extension to the folder),
i tried creating ExtensionInstallForceList under HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Google\Chrome\ and creating new string value "1" giving it value "id;https://clients2.google.com/service/update2/crx"
and lots of other ways but still I couldn't make it. I would appreciate a little help
The only programmatic way to install an extension on Windows (assuming you're not a Windows Domain sysadmin, which seems to be a safe assumption) is as follows:
Upload your extension to Chrome Web Store and publish.
This is mandatory, but the extension can be specified to be unlisted.
Create an installer that adds a registry entry as described here.
Upon next browser restart, Chrome will:
Download the extension from Web Store (and nowhere else)
Ask a confirmation from the user to allow that extension.
If the user agrees, you're done. If the user does not agree, the extension is blacklisted and you can't try again on this install unless the user installs directly from Web Store.
ExtensionInstallForceList is only for enterprise deployments via group policy. Chrome will ignore local registry values and query the domain policy directly.

install chrome extension outside the chrome extension market

As I know you can install an extension outside the market without expected limitations, for example, autoupdate. You need to be in develop mode.
You can read this thread to understand the problem:
Install chrome extension as external extensions
The think is, anyone know another way to install an extension in your chrome (internal use in a company o class). I like to think that I can sign the extension with a shared certificate or something like that. And send the extension to the users.
Google no longer allows it.
Protecting Chrome users from malicious extensions
Continuing to protect Chrome users from malicious extensions
There are 4 types of extension install still available:
Direct installation from Webstore or inline install from a website, but hosted on Web Store.
Indirect installation through registry manipulation (e.g. companion extension for a native app), but it still must be hosted in the Webstore.
Local development installs; will nag on every Chrome restart and no autoupdate mechanism.
For Enterprise only, policy-based installs. Note that on Windows that requires computers joined to a domain. In this case there are no restrictions on where the extension is hosted.

Restart Chrome native messaging host

I've written a Chrome extension and companion native messaging host. I don't have any issues with it failing to start or crashing, but I would like to be able to restart it for updates of the extension. I can't find anything in the documentation or elsewhere regarding this. Is it even possible, or does the browser need to be restarted? Due to the nature of the extension, I'd like to avoid restarting the browser if possible.
Documentation can be found here, but it's not exactly robust.
https://developer.chrome.com/extensions/nativeMessaging
Upon further investigation I have found that restarting the native host application manually is not required. Chrome does this itself on update of the extension. However, that breaks the ability to send messages to the native host application from content scripts that have already been loaded, which was causing the issue I was seeing. Pages can be reloaded to fix messaging.