概要
Windowsのパッケージ管理ツールのchocolateyで、
インストール済みパッケージ一覧をpackage.configというXMLファイルに出力します。
※今回の手順ではインストールするパッケージのバージョンについては考慮しません。
理由
chocolateyでパッケージをインストールする方法はいくつかあって、
ひとつはシンプルにchoco install packagename
する方法。
もう一つは、choco install package.config
を実行する方法。
package.configというインストールしたいパッケージの情報を記載したXMLファイルを読み込ませて一気にインストールする方法です。
このpackage.configですが、chocolateyguiというツールを使用すれば
インストール済みパッケージをpackage.configというファイルとして
エクスポートできるそうですが、
chocolatey単体ではどうもできない?のかググっても情報が見つかりませんでした。
設定ファイルだけ出力できればGitHubでバージョン管理することもできますし、
他の環境に以降するのも容易になります。
しかしエクスポートのためだけにツール入れるのもあれだったので、
せっかくなので簡単なスクリプトを書いてXMLとして出力すれば
解決できそうだと考えた次第です。
動作確認環境
項目 | バージョン |
---|---|
OS | Windows10 Home |
PowerShell | 5.1.16299.98 |
chocolatey | v0.10.8 |
スクリプト
作成するスクリプトは下記の2つです。
- out_pkgs.bat
- out_pkgs.ps1
@echo off
powershell Set-ExecutionPolicy RemoteSigned
powershell .\out_pkgs.ps1
powershell Set-ExecutionPolicy Restricted
$outFileName = "package.config"
echo "<?xml version=`"1.0`" encoding=`"utf-8`"?>`n<packages>" | Out-File $outFileName -Encoding utf8
choco list -localonly | sls "(chocolatey|packages installed)" -NotMatch | % {
$packageName = ([string]$_).Split(" ")[0]
echo " <package id=`"$packageName`" />"
} | Out-File $outFileName -Append -Encoding utf8
echo "</packages>" | Out-File $outFileName -Append -Encoding utf8
実行手順
スクリプト配置
- 管理者権限でPowerShell端末を起動する。
Windows10環境でしたら、Winキー + X
→A
で管理者権限でPowerShell端末を起動できます。 - 任意の作業ディレクトリに移動する。
- 上記の内容の、下記の2つのスクリプトをカレントディレクトリに配置する。
- out_pkgs.bat
- out_pkgs.ps1
スクリプト実行
-
ls
を実行して、上記2つのスクリプトがカレントディレクトリに存在することを確認する。 -
.\out_pkgs.bat
と入力して実行する。
確認
-
ls
を実行して、package.configが生成されていることを確認する。 -
cat .\package.config
と入力して実行する。
choco list -localonly
と入力して実行する。
上記2つのコマンドの実行結果を比較して、インストールされているものに相違がないことを確認します。
※今回はバージョン情報をpackage.configに記載しないようにしているので、
バージョン情報に差異があるのは仕様です。
パッケージのインストール方法
- 管理者権限でPowerShell端末を起動する。
- 任意の作業ディレクトリに移動する。
- 上記手順で作成したpackage.configをカレントディレクトリに配置する。
-
ls
を実行して、package.configがカレントディレクトリに存在することを確認する。 -
choco install package.config -y
を実行する。 - インストールが進むため、完了するまで待機する。