# カーセンサー個社別AIツール — Cloudflare R2 配布インストーラ # # cs-tool.cis1212.co.jp は公開(認証なし)。obscurity + 内部利用のみが前提。 # 必要なら今後 Test-Employee 関数を追加して script 内で従業員判定可能。 # # 使い方(普通の PowerShell から、自動 UAC 昇格): # [Console]::OutputEncoding=[Text.UTF8Encoding]::new(); iex (iwr "https://cs-tool.cis1212.co.jp/install.ps1" -UseBasicParsing).Content # # アンインストール: # $env:CARSENSOR_UNINSTALL='1'; [Console]::OutputEncoding=[Text.UTF8Encoding]::new(); iex (iwr "https://cs-tool.cis1212.co.jp/install.ps1" -UseBasicParsing).Content $ErrorActionPreference = 'Stop' # ───────────────────────────────────────────────────────────── # 0) 文字化け防止: Console / OutputEncoding を UTF-8 に固定 # ───────────────────────────────────────────────────────────── 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" $RegEdge = "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 { "" } # 昇格先で再 fetch + iex。iwr の戻り値は WebResponseObject なので .Content を取って iex に渡すこと。 $bootstrap = "[Console]::OutputEncoding=[System.Text.UTF8Encoding]::new(`$false); ${uninstallSet}iex (iwr `"$AppUrl/install.ps1`" -UseBasicParsing).Content" Start-Process powershell -Verb RunAs -ArgumentList @('-NoExit', '-NoProfile', '-ExecutionPolicy', 'Bypass', '-Command', $bootstrap) return } Write-Host "" Write-Host "🧡 カーセンサー個社別AIツール — R2 経由インストール" -ForegroundColor Cyan Write-Host " app: $AppUrl" Write-Host " encoding: $([Console]::OutputEncoding.WebName)" Write-Host "" # ───────────────────────────────────────────────────────────── # 2) アンインストール分岐 # ───────────────────────────────────────────────────────────── if ($env:CARSENSOR_UNINSTALL -eq '1') { Write-Host "🗑 アンインストール中..." -ForegroundColor Yellow Remove-Item -Path $RegChrome -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path $RegEdge -Recurse -Force -ErrorAction SilentlyContinue Remove-Item -Path $InstallDir -Recurse -Force -ErrorAction SilentlyContinue Write-Host "✅ アンインストール完了。Chrome / Edge を再起動してください" -ForegroundColor Green pause; exit 0 } # ───────────────────────────────────────────────────────────── # 3) latest.json を取得 → 最新バージョン + CRX 相対パス確定 # ───────────────────────────────────────────────────────────── Write-Host "📥 最新バージョン情報取得中..." -ForegroundColor Cyan $latest = (iwr "$AppUrl/latest.json" -UseBasicParsing).Content | ConvertFrom-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 "📥 CRX をダウンロード中..." -ForegroundColor Cyan iwr "$AppUrl/$crxRel" -UseBasicParsing -OutFile $crxTmp $crxInfo = Get-Item $crxTmp Write-Host " $([math]::Round($crxInfo.Length / 1024)) KB" # ───────────────────────────────────────────────────────── # 5) 配置 + update.xml + 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 "✓ CRX 配置: $crxDst" -ForegroundColor Green $updateXml = @" "@ $xmlPath = Join-Path $InstallDir 'update.xml' [System.IO.File]::WriteAllText($xmlPath, $updateXml, [System.Text.UTF8Encoding]::new($false)) Write-Host "✓ update.xml 生成 (UTF-8 BOM なし)" -ForegroundColor Green $updateUrl = "file:///$($xmlPath.Replace('\','/'))" foreach ($regKey in @($RegChrome, $RegEdge)) { $browser = if ($regKey -like '*Chrome*') { 'Chrome' } else { 'Edge' } try { New-Item -Path $regKey -Force -ErrorAction Stop | Out-Null Set-ItemProperty -Path $regKey -Name 'installation_mode' -Value 'force_installed' -Type String -Force Set-ItemProperty -Path $regKey -Name 'update_url' -Value $updateUrl -Type String -Force Write-Host "✓ $browser ポリシー書込" -ForegroundColor Green } catch { Write-Warning " ⚠ $browser レジストリ書込失敗: $_" } } Write-Host "" Write-Host "🎉 v$ver インストール完了!" -ForegroundColor Green Write-Host "" Write-Host "次の手順:" -ForegroundColor Cyan Write-Host " 1. Chrome / Edge を完全終了(タスクマネージャで全プロセス kill 推奨)" Write-Host " 2. ブラウザ再起動" Write-Host " 3. chrome://extensions または edge://extensions で「カーセンサー個社別AIツール」が" Write-Host " 「管理者が管理しています」と表示されれば成功" Write-Host "" } finally { Start-Sleep -Seconds 1 Remove-Item -Path $tmp -Recurse -Force -ErrorAction SilentlyContinue } pause