WinGet収録アプリのバージョンアップについて

概要

最近WinGetで環境構築をしているのですが、収録されているアプリで古いものがありました。どのようなバージョン管理をしているのか調べてみたのですが、なんとかなり人手で対応していることがわかりました。。。

WinGetのパッケージ管理リポジトリ

GitHub - microsoft/winget-pkgs: The Microsoft community Windows Package Manager manifest repository
The Microsoft community Windows Package Manager manifest repository - microsoft/winget-pkgs

上記のGitHub上でWinGetのパッケージは管理されていました。このリポジトリを変換してAzure上で実際のファイル配信を行っているようです。

https://github.com/microsoft/winget-pkgs/tree/master/manifests/a/ArduinoSA/CLI

今回使ってみたかったのはArduino CLIになります。上記のリポジトリになるのですが、1系のバージョンがまったく入っていませんでした。そこで最新バージョンの1.0.4を登録してみました。

登録ツールのセットアップ

winget install wingetcreate

上記のコマンドでWingetCreateを入れます。

GitHub - microsoft/winget-create: The Windows Package Manager Manifest Creator command-line tool (aka wingetcreate)
The Windows Package Manager Manifest Creator command-line tool (aka wingetcreate) - microsoft/winget-create

上記で開発がすすめられていて、コマンドなどのドキュメントもあります。

Arduino Cliを登録してみる

セットアップファイルのURLを調べる

GitHub - arduino/arduino-cli: Arduino command line tool
Arduino command line tool. Contribute to arduino/arduino-cli development by creating an account on GitHub.

上記で配布されていますので、リリースページから該当セットアップファイルのURLを確認します。

Windows用のセットアップファイルがありません。でもよく見るとShow all 16 assetsというリンクがあります。

すると上記のURLを確認することができました。

セットアップファイルから設定ファイルの自動作成

wingetcreate update --urls https://github.com/arduino/arduino-cli/releases/download/v1.0.4/arduino-cli_1.0.4_Windows_64bit.msi --version 1.0.4 ArduinoSA.CLI

登録済みのアプリケーションなので「ArduinoSA.CLI」に対応するセットアップファイルのURLとバージョンを引数にいれて呼び出すと自動的に設定ファイルが生成されます。

ローカルマニフェストの実行許可

winget settings --enable LocalManifestFiles

管理者権限のCMDなどで上記を実行することで、ローカルにあるファイルからWinGetのセットアップができるようになります。

設定ファイルのチェック

winget validate manifests\a\ArduinoSA\CLI\1.0.4

自動生成されたファイルが正しいのかを確認します。実際のところ自動生成なので間違っていることはありません。昔は手で書いていたのでこの手順が必要でした。

インストールテスト

winget install -m manifests\a\ArduinoSA\CLI\1.0.4

上記のコマンドでローカルマニフェストからセットアップを実行して、正しく動くかを確認します。

プルリクエストを提出

wingetcreate submit manifests\a\ArduinoSA\CLI\1.0.4

上記で自動的にGitHubにプルリクエストを飛ばしてくれます。

確認

ArduinoSA.CLI version 1.0.4 by tanakamasayuki · Pull Request #175025 · microsoft/winget-pkgs
Checklist for Pull Requests Have you signed the Contributor License Agreement? Is there a linked Issue?Manifests Have yo...

実際のプルリクエストは上記でした。ライセンスに同意するのを一度実施する必要があります。その後は自動チェックをして、その後にコミッターの人が確認後に承認されると反映されます。

反映の確認

winget remove ArduinoSA.CLI
winget install ArduinoSA.CLI

とりあえず入っているものを削除してから、最新のものをセットアップしなおして動作確認をします。

まとめ

GitHubのリリースから自動的に取ってきて更新しているのかなと思ったのですが、非常に泥臭く更新作業が行われていました。

同じようにArduino IDEの2.3.3がリリースされたので更新してみましたが、こっちはもう少し面倒な感じになっていました。どうも最初に人が設定ファイルを作成すると、そのファイルに合わせた項目を設定する必要があるらしく、微妙に手順が異なりました。

M5Burnerでも新規登録しようと思ったのですが、CDNが外部からの直接ダウンロードをブロックしているようで諦めました。一応ZIPファイルでのPortableアプリにも対応しているのでWinGetにダウンロードさえできえれば登録できそうです。

みなさんも使いたいアプリがWinGetに収録されていなかったり、古い場合にはがんがん登録作業をすると他の人も幸せになれると思います。

コメント