11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Posted at

概要

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. インストールが進むため、完了するまで待機する。
11
16
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
11
16

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?