wingetはまだ正式リリースされてないみたいね...からのぉ~、で導入してみた

f:id:ts0818:20210928181450j:plain

悲報、自分の使ってるPCがWindows 11 にアップデートできるスペックでないことが判明して、MicrosoftWindows 10から先は出さないって言ってなかったっけ?、という苛立ちを隠せない、どうもボクです。

ちなみに、

www.microsoft.com

⇧ 公式にてチェックツールが公開されてるようです。

というわけで、2021年9月28日(火)現在、正式リリースはされていないんだけど、Windowsの正統なパッケージ管理ツールを目指してるっぽい「winget」をインストールしてみました。

ただ、2021年9月28日(火)現在、「Oracle JDK 17」は「winget」でインストールできるパッケージに含まれていなかったというね(涙)。

結局、Windowsで複数のJDKを管理しようとすると手動になってしまうんかね...

Windowsで「anyenv」っぽいことするには、

とかで「Linux」環境を構築しないと駄目ってことかね...でも、それって、もうWindows環境のパッケージ管理ツールって感じではなくなってくるよね...

Web系の開発者が「Mac OS」に流れていったってのも納得ですな...

テンションがダダ下がりだけど、レッツトライ~。

 

wingetって?

Wikipediaさんによりますと、

The Windows Package Manager (also known as winget) is a free and open-source package manager designed by Microsoft for Windows 10 and Windows 11. It consists of a command-line utility and a set of services for installing applications.

https://en.wikipedia.org/wiki/Windows_Package_Manager

ISVs can use it as a distribution channel for their software packages.

https://en.wikipedia.org/wiki/Windows_Package_Manager

⇧ ってなっていて、 

Microsoftの公式のドキュメントによると、

docs.microsoft.com

Windows Package Manager is a comprehensive package manager solution that consists of a command line tool and set of services for installing applications on Windows 10.

https://docs.microsoft.com/en-us/windows/package-manager/

⇧ ってな感じで、Windows 10でアプリケーションのインストールを管理できるツール、それが、wingetですと。

まぁ、Windows 11でも使えるんだとは思うけど...

github.com

⇧ 一応、GitHubのページもあるみたいね。

インストールに必要な要件としては、

Installing the client

The client requires Windows 10 1809 (build 17763) or later at this time.

https://docs.microsoft.com/en-us/windows/package-manager/

⇧ ってことらしい。(他にも条件あった模様、顛末は後述します。)

www.winhelponline.com

⇧ 上記サイト様を参考に、自分のWindowsのOSのビルド履歴を確認してみた。

$AllBuilds = $(gci "HKLM:\System\Setup" | ? {$_.Name -match "\\Source\s"}) | % { $_ | Select @{n="UpdateTime";e={if ($_.Name -match "Updated\son\s(\d{1,2}\/\d{1,2}\/\d{4}\s\d{2}:\d{2}:\d{2})\)$") {[dateTime]::Parse($Matches[1],([Globalization.CultureInfo]::CreateSpecificCulture('en-US')))}}}, @{n="ReleaseID";e={$_.GetValue("ReleaseID")}},@{n="Branch";e={$_.GetValue("BuildBranch")}},@{n="Build";e={$_.GetValue("CurrentBuild")}},@{n="ProductName";e={$_.GetValue("ProductName")}},@{n="InstallTime";e={[datetime]::FromFileTime($_.GetValue("InstallTime"))}} };

$AllBuilds | Sort UpdateTime | ft UpdateTime, ReleaseID, Branch, Build, ProductName

f:id:ts0818:20210814181925p:plain

⇧ 見た感じ、「winget」をインストールするための条件は満たしているっぽい。

 

wingetは正式リリースされて...ないやん...

というか、

www.atmarkit.co.jp

Microsoftが開発していたパッケージマネジャー「winget」が正式リリースされた。wingetを使うことで、アプリやツールがコマンドで簡単にインストール可能になるため、スクリプトで同じ環境をすぐに再現できるようになる。wingetのインストールから簡単な使い方までを紹介しよう。

