Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
16
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

@jiro4989

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

概要

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. インストールが進むため、完了するまで待機する。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
16
Help us understand the problem. What are the problem?