|
1 | 1 | #Requires -Version 5.1 |
2 | 2 | <# |
3 | 3 | .SYNOPSIS |
4 | | - Npcap SDK をダウンロード・展開し、環境変数 NPCAP_SDK_DIR をセットする。 |
| 4 | + Download and install the Npcap SDK, then set NPCAP_SDK_DIR. |
5 | 5 | .DESCRIPTION |
6 | | - build.rs が NPCAP_SDK_DIR を読んで cargo:rustc-link-search を出力するため、 |
7 | | - このスクリプトでローカル開発環境を準備する。 |
| 6 | + build.rs reads NPCAP_SDK_DIR and emits cargo:rustc-link-search. |
| 7 | + This script prepares a local Windows development environment. |
8 | 8 | #> |
9 | 9 |
|
10 | 10 | Set-StrictMode -Version Latest |
11 | 11 | $ErrorActionPreference = "Stop" |
12 | 12 |
|
13 | | -# --------------------------------------------------------------------------- |
14 | | -# 設定値(変更が必要な場合はここを編集) |
15 | | -# --------------------------------------------------------------------------- |
16 | | -$SdkVersion = "1.13" |
17 | | -$SdkUrl = "https://npcap.com/dist/npcap-sdk-$SdkVersion.zip" |
18 | | -$InstallPath = "C:\npcap-sdk" |
19 | | -$EnvVarName = "NPCAP_SDK_DIR" |
20 | | -$ZipPath = Join-Path $env:TEMP "npcap-sdk-$SdkVersion.zip" |
| 13 | +$SdkVersion = "1.13" |
| 14 | +$SdkUrl = "https://npcap.com/dist/npcap-sdk-$SdkVersion.zip" |
| 15 | +$InstallPath = "C:\npcap-sdk" |
| 16 | +$EnvVarName = "NPCAP_SDK_DIR" |
| 17 | +$ZipPath = Join-Path $env:TEMP "npcap-sdk-$SdkVersion.zip" |
| 18 | + |
| 19 | +function Set-NpcapSdkEnvVar { |
| 20 | + $currentValue = [System.Environment]::GetEnvironmentVariable($EnvVarName, "User") |
| 21 | + if ($currentValue -eq $InstallPath) { |
| 22 | + Write-Host "[INFO] User environment variable $EnvVarName is already set." |
| 23 | + return |
| 24 | + } |
| 25 | + |
| 26 | + [System.Environment]::SetEnvironmentVariable($EnvVarName, $InstallPath, "User") |
| 27 | + $env:NPCAP_SDK_DIR = $InstallPath |
| 28 | + Write-Host "[INFO] Set user environment variable $EnvVarName to $InstallPath." |
| 29 | +} |
| 30 | + |
| 31 | +function Test-NpcapSdkLayout { |
| 32 | + $libPath = Join-Path $InstallPath "Lib\x64" |
| 33 | + if (-not (Test-Path $libPath)) { |
| 34 | + Write-Error "[ERROR] Expected SDK library directory was not found: $libPath" |
| 35 | + exit 1 |
| 36 | + } |
| 37 | +} |
21 | 38 |
|
22 | | -# --------------------------------------------------------------------------- |
23 | | -# メイン処理 |
24 | | -# --------------------------------------------------------------------------- |
25 | 39 | function Main { |
26 | | - # 既にインストール済みか確認 |
27 | 40 | if (Test-Path $InstallPath) { |
28 | | - Write-Host "[INFO] $InstallPath は既に存在します。" |
29 | | - $answer = Read-Host "上書きしますか? (y/N)" |
| 41 | + Write-Host "[INFO] $InstallPath already exists." |
| 42 | + $answer = Read-Host "Overwrite it? (y/N)" |
30 | 43 | if ($answer -ne "y") { |
31 | | - Write-Host "[INFO] スキップしました。" |
32 | | - Set-EnvVar |
| 44 | + Write-Host "[INFO] Skipped download and extraction." |
| 45 | + Test-NpcapSdkLayout |
| 46 | + Set-NpcapSdkEnvVar |
33 | 47 | return |
34 | 48 | } |
| 49 | + |
35 | 50 | Remove-Item -Recurse -Force $InstallPath |
36 | | - Write-Host "[INFO] 既存ディレクトリを削除しました。" |
| 51 | + Write-Host "[INFO] Removed existing directory." |
37 | 52 | } |
38 | 53 |
|
39 | | - # ダウンロード |
40 | | - Write-Host "[INFO] Npcap SDK $SdkVersion をダウンロード中..." |
| 54 | + Write-Host "[INFO] Downloading Npcap SDK $SdkVersion..." |
41 | 55 | try { |
42 | 56 | Invoke-WebRequest -Uri $SdkUrl -OutFile $ZipPath -UseBasicParsing |
43 | 57 | } |
44 | 58 | catch { |
45 | | - Write-Error "[ERROR] ダウンロードに失敗しました: $_" |
| 59 | + Write-Error "[ERROR] Failed to download Npcap SDK: $_" |
46 | 60 | exit 1 |
47 | 61 | } |
48 | 62 |
|
49 | 63 | if (-not (Test-Path $ZipPath)) { |
50 | | - Write-Error "[ERROR] ZIPファイルが見つかりません: $ZipPath" |
| 64 | + Write-Error "[ERROR] ZIP file was not found: $ZipPath" |
51 | 65 | exit 1 |
52 | 66 | } |
53 | 67 |
|
54 | | - # 展開 |
55 | | - Write-Host "[INFO] $InstallPath に展開中..." |
| 68 | + Write-Host "[INFO] Extracting to $InstallPath..." |
56 | 69 | try { |
57 | 70 | Expand-Archive -Path $ZipPath -DestinationPath $InstallPath -Force |
58 | 71 | } |
59 | 72 | catch { |
60 | | - Write-Error "[ERROR] 展開に失敗しました: $_" |
| 73 | + Write-Error "[ERROR] Failed to extract Npcap SDK: $_" |
61 | 74 | exit 1 |
62 | 75 | } |
63 | 76 |
|
64 | | - # ZIPファイルを削除 |
65 | 77 | Remove-Item -Force $ZipPath -ErrorAction SilentlyContinue |
66 | 78 |
|
67 | | - # 環境変数をセット |
68 | | - Set-EnvVar |
| 79 | + Test-NpcapSdkLayout |
| 80 | + Set-NpcapSdkEnvVar |
69 | 81 |
|
70 | 82 | Write-Host "" |
71 | | - Write-Host "[SUCCESS] Npcap SDK $SdkVersion のセットアップが完了しました。" |
72 | | - Write-Host " インストール先 : $InstallPath" |
73 | | - Write-Host " 環境変数 : $EnvVarName = $InstallPath" |
| 83 | + Write-Host "[SUCCESS] Npcap SDK $SdkVersion setup completed." |
| 84 | + Write-Host " Install path : $InstallPath" |
| 85 | + Write-Host " Env var : $EnvVarName = $InstallPath" |
74 | 86 | Write-Host "" |
75 | | - Write-Host "※ 新しいターミナルを開くと環境変数が反映されます。" |
76 | | -} |
77 | | - |
78 | | -function Set-EnvVar { |
79 | | - $currentValue = [System.Environment]::GetEnvironmentVariable($EnvVarName, "User") |
80 | | - if ($currentValue -eq $InstallPath) { |
81 | | - Write-Host "[INFO] 環境変数 $EnvVarName は既に設定済みです。" |
82 | | - return |
83 | | - } |
84 | | - [System.Environment]::SetEnvironmentVariable($EnvVarName, $InstallPath, "User") |
85 | | - # 現在のセッションにも反映 |
86 | | - $env:NPCAP_SDK_DIR = $InstallPath |
87 | | - Write-Host "[INFO] ユーザー環境変数 $EnvVarName を $InstallPath に設定しました。" |
| 87 | + Write-Host "Open a new terminal if another process needs the updated user environment." |
88 | 88 | } |
89 | 89 |
|
90 | 90 | Main |
0 commit comments