Publish a new version of a Chrome Extension to just testers (initially) - google-chrome-extension

I have an unlisted extension published through the Chrome web store which is already being used. I have a new version which I would like to release just to testers initially, before a full roll out to everyone. Can this be done?
The same thing has been asked here but it was almost 9 years ago, and the answers disagree on whether it's possible or not:
How to publish new version of Chrome Extension only to testers

The short answer is "No, it can't be done for a published extension".
According to Chrome Web Store visibility descriptions, you must unpublish an extension before it can be published to trusted testers. Users who already have it installed will get updated to the new version.
In your case, you have to create a new extension with the new code, and a different name like "MyApp Beta" and publish it privately to the list of trusted testers.

Maybe you already know this, but you can install a chrome extension manually.
Go to chrome://extensions/ and check the box for Developer mode in the top right.
Click "Load unpacked exention"
Select the folder where your unzipped extension resides in.
So, you can send a zip/rar to your testers, let them follow the procedure and test the extension. Might be that you have to give it another name so as to not conflict with your earlier eversion, or you could ask your testers to delete the existing extension to avoid conflicts.

Well, the simplest way is to pack a .crx file of the tester-only extension then link to it via some cloud-hosting service like Google Drive. There is no way to do this through the Web Store. You could release a different extension as a beta channel though.

Not strictly related to publishing a full extension, but ... you could use feature toggling to control the visibility of new functionality? So wrap the new functionality in toggle checks and only turn the feature on based on some criteria you can decide in a custom roll-out strategy. See enter link description here for an open-source implementation of a feature toggle control system.

If you have a developer account and want to publish it on the chrome web store privately to just testers this is what you have to do:
Go to the Pricing and Distribution page of the extension during the publishing process
Click "Private"
Go to your developer account settings, and in the "Management" section, you can add trusted tester accounts.
You can change the status to public whenever your extension is ready.

Related

chrome webstore: what are the possible ways to publish older version of the extension?

