@@ -107,6 +107,65 @@ dotnet test BrowserGuard.Tests\BrowserGuard.Tests.csproj
107107
108108拡張機能側に単体テストはありません。` build.bat lint ` が静的チェックを行います。
109109
110+ ### 仮の ID で Edge に登録して動作を確認する
111+
112+ リリース用の署名鍵を使わずに、拡張機能とネイティブメッセージングホストの動作を
113+ 実機で確認するためのスクリプトです。
114+
115+ ``` powershell
116+ .\tools\install-test-extension.ps1
117+ ```
118+
119+ 以下を行います。
120+
121+ 1 . 初回実行時にテスト用の署名鍵を生成 (** 製品版とは異なる拡張機能 ID** になります)
122+ 2 . 開発版を crx にパッケージングし、更新マニフェストを生成
123+ 3 . ` ExtensionInstallForcelist ` に登録
124+ 4 . ネイティブメッセージングホストを ` -c Debug ` でビルド
125+ 5 . ` bin\Debug\net8.0\BrowserGuard.exe ` を指すホストマニフェストを生成して登録
126+ 6 . テスト用の設定ファイルを生成し、ホストがそれを読むよう登録
127+
128+ HKLM を書き換えるため、** 管理者権限の PowerShell** で実行してください。
129+ 実行後は Edge を再起動し、` edge://extensions ` と ` edge://policy ` で確認します。
130+
131+ | コマンド | 内容 |
132+ | --- | --- |
133+ | ` install-test-extension.ps1 ` | ビルドと登録 |
134+ | ` install-test-extension.ps1 -WhatIf ` | レジストリを変更せずに内容を確認 |
135+ | ` install-test-extension.ps1 -Uninstall ` | 登録を解除し、元のレジストリ値に戻す |
136+ | ` install-test-extension.ps1 -Uninstall -Purge ` | 生成物とテスト鍵も削除 (次回は別の ID になります) |
137+
138+ 生成物は ` .testinstall\ ` に置かれます (git 管理外)。
139+ ` -WhatIf ` はレジストリ変更のみを抑止し、crx などの生成は実際に行います。
140+
141+ #### ネイティブメッセージングホストのデバッグ
142+
143+ ホストマニフェストの ` path ` が ` bin\Debug\net8.0\BrowserGuard.exe ` を指すため、
144+ ホストを修正したら再ビルドするだけで反映されます。スクリプトの再実行は不要です。
145+
146+ ``` bash
147+ dotnet build BrowserGuard\B rowserGuard.csproj -c Debug
148+ ```
149+
150+ Edge はメッセージのたびにホストを起動するため、再ビルド後の最初のメッセージから
151+ 新しいバイナリが使われます。動作は ` %APPDATA%\BrowserGuard\BrowserGuard.log ` で確認できます。
152+
153+ 有効にする機能は ` .testinstall\BrowserGuard.json ` を編集して切り替えます。
154+
155+ #### 既存の登録の扱い
156+
157+ ネイティブメッセージングホストの登録名は 1 つしかないため、
158+ ** 製品版がインストール済みの場合はその登録を置き換えます** 。
159+ 置き換える前の値は ` .testinstall\registry-backup.json ` に保存し、
160+ ` -Uninstall ` で元に戻します (設定ファイルのパスも同様)。
161+
162+ ホストマニフェストの ` allowed_origins ` にはテスト用と製品版の両方の拡張機能 ID を
163+ 書き込むため、製品版の拡張機能も引き続きホストと通信できます。
164+
165+ ` ExtensionInstallForcelist ` は空き番号を探して登録し、
166+ 同じ拡張機能 ID のエントリが既にあれば更新します。
167+ 他の拡張機能のエントリには触れません。
168+
110169## インストーラーの動作
111170
112171### 拡張機能の強制インストール
0 commit comments