Skip to content

Commit 86d8614

Browse files
committed
Add script for test
1 parent 043a529 commit 86d8614

3 files changed

Lines changed: 479 additions & 1 deletion

File tree

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,5 @@
22
*.crx
33
.vs
44
bin
5-
obj
5+
obj
6+
.testinstall/

README.md

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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\BrowserGuard.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

Comments
 (0)