2011-05-04 2 views
5

Je travaille sur un emploi en relation avec cette pageL'installation automatique d'une extension google chrome ne fonctionnera pas!

j'ai écrit un script NSIS qui tente d'installer automatiquement une extension de chrome. (Pourquoi? Parce que notre extension peut être proposée avec un autre flux d'installation de produit via une case à cocher, puis si l'utilisateur sélectionne notre extension à ajouter, elle s'installe automatiquement sur le navigateur chrome de l'utilisateur). beaucoup de scénario et je besoin d'aide, sur le site google, ils disent que vous pouvez le faire

  • l'utilisation d'un préférences fichier JSON
  • Utilisation du registre Windows

ils disent aussi que « l'utilisation d'un fichier de préférences » a un bug (Windows. Note: Jusqu'à ce bogue 41902 est résolu, vous pouvez utiliser le registre Windows au lieu du fichier de préférences)

Rappel: Une extension qui est est automatiquement connu il installé comme une extension externe

  • donc j'ai essayé « Utiliser le registre Windows »

Pour ajouter une extension de google chrome par registre:

  • ajouter cette clé: "HKEY_LOCAL_MACHINE \ SOFTWARE \ Google \ Chrome \ Extensions (Mon id d'extension)" "Path"
  • ajouter le chemin vers un .crx
  • ajouter "version" avec la version de l'extension

C'est ce que j'ai essayé (en utilisant un script NSIS):

  • Si j'ajoute une clé de registre Il installera l'extension, MAIS si l'utilisateur désinstalle manuellement, chrome active l'indicateur de liste noire et l'extension ne peut être réinstallée avec aucun autre script. La seule façon restante est que l'utilisateur installe, manuellement. Pire, si l'utilisateur installe manuellement et désinstalle manuellement (il éteindra le drapeau de la liste noire), et quand chrome sera redémarré, il réinstallera les extensions automatiquement (sans aucune action de l'utilisateur) puisque la clé de registre est toujours là. Si je supprime la clé de Registre lorsque nous démarrons ou fermons le navigateur, d'une manière bizarre (à l'aide d'une DLL (NPAPI) dans le fichier crx), chrome supprime automatiquement le répertoire des extensions lorsque le navigateur redémarre.

  • Si je parviens à supprimer la clé de registre lorsque l'utilisateur désinstalle l'extension. Nous sommes placés sur une liste noire, donc l'installateur automatique ne fonctionnera plus jusqu'à ce que l'utilisateur éteigne l'indicateur de liste noire en installant manuellement l'extension &.

  • Si je crée le répertoire dans « C: \ Users \ (nom d'utilisateur) \ AppData \ Local \ Google \ Chrome \ données utilisateur \ default \ Extensions \ (extensionID) \ (version) _0 \ (mes fichiers ici) », je rencontre beaucoup de problèmes parce que le chrome supprime mes fichiers dès qu'il redémarre le navigateur.

Est-ce que quelqu'un a rencontré ce problème et qu'est-ce qui doit être fait. Je vais essayer avec le fichier JSON, mais jusqu'à ce que bogue ne soit pas fixe, Registre est la seule façon.

Merci pour tous ceux qui ont eu le temps de lire tout cela! Toute aide sera appréciée, merci!

+0

J'ai juste essayé avec le fichier JSON et il a exactement le même comportement que le registre. Agit exactement pareil. C'est juste une source différente pour les 'extensions externes'. – developerGuile

Répondre

2

[11/11/2013 ]
[Les réponses à cette question sont sur le point de devenir obsolètes, alors voici un plus à jour réponse.]


Selon une recent post sur le Chrome Blog, auto-installation d'une extension Chrome ne sera pas une option dans un avenir proche:

A partir de Janvier [2014] sur les canaux stables et bêta de Windows, nous aurons besoin de toutes les extensions être hébergé dans le Chrome Web Store.

Comme alternative, les développeurs et les fournisseurs pourront utiliser l'installation en ligne fonction:

Si vos extensions sont actuellement hébergées en dehors du Chrome Web Store vous devriez les faire migrer le plus rapidement possible . Il n'y aura aucun impact sur vos utilisateurs, qui pourront toujours utiliser votre extension comme si rien ne changeait. Vous pouvez conserver les extensions cachées dans les listes du Web Store si vous le souhaitez. Et si vous avez un flux d'installation dédié à partir de votre propre site web, vous pouvez utiliser la ligne existante installe fonction.


Donc, en gros, ce que vous devez faire est:

  1. hôte votre extension sur le Chrome Web Store (en gardant optionaly caché dans les listes).
  2. Demandez à votre installateur d'ouvrir une fenêtre de navigateur Chrome pointant vers une page Web sur votre site.
  3. Sur cette page, vous disposez de toutes les informations et données nécessaires pour initier le processus d'installation de l'extension. (Le concept clé ici est que l'utilisateur doit lancer le processus d'installation, par exemple en cliquant sur un bouton

Comment l'installation en ligne travail.

Le La page HTML sur votre site à partir de laquelle vous souhaitez que l'installation en ligne se produise doit contenir un ou plusieurs tags dans la section référençant les éléments que l'utilisateur peut installer.Chaque tag doit avoir le format suivant:

<link rel="chrome-webstore-item" href="https://chrome.google.com/webstore/detail/itemID"> 

Pour commencer réellement l'installation en ligne, la fonction chrome.webstore.install (url, successCallback, failureCallback) doit être appelée. Cette fonction peut uniquement être appelée en réponse à un mouvement d'utilisateur, par exemple dans un gestionnaire d'événements click; une exception sera levée si ce n'est pas le cas.

(Souligné par l'auteur)

Plus d'information sur le inline installs feature.

0

Il y a un moyen plus facile ... Lorsque la case à cocher est cliqué, exécutez le code du background page:

chrome.tabs.create({ url:"FILEPATH.crx" }); 

L'extension prévue que vous souhaitez installer (fichier .crx) peut soit être hébergé sur le filet ou peut être dans votre dossier d'extension d'origine ... Vous aurez besoin tabs la permission dans votre manifest

+3

mais il ne peut pas installer d'extensions en premier lieu? – Tobias

0

« les développeurs d'applications Windows doivent demander aux utilisateurs d'installer des extensions Chrome à partir de Chrome. Une excellente façon de permettre aux utilisateurs d'installer un Chrome exte nsion lié à votre application Windows est de relier les utilisateurs à votre site Web et utiliser inline installation « .

également voir plein blog post

+0

J'ai remarqué qu'il y avait un problème avec le lien vers le blog - corrigé. Cela devrait tout expliquer. – idleberg