アプリのインストールや更新をコマンドでサクっと実行「winget」の使い方:Windows 10 The Latest - @IT

⇧ 上記サイト様に完全に騙されたんだけどね...

おかげさまで、むちゃくちゃ時間を浪費してしまったではないか...

というのも、

devblogs.microsoft.com

How do I get it?

If you are running on any current Windows Insider build or you have signed up for the Windows Package Manager Insider group you may already have it. The Windows Package Manager is distributed with the App Installer from the Microsoft Store. You can also download and install the Windows Package Manager from our GitHub releases page or just directly install the latest available version.

https://devblogs.microsoft.com/commandline/windows-package-manager-1-0/

⇧ って言っていて、GitHubのページでも、

Installing the client

The client requires Windows 10 1809 (build 17763) or later at this time.

https://devblogs.microsoft.com/commandline/windows-package-manager-1-0/

Microsoft Store [Recommended]

The client is distributed within the App Installer package. While this package is pre-installed on Windows, the client will not be made generally available during the Preview period. In order to get automatic updates from the Microsoft Store that contain the client, one must do one of the following:

https://devblogs.microsoft.com/commandline/windows-package-manager-1-0/

⇧ ってなっていて、要するに「winget」を使いたい場合は、「Insider build」または「Preview flight ring」に必ず参加してから、「Microsoft Store」で「App Installer」をインストールすれば良いよ、ってことなんですな。

つまり、 

insider.windows.com

Windows Insider Program とは何ですか?

Windows Insider Programは、何百万人もの Windows の最大ファンのコミュニティで、最新の情報をいち早く見ることができます。Windows Insider は、Windows Insider Preview ビルドと呼ばれるプラットフォームのプレビューを実行して、フィードバックを送信し、直接弊社のエンジニアと Windows の未来を形成していきます。

https://insider.windows.com/ja-jp/about-windows-insider-program

⇧ 思いっきり、試験的な試みを脱していないってことですな。

www.kkaneko.jp

⇧ 上記サイト様によりますと、「.msixbundle」って拡張子のファイルからインストールできるっぽい、どちらにしろ「winget」の正式リリース版がインストールできるわけではないけど。

なので、2021年8月16日(月)2021年9月28日(火)現在、「winget.exe」を使いたい場合は(ブログの記事を書いてて、1ヵ月ぐらい時間が空いてしまっていたようです)、 

■前提条件

  • Windows 10 1809 (build 17763) or later

■インストール方法

  1. Insider build、または、Preview flight ringに参加している場合
    Micorosoft StoreでApp InstallerをインストールすればOK
  2. 上記のいずれにも参加していない場合
    GitHubで公開されてる拡張子「.msixbundle」のファイルからインストールする

のいずれかをするしかないっぽい。

もう一つ、「source code」からビルドするって方法もあるかもですが、方法がよく分からんです...

これを、どうやったら正式リリースと解釈できるのか謎過ぎる...

拡張子「.msixbundle」ファイルからインストール方法については、

bitto.jp

PowerShell を管理者権限で起動しましょう。
PowerShell 本体をアップグレードする場合、PowerShellそのものの使用中は更新できません。
なので、PowerShell はスタートメニューに登録されているWindows PowerShell (x86) の方を管理者権限で立ち上げます。

そうするとAdd-AppxPackage コマンドからインストールできます。

Add-AppxPackage PowerShell-7.0.1-win-arm64.msix  

これで無事インストールできました! 

msixパッケージのインストール方法 | 猫好きが猫以外のことも書く 

⇧ 上記サイト様が詳しいです。

ちなみに、「Windows 10 1809 (build 17763) or later」って条件を満たしていても、「Insider build」か「Preview flight ring」のどちらかに参加してないと、「Microsoft Store」で「App Installer」をインストールしても、「winget.exe」はインストールされないらしい。

試しに、「Microsoft Store」で「アプリ インストーラー」をインストールしてみて、

f:id:ts0818:20210814175543p:plain

⇧ ってな感じで、「アプリ インストーラー」がインストールされたんだけど、Windows の「設定」>「アプリと機能」 >「アプリ実行エイリアス」を確認してみると、

