0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WindowsでMultica CLIをリポジトリ内だけに導入する(ユーザーPATHを汚さない)

0
Posted at

結論

Multicaの公式Windowsインストーラーは、CLIをユーザープロファイル配下へ配置し、ユーザーPATHへ追加します。

一方、次のような要件では、Gitリポジトリ内へバージョン固定で配置する方法が扱いやすいです。

  • ツールの実体を特定のリポジトリ内に閉じたい
  • ユーザーPATHを変更したくない
  • 複数プロジェクトで異なるCLIバージョンを使い分けたい
  • インストール元とチェックサムを記録したい

この記事では、Windows x64環境へMultica CLI 0.4.7を配置し、公式のchecksums.txtでSHA-256を検証したうえで、リポジトリ内のラッパーから起動します。

認証やdaemon起動は扱いません。CLIの安全な配置と起動確認だけを対象にします。

環境

  • Windows 11 x64
  • PowerShell
  • Multica CLI 0.4.7
  • 配置先: <YOUR_REPOSITORY>\.tools\multica\v0.4.7\

Multicaは、Claude CodeやCodexなどのAI coding toolをローカルdaemonから実行できる管理基盤です。公式ガイドでは、Windows向けにPowerShellインストーラーが案内されています。

なぜ公式のワンライナーをそのまま使わないのか

公式のWindows向け手順は次のとおりです。

irm https://raw.githubusercontent.com/multica-ai/multica/main/scripts/install.ps1 | iex

公式インストーラーは、バイナリを%USERPROFILE%\.multica\bin\へ配置し、そのディレクトリをユーザーPATHへ追加します。

通常の端末全体へのインストールなら便利ですが、今回は「特定のリポジトリ内だけに置く」という要件に合いません。そのため、公式GitHub Releasesから配布物とチェックサムを取得して手動配置します。

1. バージョンと配置先を固定する

最初に、対象バージョンと保存先を明示します。

$version = '0.4.7'
$tag = "v$version"
$repoRoot = 'C:\path\to\<YOUR_REPOSITORY>'
$installDir = Join-Path $repoRoot ".tools\multica\$tag"
$downloadDir = Join-Path $repoRoot ".tools\multica\.download-$tag"

New-Item -ItemType Directory -Path $installDir -Force | Out-Null
New-Item -ItemType Directory -Path $downloadDir -Force | Out-Null

バージョンをlatest任せにせず固定すると、更新による挙動差を切り分けやすくなります。

2. 公式リリースとchecksums.txtを取得する

Windows x64向けのアセット名は、バージョン0.4.7ではmultica-cli-0.4.7-windows-amd64.zipです。

$asset = "multica-cli-$version-windows-amd64.zip"
$releaseBase = "https://github.com/multica-ai/multica/releases/download/$tag"
$zipPath = Join-Path $downloadDir $asset
$checksumsPath = Join-Path $downloadDir 'checksums.txt'

Invoke-WebRequest `
  -Uri "$releaseBase/$asset" `
  -OutFile $zipPath `
  -UseBasicParsing

Invoke-WebRequest `
  -Uri "$releaseBase/checksums.txt" `
  -OutFile $checksumsPath `
  -UseBasicParsing

3. SHA-256を照合する

ダウンロードできただけで展開せず、checksums.txtに記載された値と実ファイルのSHA-256を比較します。

$checksumLine = Get-Content -LiteralPath $checksumsPath |
  Where-Object { $_ -match [regex]::Escape($asset) } |
  Select-Object -First 1

if (-not $checksumLine) {
  throw "Checksum entry not found: $asset"
}

$expectedHash = ($checksumLine -split '\s+')[0].ToLowerInvariant()
$actualHash = (Get-FileHash -LiteralPath $zipPath -Algorithm SHA256).Hash.ToLowerInvariant()

if ($actualHash -ne $expectedHash) {
  throw "SHA-256 mismatch: expected=$expectedHash actual=$actualHash"
}

