Skip to content

Instantly share code, notes, and snippets.

@buzztaiki
Last active January 27, 2024 23:26
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save buzztaiki/8e513bbff36182135204520bde86dfa3 to your computer and use it in GitHub Desktop.
Save buzztaiki/8e513bbff36182135204520bde86dfa3 to your computer and use it in GitHub Desktop.
既存の winget のパッケージをバージョンアップして、公式リポジトリに登録するまで

既存の winget のパッケージをバージョンアップして、公式リポジトリに登録するまで

バージョン全然更新されないとかで、困ったときに自分でバージョンを上げる 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 はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

PR を作成する

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 してブラウザを開いてくれる。後は必要事項埋めてあげればよい。

wingetcreate submit で PR 作成に失敗する場合

しばらく間を開けてから新しく 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 ブランチを最新に同期してから再度試行すると良い。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment