# カーセンサー個社別AIツール - Cloudflare R2 配布インストーラ (Chrome 専用) # # cs-tool.cis1212.co.jp は公開(認証なし)。obscurity + 内部利用のみが前提。 # # Edge サポート削除(v1.5.10+): # Microsoft Edge は MDM 管理デバイス以外で policy 経由のサードパーティ拡張インストールを # 拒否する仕様 (Edge 88+)。Cloudflare Zero Trust / WARP は Edge 視点で管理デバイスではない # ため、ExtensionSettings policy を書いても [BLOCKED] 扱いになる。Chrome のみ運用。 # # 使い方(普通の PowerShell から、自動 UAC 昇格): # [Console]::OutputEncoding=[Text.UTF8Encoding]::new(); irm "https://cs-tool.cis1212.co.jp/install.ps1" | iex # # アンインストール: # $env:CARSENSOR_UNINSTALL='1'; [Console]::OutputEncoding=[Text.UTF8Encoding]::new(); irm "https://cs-tool.cis1212.co.jp/install.ps1" | iex $ErrorActionPreference = 'Stop' # ───────────────────────────────────────────────────────────── # 0a) TLS 1.2/1.3 強制 + 100-Continue 無効化 # PowerShell 5.1 の既定 SecurityProtocol は Tls 1.0 で、Cloudflare は拒否する。 # ───────────────────────────────────────────────────────────── try { [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -bor [Net.SecurityProtocolType]::Tls11 -bor [Net.SecurityProtocolType]::Tls [Net.ServicePointManager]::Expect100Continue = $false } catch { } # ───────────────────────────────────────────────────────────── # 0b) 文字化け防止: Console / OutputEncoding を UTF-8 に固定 # Note: 非 BMP 絵文字 (🧡📥🎉) は PS 5.1 console で doubled mojibake を起こすため # スクリプト内では BMP 範囲の記号 (★▼☆♥) のみ使用する。 # ───────────────────────────────────────────────────────────── try { [Console]::OutputEncoding = [System.Text.UTF8Encoding]::new($false) $OutputEncoding = [System.Text.UTF8Encoding]::new($false) $PSDefaultParameterValues['Set-Content:Encoding'] = 'UTF8' $PSDefaultParameterValues['Out-File:Encoding'] = 'UTF8' } catch { } $AppUrl = 'https://cs-tool.cis1212.co.jp' $ExtId = 'lmkiecaddgcdemkchjkljbeocmjjkmac' $InstallDir = 'C:\Users\Public\carsensor' $CrxName = 'carsensor-extension.crx' $RegChrome = "HKLM:\SOFTWARE\Policies\Google\Chrome\ExtensionSettings\$ExtId" # Edge 用 path も保持(uninstall 時の掃除用) $RegEdgeOld = "HKLM:\SOFTWARE\Policies\Microsoft\Edge\ExtensionSettings\$ExtId" # ───────────────────────────────────────────────────────────── # 1) 管理者昇格(自己再起動) # ───────────────────────────────────────────────────────────── $isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole( [Security.Principal.WindowsBuiltInRole]::Administrator) if (-not $isAdmin) { Write-Host "[!] 管理者権限が必要です。UAC で「はい」を押してください..." -ForegroundColor Yellow $uninstallSet = if ($env:CARSENSOR_UNINSTALL -eq '1') { "`$env:CARSENSOR_UNINSTALL='1'; " } else { "" } $bootstrap = "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityProtocolType]::Tls12; [Console]::OutputEncoding=[System.Text.UTF8Encoding]::new(`$false); ${uninstallSet}irm `"$AppUrl/install.ps1`" | iex" Start-Process powershell -Verb RunAs -ArgumentList @('-NoExit', '-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', $bootstrap) return } Write-Host "" Write-Host "★ カーセンサー個社別AIツール - R2 経由インストール (Chrome 専用)" -ForegroundColor Cyan Write-Host " app: $AppUrl" Write-Host " encoding: $([Console]::OutputEncoding.WebName)" Write-Host "" # ───────────────────────────────────────────────────────────── # 2) アンインストール分岐 # Chrome ポリシー削除 + 旧 Edge ポリシー残骸も同時削除 # ───────────────────────────────────────────────────────────── if ($env:CARSENSOR_UNINSTALL -eq '1') { Write-Host "[X] アンインストール中..." -ForegroundColor Yellow Remove-Item -Path $RegChrome -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path $RegEdgeOld -Recurse -Force -ErrorAction SilentlyContinue # 旧版で書いた残骸を掃除 Remove-Item -Path $InstallDir -Recurse -Force -ErrorAction SilentlyContinue Write-Host "[OK] アンインストール完了。Chrome を再起動してください" -ForegroundColor Green pause; exit 0 } # ───────────────────────────────────────────────────────────── # 3) latest.json を取得 → 最新バージョン + CRX 相対パス確定 # ───────────────────────────────────────────────────────────── Write-Host "[DL] 最新バージョン情報取得中..." -ForegroundColor Cyan $latest = irm "$AppUrl/latest.json" $ver = $latest.version $crxRel = $latest.crx # 例: "v1.5.10/cis-extension.crx" Write-Host " version: $ver" -ForegroundColor Green Write-Host " CRX: $crxRel" # ───────────────────────────────────────────────────────────── # 4) CRX ダウンロード # ───────────────────────────────────────────────────────────── $tmp = Join-Path $env:TEMP "carsensor-update-$(Get-Random)" New-Item -ItemType Directory -Path $tmp -Force | Out-Null try { $crxTmp = Join-Path $tmp $CrxName Write-Host "[DL] CRX をダウンロード中..." -ForegroundColor Cyan iwr "$AppUrl/$crxRel" -UseBasicParsing -OutFile $crxTmp $crxInfo = Get-Item $crxTmp Write-Host " $([math]::Round($crxInfo.Length / 1024)) KB" # ───────────────────────────────────────────────────────── # 5) 配置 + update.xml + Chrome registry policy # ───────────────────────────────────────────────────────── if (-not (Test-Path $InstallDir)) { New-Item -Path $InstallDir -ItemType Directory -Force | Out-Null } $crxDst = Join-Path $InstallDir $CrxName Copy-Item -Path $crxTmp -Destination $crxDst -Force Write-Host "[OK] CRX 配置: $crxDst" -ForegroundColor Green $updateXml = @" "@ $xmlPath = Join-Path $InstallDir 'update.xml' [System.IO.File]::WriteAllText($xmlPath, $updateXml, [System.Text.UTF8Encoding]::new($false)) Write-Host "[OK] update.xml 生成 (UTF-8 BOM なし)" -ForegroundColor Green $updateUrl = "file:///$($xmlPath.Replace('\','/'))" try { New-Item -Path $RegChrome -Force -ErrorAction Stop | Out-Null Set-ItemProperty -Path $RegChrome -Name 'installation_mode' -Value 'force_installed' -Type String -Force Set-ItemProperty -Path $RegChrome -Name 'update_url' -Value $updateUrl -Type String -Force Write-Host "[OK] Chrome ポリシー書込" -ForegroundColor Green } catch { Write-Warning " [!] Chrome レジストリ書込失敗: $_" } # 念のため旧 Edge policy が残ってたら掃除(Edge は MDM 必須で動かないため) if (Test-Path $RegEdgeOld) { Remove-Item -Path $RegEdgeOld -Recurse -Force -ErrorAction SilentlyContinue Write-Host "[OK] 旧 Edge ポリシー残骸を削除(Edge は MDM 必須で動作しないため)" -ForegroundColor DarkGray } Write-Host "" Write-Host "★ v$ver インストール完了!" -ForegroundColor Green Write-Host "" Write-Host "次の手順:" -ForegroundColor Cyan Write-Host " 1. Chrome を完全終了(タスクマネージャで全 chrome.exe プロセス kill 推奨)" Write-Host " 2. Chrome 再起動" Write-Host " 3. chrome://extensions で「カーセンサー個社別AIツール」が" Write-Host " 「管理者が管理しています」と表示されれば成功" Write-Host "" Write-Host " ※ Microsoft Edge は MDM 管理デバイス必須のため対応外(仕様)" -ForegroundColor DarkGray Write-Host "" } finally { Start-Sleep -Seconds 1 Remove-Item -Path $tmp -Recurse -Force -ErrorAction SilentlyContinue } pause