WinGetのパッケージリポジトリにPackerとGolangを登録しているのですが、PRコメントでいろいろ修正もらったので、備忘録として書いておきます。なんか、自分が登録した行数よりも多くコメント受けて、申し訳ない気持ちでいっぱいです…。
Wingetcreate update 実行後再度チェック忘れずに
リリース日付
1.20.4/1.19.9を提出したときReleaseDate
という項目が1.20.3の時のままだったので直してねと言われました。wingetcreateツールでは直してくれない?ようなので、明示的に手作業で直しましょう。レビュワーがUS時間なので、日本の前日の日付でいわれましたが、アプリのリリース日にすればいいんじゃないかなと思います。
PackageVersion
PackageVersion:
が1.20.3のままだったので、指摘受けました。ここもwingetcreateで直してくれないので、手作業でした*1。ちなみにPackageVersionとmanifestのフォルダー構造が違っている状態でもvalidationは通ります。
MinimumOSVersion
いらない?みたいですね。削除されました。
InstallerType
これはアプリケーションインストーラーがなにで作られているかという指定です。指定可能な項目はexe, msi, msix, inno, wix, nullsoft, appxです。wingetcreateコマンドが判定してくれるので、自分で指定する必要はないのですが、x86/x64/Arm64の複数のバイナリーがあった場合、Architectureごとに指定されるのがデフォルトです。しかし、通常Architecture単位で別のインストーラーを指定するアプリはないので、全部同じであった場合、一つにまとめればいいようです。
PackageIdentifier: GoLang.Go PackageVersion: 1.20.4 InstallerLocale: en-US InstallerType: wix Scope: machine (略) Installers: - Architecture: x86 InstallerUrl: https://dl.google.com/go/go1.20.4.windows-386.msi InstallerSha256: 03BDB95782028AF5140233DE1649D5E1B76B046955502F9C51FC364DC1AC4C5C ProductCode: '{7697003C-D4E0-4007-8A23-8296D9F87917}' AppsAndFeaturesEntries: - DisplayName: Go Programming Language 386 go1.20.4 UpgradeCode: '{1C3114EA-08C3-11E1-9095-7FCA4824019B}' (略)
望ましい指定方法。
PackageIdentifier: GoLang.Go PackageVersion: 1.20.3 InstallerLocale: en-US Scope: machine (略) Installers: - Architecture: x64 InstallerType: wix InstallerUrl: https://golang.google.cn/dl/go1.20.3.windows-amd64.msi InstallerSha256: 233E9ED046D5664131328A5A7E7F6DC0A4AB6D3FA0D17F8FC655A4A5BFEF572D ProductCode: '{0BA1000D-4944-4E57-9DE4-34AEB4602D39}' - Architecture: x86 InstallerType: wix InstallerUrl: https://golang.google.cn/dl/go1.20.3.windows-386.msi InstallerSha256: 9B7D44C4C4D50C386F81FCEBFA48FFA792DDD12E54781321834259754EC2E374 ProductCode: '{B34ABCB0-5637-414E-830D-3BFD61116D9B}' - Architecture: arm64 InstallerType: wix InstallerUrl: https://golang.google.cn/dl/go1.20.3.windows-arm64.msi InstallerSha256: 3A76DE1542F456D60128716811801AF68E14FDC8BF73DD4E2305BA5B631DB5A6 ProductCode: '{5FD2C5FC-91A9-424B-8508-4ED8635816A7}' ManifestType: installer
冗長な方法。
ダウンロードURI
最初、GoのリリースページにあるURLからコピーしたhttps://golang.google.cn/dl/
を書いていたらGoogleのURL(https://dl.google.com/go/
)に直されました。cnだからたぶん私のロケーションから最も近いエッジサイトが自動的に表示されていてそれじゃダメってことなのでしょうか。
ポータブルアプリの注意点
インストーラーがあるものばかりならいいのですが、ないものもしばしば存在します。私が登録しているPackerとかもそれ。zipファイルで提供されているものと、exeがそのまま存在するものと二種類あります。
zipの場合
私が登録しているPackerを例にとってみるとこんな感じ。
PackageVersion: 1.8.7 InstallerType: zip ReleaseDate: 2023-05-04 Installers: - Architecture: x64 NestedInstallerType: portable NestedInstallerFiles: - RelativeFilePath: packer.exe PortableCommandAlias: packer (略)
zipファイルを展開してほしいので、InstallerType
はzip
、そして、アーキテクチャごとのzipファイルの中に何があるかということでNestedInstallerType: portable
つまり、単体のexeだよという指定です。RelativeFilePath
は対象のexe名、でいいのかな。そしてPortableCommandAlias
はシンボリックリンク名です。Chocolateyでは所定のフォルダーに展開して、そのフォルダーに環境変数PATHを設定しますが、WinGetではシンボリックリンクを設定します。
単体のexeをそのまま配布している場合
こちらはちょっと変わります。Pattern and PracticeのM365コマンドラインツールで紹介します。
PackageIdentifier: pnpm.pnpm PackageVersion: 8.4.0 MinimumOSVersion: 10.0.0.0 InstallerType: portable Commands: - pnpm ReleaseDate: 2023-05-02 Installers: - Architecture: x64 InstallerUrl: https://github.com/pnpm/pnpm/releases/download/v8.4.0/pnpm-win-x64.exe
こちらはnode.jsアプリをWindowsのexeファイルにしています。このような場合はInstallerType: portable
で、単独のexeであると指定しておけばpnpm-win-x64.exe
をpnpm
という名前で登録してくれます。
*1:これくらいツールでやってくれてもと思った…あとでwingetcreateのソース見てみたい