Write-Host "SHA-256 verified: $actualHash"

今回取得したZIPでは、次の値で一致しました。

c9940164a257e6f8ab5db9021357c8d413b2d38a45e36a4e908fbabbb0419c77

この値は0.4.7のWindows amd64向けアセットに対するものです。別バージョンでは、必ずそのリリースのchecksums.txtを参照してください。

4. リポジトリ内へ展開する

Expand-Archive `
  -LiteralPath $zipPath `
  -DestinationPath $installDir `
  -Force

$multicaExe = Join-Path $installDir 'multica.exe'

if (-not (Test-Path -LiteralPath $multicaExe)) {
  throw "multica.exe was not found: $multicaExe"
}

配置後の構造は次のようになります。

<YOUR_REPOSITORY>/
├─ .tools/
│  └─ multica/
│     └─ v0.4.7/
│        ├─ multica.exe
│        ├─ LICENSE
│        └─ README.md
└─ scripts/
   └─ multica.cmd

取得用ZIPが不要なら、チェックサム検証と展開の完了後に.download-v0.4.7を削除できます。

5. PATHを変更せずに呼び出すラッパーを作る

scripts\multica.cmdを作成します。

@echo off
"%~dp0..\.tools\multica\v0.4.7\multica.exe" %*

%~dp0は、この.cmdファイル自身が置かれているディレクトリを表します。カレントディレクトリではなくラッパーの位置を基準にするため、リポジトリの絶対パスを埋め込む必要がありません。

リポジトリルートから次のように実行できます。

.\scripts\multica.cmd version
.\scripts\multica.cmd --help

6. 起動を検証する

versionの実行結果は次のとおりでした。

multica 0.4.7 (commit: b1d5fa4ff, built: 2026-07-21T10:06:49Z)
go: go1.26.1, os/arch: windows/amd64

さらに--helpがexit code 0となり、agentissueworkspacedaemonなどのコマンド一覧が表示されることを確認しました。

PowerShellの.ps1ラッパーが動かない場合

当初はPowerShellラッパーを作りましたが、環境のExecution Policyにより次のエラーになりました。

running scripts is disabled on this system

Execution Policyを変更する方法もありますが、CLIを呼び出すだけなら.cmdラッパーで十分です。端末全体のポリシーを変えずに済むため、今回は.cmdへ切り替えました。

誤ってユーザー領域へ入れた場合の戻し方

公式インストーラー等ですでにユーザー領域へ導入しており、リポジトリ内だけに戻したい場合は、まずリポジトリ内のCLIが正常に動くことを確認します。

.\scripts\multica.cmd version

その後、ユーザーPATHから%USERPROFILE%\.multica\binを外し、不要になったユーザー領域のバイナリを削除します。認証やdaemonをすでに利用している場合、.multica配下に設定やログが存在する可能性があるため、ディレクトリ全体を無条件に削除しないでください。

今回は認証・daemon起動前だったため、ユーザー領域にはbin\multica.exeしかないことを確認してから削除しました。

注意点

  • multica setupmultica loginは、ブラウザ認証やユーザー領域への状態保存を伴います。
  • multica daemon startはバックグラウンドプロセスを起動します。
  • 本記事の検証範囲は、CLIの取得、SHA-256照合、配置、version--helpの起動確認までです。
  • バイナリをGit管理するかどうかは、リポジトリのサイズ上限や配布方針に合わせて判断してください。
  • バージョン更新時は、ラッパー内のバージョンとチェックサム記録も更新します。

参考資料

検証範囲

確認済み:

  • Windows amd64向け公式ZIPの取得
  • 公式checksums.txtとのSHA-256一致
  • リポジトリ内のmultica.exe起動
  • .cmdラッパー経由のversion--help
  • ユーザーPATHを変更しない最終構成

未確認:

  • multica login後の認証
  • multica daemon start後のagent検出
  • Multica Cloud上でのタスク実行
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?