I have published a private extension to Chrome webstore. Only people with URL can download this extension.
Some of the users in my organization want to switch to the older version of the extension for sometime. what is the best way to do?
I am aware that chrome webstore doesn't support multiple versions on the same URL.
Sending .crx file is not an option (due to the bug https://bugs.chromium.org/p/chromium/issues/detail?id=638725)
I was thinking to publish the older version of the plugin (with different ID) to the store and give them the new link to download. Does the webstore allow?
are there other ways to do this?
I was thinking to publish the older version of the plugin (with different ID) to the store and give them the new link to download. Does the webstore allow this?
Yes, there should be no problem, especially for the same developer account. It's not atypical to have a "stable" and "testing" versions of the same extension in the Store.
Consider making a mechanism to migrate user settings before you do this (for example, using External Messaging between the two versions or some sort of copy-paste export/import).

How do third party installer install addons in our browser?

My question is how do third party installer installs addons in the browser like toolbars and able to set homepage and other browser properties??
I want to make an addon which get installed in browser in same way..
is it possible??
In principle, installing extensions along with other software is possible. I'm describing the procedure for Windows.
The following conditions have to be met:
You must be able to write to the HKLM registry subtree (needs Admin rights)
The extension must be published on Chrome Web Store
The machine must be able to download the extension from Web Store
If those conditions are met, you can do it according to the procedure described here. Basically, the installer must create a registry key that will trigger Chrome to download the extension on next launch.
That said, Google has gone to great pains to prevent silent installs and avoid browser settings hijack. Such setting overrides are a weapons race and Chrome is tightening its defenses. Ask yourself whether it's ethical to install your extension this way.
It will probably annoy your users and will flag your extension for more meticulous checks by Google. Remember that Google can disable any extension hosted by the Web Store if it violates its policies.
Also, be mindful of the single purpose policy. A toolbar that also overrides search/homepage/settings will be frowned upon. At a minimum it should be separated into several extensions, at a maximum - don't do it.
An extension can override, say, a homepage, but it's very restrictive. The extension must be in the Web Store as above, and any override pages must be verified for ownership for the Web Store developer account. All in the name of security and comfort of the users.

Is it possible to create a Chrome Extension for private distribution outside Chrome Web Store?

We have a Chrome Extension application that we have developed and would like to distribute it only a limited number of internal users.
This would be a private app, but to install it, users now have to follow the manual steps of going to Settings -> Extensions -> clicking on Developer mode -> drop the .crx in there.
I would like to know if there is a way to just have private App Store to privately distribute this app and not have it on Chrome Web Store for anyone to see/download/use.
Thanks for your help in advance ---
You use the Chrome Web Store. 2 options are available:
Share an unlisted Chrome extension from the Chrome Web Store (anyone with the link will be able to install it)
Chrome customers using G Suite or Education can use the Chrome Web Store to host private apps restricted only to their users on the same domain.
See https://support.google.com/chrome/a/answer/2663860
Update 2016-05-20: From https://support.google.com/chrome/a/answer/2663860?hl=en
Chrome customers using Google Apps for Work or Education can use the Chrome Web Store to host private apps restricted only to their users or people who you share a direct link to the app with. Users from the same Chrome domain will see their organization's private apps in a private collection in the Chrome Web Store.
Update 2015-10-27: Google has updated installation policies in attempt to curb malicious extension activity on Windows. On the chrome extension hosting page:
Warning: As of Chrome 33, Windows users can only download extensions
hosted in the Chrome Web store, except for installs via enterprise
policy or developer mode (see Protecting Windows users from malicious
extensions). As of Chrome 44, no external installs are allowed from a
path to a local .crx on Mac (see Continuing to protect Chrome users
from malicious extensions).
With the latest versions of Google Chrome, users are no longer going to be able to just click a download link and have it install with the correct HTTP headers. This leaves you with 4 possible options:
user downloads extension and then drags the file into the extension management page (This no longer works on Windows per update note)
change registry settings on users computers
user downloads extension source folder and loads extension from source in the extension management page
Re-enable extension installs with command-line flag as suggested by Rob W
I have created and distributed several different Google Chrome extensions privately within my company and went with the first option. It is an extra step for the users but it wasn't a big deal. The users did not have to have developer mode enabled in their Chrome browser for this to work.
Yes, you can. You need to create the crx file through the google chrome "Extensions" page (visit: chrome://extensions/ NOTE: You cannot click the link you have to manually copy and paste it, chrome does not allow you to visit the link from href)
On the Extensions page, check the box "developer mode", choose "pack extension".
Now you get the following popup. Click "browse" for the Extension root directory and navigate to the folder containing your extension (the folder containing manifest.json).
The first time you do this, ignore private key file. It will generate one for you automatically and save it to the same folder.
When you release a new version of the extension, use the generated private key file. This way for someone to update the extension, it won't ask for permissions again.
TO INSTALL
To install the extension, just get each user to manually drag the newly created extension crx into the Extensions page (chrome://extensions/).
The first time it will ask for permissions just like when installing from the Chrome Web Store.
For each new version, as long as you used the same private key file for each new version, users just drag the new version into the Extensions page the same way except they won't be asked for permissions again. It will just update the extension.
WARNINGS:
Beware the way you distribute the extension crx file. When user downloads the extension .crx file in Google Chrome, it will think you're trying to install the extension from that page, and come up a warning "couldn't be installed from this site". You need to make sure that users know to ignore the error, and check their downloads folder for the extension to manually install it.
Whenever you download the .crx file, Chrome will give the user a warning saying it might contain a virus. There is no way around this. Even if you zip up the file, Chrome will read the contents and give the same warning. Some users won't install because of this. A workaround is to rename the .crx to something else, like .RENAME_TO_CRX, but this is a hassle and a lot of users either won't want to or won't be able to figure it out.
You can't update the extension automatically. It's just not possible because Chrome manually blocked this capability.
NOTE: Another way would be to release it on the Chrome Store, but only for certain users (not public). Only people with the link could install, OR you could make it only certain people can install and even if you had the link but weren't part of the group, they couldn't view the extension. Only problem here is if you don't want Google to see the extension.
If you use Google Apps, it appears there's now a way to publish apps and extensions to the Chrome Web Store, but only make it visible to users of that domain.
https://support.google.com/chrome/a/answer/2663860?hl=en
Since its internal, could you change registry settings on their computers?
Because if so, you can use them to allow easy install of extensions from outside the web store or force install extensions on their machine.
Look here....
http://www.chromium.org/administrators/policy-templates
http://www.chromium.org/administrators/policy-list-3#ExtensionInstallSources
http://www.chromium.org/administrators/policy-list-3#ExtensionInstallForcelist

Provisioning profile problems

Whn I try to upload my app, I get this error in Application Uploader "Application failed codesign verification. The signature is invalid, contains disallowed entitlements, or it was not signed with an iPhone Distribution Certificate.".
If I open MonoDevelop, properties and select "iPhone bundle signing", then I see a "Provisioning profile", but if I click another topic (eg Crash report) and go back to "Provisioning profile", then it suddenly says "Unknown" and a guid.
How do I tell MonoDevelop to use the correct Provisioning profile?
I deleted some old profiles (in Organizer), but they still show in MonoDevelop.
Unfortunately the "provisioning hell" created by the Apple signature system is made even worse in MonoDevelop.
There is no provisioning manager, no way to setup and associate all the provisioning profiles and the keys to a specific monotouch app. MonoDevelop lacks a wizard to automatically create or guide the user in the creation, download or backup of the right profiles, keys and appIDs.
The best way to know if a profile or a key is wrong, expired, incompatible with an appId, or rejected, is to check all of them manually in the XCode Organizer (you can find it in the XCode "Window" menu).
Once in Organizer, you need to go to click on the LIBRARY -> Provisioning Profiles section on the left, and then click on the Refresh button to synch your profiles with apple server (if you have those on file or you are on another dev computer and you have to install only selected profiles, click on the Import button and manually select the files).
Then you need to attach your ios device and when it appears in the DEVICE->your_iPhone_or_Ipad name.. you need to drag and drop the provisioning profiles that you need from the LIBRARY->Provisioning Profile to the DEVICE->your_iPhone_or_Ipad_name->Provisioning Profiles...
Many things can go wrong anyway, especially mixing old profiles with the new profiles supporting iCloud or some other advanced app features. There is no way to know if a bundle id is valid, if the entitlements are allowed, if a profile or an appID is enabled or not to use iCloud, Notifications, IAP, etc., or if it's registered for Developer, AdHoc or Distribution, and what product id strings it's compatible with. You need to go by trials and errors. Even the simple creation of an ad Hoc version of your app enabled for a trusted remote tester is a long and perilous road. There is no users and testers profiles manager in MonoDevelop, you need to remember what goes with who every time.
If you are on a different developer machine, you also need to install the registered developer keys in the local KeyChain (I suggest to do a backup of those keys somewhere: if you lose those keys, you will be unable to update your app in the future!!).
Let us hope that Xamarin will add a profiles and keys manager soon.
#Emanuale mentions alot, but he is going the long route on a lot of these.
There is a simpler way to go about everything. Here is the cut and dry approach:
Login to the provisioning portal on the web
Create an App ID for your company as "com.yourcompanyname.*"
Create a provisioning profile for this app ID for both development and distribution
(I would also recommend to delete any profiles you don't need)
Open XCode->My Organizer, and press the refresh button in the bottom right corner (you will see all your profiles from online appear)
Deploy your app to the device from MonoDevelop (make sure your bundle ID is com.yourcompanyname.yourappname)
This is the simplest way to go about this. No need to mess with provisioning profile settings in MonoDevelop, the defaults should work.
The only gotcha is if you need to support push notifications. The com.yourcompanyname.* profile won't work, you will have to make a profile specific to each app in this case.
Great answer jonathanpeppers! Just a 2c, now XCode->My Oganizer is Preferences->Accounts
If the accepted response doesn't help, you should also ensure that your Signing Identity matches the Provisioning Profile you're using, and that it has a private key. These can be switched up if you have multiple Signing Certificates installed, and you won't be able to tell the difference from Xamarin Studio. See
https://stackoverflow.com/a/37856762/660194

Use Autoupdating in Google Chrome Web Store

I'm making an extension for Google Chrome and I use code for autoupdating. This is because the extension isn't yet in Google Chrome webstore. But in a few days I will upload it to the Webstore and Google says you can use the Webstores autoupdating. But if I don't want to use that, will my app still update by my own server, like the way it does now?
Thanks in advance!!
I agree that docs are not very clear about this:
If you publish your extension using the Chrome Developer Dashboard,
you can ignore this page. You can use the dashboard to release updated
versions of your extension to users, as well as to the Chrome Web
Store.
But, I've tested it myself and your update_url setting in manifest.json will be overridden when you publish your extension via Chrome Web Store (CWS). In other words, publishing to CWS means that you can't use self hosted autoupdating anymore.
The reasons for that, that I could think of, may be as follows:
CWS wants to keep track of each extension stats (i.e. number of users using each extension)
privacy concerns (people don't want you to track them when they update extension)
security concerns (each extension update must go through CWS verification process)
If you want to track people (please don't) use Google Analytics on i.e. background page of your extension.

Resources