web-dev-qa-db-fra.com

Comment changer l'id de l'application packagée Chrome ou Pourquoi avons-nous besoin d'un champ clé dans le fichier manifest.json?

Je développe une application packagée pour un magasin Chrome utilisant des paiements de portefeuille chromés uniques. Pour mon application, je dois vérifier au moment de l'exécution si l'utilisateur l'a achetée ou non, qu'il s'agisse d'une fonctionnalité de démonstration ou d'une fonctionnalité complète.

Selon la documentation de l’API chrome identity :

pour que l’ID d’application reste constant, vous devez copier la clé dans le fichier installé manifest.json à votre manifeste source.

J'ai 2 questions sur cette procédure: 

1) sous quelle condition l'id de mon application peut changer? J'ai essayé de réinstaller l'application et mis à jour, mais l'identifiant d'application reste le même. S'il n'y a aucun moyen de changer l'identifiant d'application, pourquoi ai-je besoin de cette procédure?

2) Comment puis-je télécharger mon archive Zip avec manifest.json (qui contient le champ "clé") sur un tableau de bord chrome? Le problème est que le téléchargeur jette une erreur sur moi: 

Une erreur est survenue: Échec du traitement de votre article.

le champ clé n'est pas autorisé dans le manifeste. 

38
31415926

Une fois téléchargé sur le Chrome Web Store, votre numéro de poste est corrigé et ne peut plus être modifié.

L'ID est dérivé du fichier .pem créé la première fois que vous (ou le Chrome Web Store) avez compressé l'extension dans un fichier .crx. Lorsque vous chargez une extension en "mode décompressé", un identifiant est automatiquement généré de manière imprévisible. Le seul moyen de contrôler l'ID d'extension pendant le développement consiste à définir le champ "key" dans le fichier manifeste, comme le suggère la documentation .

Lorsque vous avez déjà publié l'extension dans le Chrome Web Store, vous pouvez facilement obtenir la valeur de ce champ "key" à l'aide de Chrome Extension Source Viewer . Après avoir installé l’extension, accédez à la page de détails de votre magasin Web Chrome et cliquez sur le bouton CRX pour afficher la source. Lorsque le visualiseur source de l’extension Chrome a chargé l’extension, il affiche la clé dans la console, qui peut être directement copiée-collée dans votre fichier manifest.json:

Screenshot: Public key (paste into manifest.json to preserve extension ID) crxviewer.js:528 "key": "....", crxviewer.js:529 Calculated extension ID: jifpbeccnghkjeaalbbjmodiffmgedin

Si vous avez non publié votre extension ou si vous ne souhaitez pas utiliser le Chrome Web Store, vous devez d'abord générer une clé privée.

  1. Allez à chrome://extensions/ et activez le mode développeur.
  2. Cliquez sur "Pack extension ...", sélectionnez le répertoire de votre application/extension et validez.
    Vous avez maintenant un fichier .crx et un fichier .pem. Sauvegardez la clé privée (fichier .pem)!
  3. L'extension mentionnée peut être utilisée pour obtenir les mêmes informations. Vous pouvez également visiter la démonstration en ligne à l’adresse https://robwu.nl/crxviewer/ et sélectionner le fichier crx que vous venez de créer (à nouveau: ouvrez simplement la console pour voir la "clé" et l’ID d’extension).

Lorsque vous êtes prêt à soumettre votre application/extension au Chrome Web Store, procédez comme suit:

  1. Créez un fichier Zip contenant votre extension (important: manifest.json doit être à la racine, c’est-à-dire que "répertoire/manifest.json" est incorrect, "manifest.json" est bon) .
    • Ajoutez le fichier .pem en tant que key.pem!
      (cela est nécessaire pour conserver l'identifiant d'extension)
  2. Téléchargez l'extension dans le Chrome Web Store (sans le champ "clé" dans le fichier manifest.json, le serveur CWS rejettera tout téléchargement contenant un champ "clé").

"Key.pem" ne doit pas être ajouté au fichier Zip, car le Chrome Web Store n'en a plus besoin.

94
Rob W

Espérons que quelqu'un puisse donner une meilleure réponse que moi. L'identifiant d'une application est généré par Google lorsque vous la téléchargez pour la première fois dans la boutique en ligne. Cependant, ce n'est pas le même identifiant que vous avez lorsque vous développez localement. Votre navigateur Chrome a généré un autre identifiant en utilisant un autre mécanisme.

Lorsque vous développez localement à partir de votre répertoire de code source en tant qu'extension décompressée et que vous souhaitez utiliser l'ID attribué par le magasin Web Chrome à votre application, vous insérez la "clé" dans votre manifeste et rechargez votre application. Cela vous aide car de nombreuses API s'attendent à ce que chrome.runtime.id (l'id de votre application) ait la même valeur que l'application du magasin. Vous pouvez laisser la "clé" dans votre manifeste et celle-ci sera ignorée.

9
kzahel

Pour tous ceux qui rencontrent des problèmes pour charger l'extension décompressée avec le champ clé dans le fichier manifest.json

Supprimez votre extension publiée si elle est dans votre liste d’extensions mais désactivée. Sinon, votre extension dev locale ne se chargera pas et aucune erreur ne sera affichée. La raison en est que chrome détecte les clés en double pour l'extension et l'ignore silencieusement.

0
holmberd