f:id:ts0818:20210814174810p:plain

f:id:ts0818:20210814175740p:plain

⇧「Windows Package Manager Client」が表示されていない、つまり、「winget.exe」がインストールされませんと。

致し方ないので、一旦、アンインストールしますと。

Get-AppxPackage *Microsoft.DesktopAppInstaller* | Remove-AppxPackage    

f:id:ts0818:20210814180621p:plain

f:id:ts0818:20210814180914p:plain

f:id:ts0818:20210814181008p:plain

⇧ 「Microsoft Store」などのウィンドウを開き直すと、アンインストールされたことが確認できました。

というわけで、正式リリースされるまで待つべきか、試験的だけどインストールすべきか悩ましいところですな...

インストールしてみます。

github.com

f:id:ts0818:20210928182734p:plain

f:id:ts0818:20210928162647p:plain

拡張子が「.msixbundle」のファイルがダウンロードできたら、「PowerShell」を「管理者権限」で起動して、以下のコマンドを実行。

Add-AppxPackage [.msixbundleファイルまでのパス]\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle

f:id:ts0818:20210928163248p:plain

ちなみに、拡張子が「.msixbundle」のファイルからインストールした「winget」は、

docs.microsoft.com

アプリ パッケージは C:\Program Files\WindowsApps\package_name にインストールされ、実行可能プログラム名は app_name.exe になります。

https://docs.microsoft.com/ja-jp/windows/msix/desktop/desktop-to-uwp-behind-the-scenes#installation

⇧ 上記のディレクトリにインストールされるってことですかね?

上記のディレクトリを「エクスプローラー」で開こうとしたら、

f:id:ts0818:20210929110402p:plain

ディレクトリにアクセス権が無いって、起こられたので、ディレクトの構成を適当なファイルで保存して確認することにしました。

管理者権限でコマンドプロンプトを起ち上げて、以下のコマンドを実行。ファイルは事前に作成してなくても、コマンド実行後に作成されるようです。

tree /f >[保存先]    

f:id:ts0818:20210928170225p:plain

保存されたファイルを開いてみると、

f:id:ts0818:20210928170142p:plain

「winget.exe」は見つからんかったけど、「AppInstaller.exe」なるは見つかる。

f:id:ts0818:20210928170012p:plain

一応、このPCのどこかにはインストールされているらしいけど...

f:id:ts0818:20210928170504p:plain

ということで、「winget.*」で検索してみる。

worthliv.com

C:\>cd 目的のディレクトリ
C:\目的のディレクトリ>dir /s /b ファイル名*

とすれば、目的のファイル名を探せます。
まずは、cdで目星の付いているディレクトリへ移動。これが抜けると、検索にたいそう時間がかかってしまうので。

Windows、ファイル名で検索するdirコマンド | Worth Living

⇧ 上記サイト様が詳しいです。

いざ、検索。

cd C:\
dir /s /b winget.*

f:id:ts0818:20210928174547p:plain

⇧ う~ん、何か、ややこしいことに、「AppInstaller.exe」は「C:\Program Files\WindowsApps\package_name」のディレクトリにインストールされるようなんですが、「winget.exe」については、「C:\Users\Toshinobu\AppData\Local\Microsoft\WindowsApps」と、

f:id:ts0818:20210928175215p:plain

「C:\Users\Toshinobu\AppData\Local\Microsoft\WindowsApps\Microsoft.DesktopAppInstaller_xxxxxxxxxxxxx」にインストールされるみたい...

f:id:ts0818:20210928175343p:plain
Windowsカオスだな~...

エクスプローラー」でも検索かけてみました。かなり時間がかかりますが...

f:id:ts0818:20210928175518p:plain

毎回モヤモヤ感が半端ない...

何て言うか、ネットの情報の錯綜っぷりが凄まじいよね...

まぁ、いまのところ「Oracle JDK 17」が「winget」でインストールできないってことを知ったので、「winget」インストールした意味ないな~と意気消沈気味です...

f:id:ts0818:20210928183129p:plain

今回はこのへんで。