バージョン全然更新されないとかで、困ったときに自分でバージョンを上げる PR を作るまでのメモ。
まず winget のパッケージは https://github.com/microsoft/winget-pkgs で管理されてる。最終的に、ここに PR を送る事ができればよい。 パッケージを更新したり作成したりするのは https://github.com/microsoft/winget-create を使うのが楽。
最終的な成果物は microsoft/winget-pkgs#106570
まず winget で wingetcreate
を手に入れる (scoop とかでもOK)。
PS C:\Users\Nobody> winget install wingetcreate
引数をこんな感じで指定して実行すると新しいマニフェストが作られる
wingetcreate update --urls <インストーラのURL> --version <バージョン> <パッケージID>
具体的にはこんな感じで
PS C:\Users\Nobody> wingetcreate update --urls https://www.kensington.com/siteassets/software-support/kensingtonworks/february-2023/kensingtonworks_3.1.4_1677178444.msi --version 3.1.4 Kensington.KensingtonWorks
Kensington.KensingtonWorks の最新のマニフェストを取得しています
ダウンロードして解析しています: https://www.kensington.com/siteassets/software-support/kensingtonworks/february-2023/kensingtonworks_3.1.4_1677178444.msi...
マニフェストのプレビューを生成しています...
バージョン マニフェストのプレビュー:
# Created using wingetcreate 1.2.5.0
# yaml-language-server: $schema=https://aka.ms/winget-manifest.version.1.4.0.schema.json
PackageIdentifier: Kensington.KensingtonWorks
PackageVersion: 3.1.4
DefaultLocale: en-US
ManifestType: version
ManifestVersion: 1.4.0
インストーラー マニフェストのプレビュー:
# Created using wingetcreate 1.2.5.0
# yaml-language-server: $schema=https://aka.ms/winget-manifest.installer.1.4.0.schema.json
PackageIdentifier: Kensington.KensingtonWorks
PackageVersion: 3.1.4
Installers:
- InstallerLocale: en-US
Architecture: x86
InstallerType: wix
InstallerUrl: https://www.kensington.com/siteassets/software-support/kensingtonworks/february-2023/kensingtonworks_3.1.4_1677178444.msi
InstallerSha256: 9FAE173107AE4B1113318D6CD16324BA45D31D9080CCFFC6E351AC1693773C87
ProductCode: '{422D0B7F-FA1A-46ED-8F5F-34FB11EB939F}'
ManifestType: installer
ManifestVersion: 1.4.0
既定のロケール マニフェストのプレビュー:
# Created using wingetcreate 1.2.5.0
# yaml-language-server: $schema=https://aka.ms/winget-manifest.defaultLocale.1.4.0.schema.json
PackageIdentifier: Kensington.KensingtonWorks
PackageVersion: 3.1.4
PackageLocale: en-US
Publisher: Kensington
PackageName: KensingtonWorks
License: Proprietary
ShortDescription: KensingtonWorks is a tool for personalising your experience with Kensington trackballs and mice
ManifestType: defaultLocale
ManifestVersion: 1.4.0
マニフェストが C:\Users\Nobody\manifests\k\Kensington\KensingtonWorks\3.1.4 に保存されました
マニフェストの検証に成功しました: True
gsudo を入れる
PS C:\Users\Nobody> scoop install gsudo
ローカルのマニフェストをインストールできるようにする
PS C:\Users\Nobody> sudo winget settings --enable LocalManifestFiles
管理者設定が有効になりました。
検証
PS C:\Users\Nobody> winget validate manifests\k\Kensington\KensingtonWorks\3.1.4
マニフェストの検証は成功しました。
インストール
PS C:\Users\Nobody> winget install -m manifests\k\Kensington\KensingtonWorks\3.1.4
見つかりました KensingtonWorks [Kensington.KensingtonWorks] バージョン 3.1.4
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました
wingetcreate で PR の作成までできる。
PS C:\Users\Nobody> wingetcreate submit manifests\k\Kensington\KensingtonWorks\3.1.4
このコマンドを続行するには、GitHub アカウントまたはパーソナルアクセストークンがリンクされている必要があります。
GitHub ログインが完了するまで、コマンドの実行は一時停止されます。
GitHub ログインを開始しています...
Web ブラウザーを起動しています... 既定の web ブラウザーが起動しない場合は、次にアクセスしてください: https://github.com/login/device
...
実行すると fork, push してブラウザを開いてくれる。後は必要事項埋めてあげればよい。
しばらく間を開けてから新しく submit する場合、以下のメッセージが出て PR が作成できない事がある:
- 日本語:
フォークされたリポジトリへの参照を作成できません。これは、フォークされたリポジトリの前にあるコミットの数が多すぎる場合に発生する可能性があります。フォークを同期して、もう一度お試しください。
- 英語:
Unable to create a reference to the forked repository. This can be caused when the forked repository is behind by too many commits. Sync your fork and try again.
この時は GitHub にある winget-pkgs の自分のフォーク (例えば https://github.com/buzztaiki/winget-pkgs) の master ブランチを最新に同期してから再度試行すると良い。