2

現在、ユーザースクリプトをChrome拡張機能に更新していますが、新しいIDが異なるため、古い拡張機能は更新されませんが、新しい拡張機能が追加されます。

ユーザースクリプトをChrome拡張機能に変換し、同じIDを維持する方法はありますか?

かりうのキーファイルがないので可能だと思います
が、どうやって?

4

1 に答える 1

5

ユーザースクリプトは、ロード時にChrome拡張機能に変換されます。同じIDで拡張機能を作成および維持するには、次の手順に従います。

  1. ユーザースクリプトをインストールします。
  2. 開発者モードにアクセスchrome://extensions/してアクティブにします。
  3. ユーザースクリプトまで下にスクロールして、IDを見つけます。ユーザースクリプト Userscript 1.0ユーザースクリプトIDの説明:hjcgfecgldpgebeeflnjldogphkilfdo
    のバージョンが1.0であることに注意してください(デフォルトでは、を介してオーバーライドされます@version)。
  4. 次に、Chrome/Chromiumユーザープロファイルの拡張機能ディレクトリにアクセスします。デフォルトのパスはここにあります。フラグを使用してChrome/chromiumを起動する場合は--user-data-dir=...、にアクセスしてください...
    ディレクトリ内に移動したら、IDが3にあるディレクトリを探します。
  5. ディレクトリ全体をの場所にコピーします(例:/tmp/または)%tmp%
  6. [解凍した拡張機能を読み込む]ボタンを使用して、以前にコピーしたディレクトリの最初のサブディレクトリを選択します。このサブディレクトリの名前はバージョンに基づいています。
  7. 下にスクロールして、変換されたユーザースクリプトが真の拡張機能であることを確認します(ロードされます!)。
    Userscript 1.0ユーザースクリプトIDの説明:hjcgfecgldpgebeeflnjldogphkilfdoロード元:/tmp/hjcgfecgldpgebeeflnjldogphkilfdo/1.0_0

手順6〜7はオプションです。これらは、ユーザースクリプトが特別なフラグが設定された真の拡張子に変換されることを示すためにのみ含まれています。マニフェストバージョンに関する赤い警告にも気付くでしょう。これを修正するには、を編集manifest.jsonして追加し"manifest_version": 2,ます。したがって、私たちの場合:

    ...
    "converted_from_user_script": true,
    "description": "Description of user script",
    "key": "eYxnPzfSPtfL3ji4nQX3ujTXpzz3YQ6dVlvHWf1gvW8=",
    "name": "Userscript",
    "version": "1.0",
    "manifest_version": 2
}

これで、Chrome拡張機能のように動作するChrome拡張機能が追加されました。公式ドキュメントの手順に従って、パッケージを更新してください。

パッケージの更新

拡張機能の更新バージョンを作成するには:

  1. のバージョン番号を増やしmanifest.jsonます。
  2. 次のURLにアクセスして、拡張機能の管理ページを表示します:chrome://extensions
  3. [パック拡張]ボタンをクリックします。ダイアログが表示されます。
  4. [拡張機能のルートディレクトリ]フィールドで、拡張機能のフォルダへのパスを指定します(例:c:\myext
  5. [秘密鍵ファイル]フィールドで、.pemこの拡張子用にすでに生成されているファイルの場所を指定します(例: c:\myext.pem
  6. [ OK]をクリックします。

以前にパッケージ化された拡張機能をChromeウェブストアにアップロードする

Chromeデベロッパーダッシュボードを使用して、以前に自分でパッケージ化した拡張機能をアップロードできます。ただし、特別な手順を実行しない限り、Chromeウェブストアでの拡張機能のIDは、作成したパッケージでのIDとは異なります。この異なるIDは、拡張機能パッケージを配布した場合に問題になる可能性があります。これにより、ユーザーは拡張機能の複数のバージョンをインストールでき、それぞれに独自のローカルデータが含まれるためです。

拡張IDを同じに保ちたい場合は、次の手順に従います。

  1. .crxファイルの作成時に生成された秘密鍵の名前をに変更しますkey.pem
  2. 拡張key.pem機能のトップディレクトリに配置します。
  3. そのディレクトリをZIPファイルに圧縮します。
  4. Chromeデベロッパーダッシュボードを使用してZIPファイルをアップロードします。

付録:解凍/パックされた拡張機能で同じIDを保持します。

拡張機能のextensionIDは"key"、マニフェストファイルのパラメータを介して制御できます。解凍された拡張機能とパックされた拡張機能に同じIDを設定する最も簡単な方法は、ドキュメントにも記載されています。

keyこの値は、開発中に読み込まれるときに、拡張機能、アプリ、またはテーマの一意のIDを制御するために使用できます。

注:通常、この値を使用する必要はありません。代わりに、相対パスと を使用してキー値が重要にならないようにコードを記述してくださいchrome.extension.getURL()

適切なキー値を取得するには、最初に.crxファイルから拡張子をインストールします(拡張子をアップロードする、手動でパッケージ化する必要がある場合があります)。次に、ユーザーデータディレクトリで、ファイルを調べます Default/Extensions/<extensionId>/<versionString>/manifest.json。そこに入力されたキー値が表示されます。

keyフィールドが存在しない場合、ランダムに生成されます。次に、extensionIDがこのキーから生成されます。ここでは、extensionIDを生成するためのアルゴリズムについて説明します。アルゴリズムの性質上、逆の順序で実行することはできません(extensionID-> key)。

于 2012-08-02T08:25:57.573 に答える