Posted at

Chocolateyのインストール済みパッケージ一覧をCLIのみでpackage.configに吐き出す手順

More than 1 year has passed since last update.


概要

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


out_pkgs.bat

@echo off

powershell Set-ExecutionPolicy RemoteSigned
powershell .\out_pkgs.ps1
powershell Set-ExecutionPolicy Restricted



out_pkgs.ps1

$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



実行手順


スクリプト配置


  1. 管理者権限でPowerShell端末を起動する。

    Windows10環境でしたら、Winキー + XAで管理者権限でPowerShell端末を起動できます。

  2. 任意の作業ディレクトリに移動する。

  3. 上記の内容の、下記の2つのスクリプトをカレントディレクトリに配置する。


    • out_pkgs.bat

    • out_pkgs.ps1




スクリプト実行



  1. lsを実行して、上記2つのスクリプトがカレントディレクトリに存在することを確認する。


  2. .\out_pkgs.batと入力して実行する。


確認



  1. lsを実行して、package.configが生成されていることを確認する。


  2. cat .\package.configと入力して実行する。

    choco list -localonlyと入力して実行する。

    上記2つのコマンドの実行結果を比較して、インストールされているものに相違がないことを確認します。

    ※今回はバージョン情報をpackage.configに記載しないようにしているので、
    バージョン情報に差異があるのは仕様です。


パッケージのインストール方法


  1. 管理者権限でPowerShell端末を起動する。

  2. 任意の作業ディレクトリに移動する。

  3. 上記手順で作成したpackage.configをカレントディレクトリに配置する。


  4. lsを実行して、package.configがカレントディレクトリに存在することを確認する。


  5. choco install package.config -yを実行する。

  6. インストールが進むため、完了するまで待機する。