悲報、自分の使ってるPCがWindows 11 にアップデートできるスペックでないことが判明して、Microsoft はWindows 10から先は出さないって言ってなかったっけ?、という苛立ちを隠せない、どうもボクです。
ちなみに、
⇧ 公式にてチェックツールが公開されてるようです。
というわけで、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.
ISVs can use it as a distribution channel for their software packages.
⇧ ってなっていて、
Microsoftの公式のドキュメントによると、
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.
⇧ ってな感じで、Windows 10でアプリケーションのインストールを管理できるツール、それが、wingetですと。
まぁ、Windows 11でも使えるんだとは思うけど...
⇧ 一応、GitHubのページもあるみたいね。
インストールに必要な要件としては、
Installing the client
The client requires Windows 10 1809 (build 17763) or later at this time.
⇧ ってことらしい。(他にも条件あった模様、顛末は後述します。)
⇧ 上記サイト様を参考に、自分の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
⇧ 見た感じ、「winget」をインストールするための条件は満たしているっぽい。
wingetは正式リリースされて...ないやん...
というか、
Microsoftが開発していたパッケージマネジャー「winget」が正式リリースされた。wingetを使うことで、アプリやツールがコマンドで簡単にインストール可能になるため、スクリプトで同じ環境をすぐに再現できるようになる。wingetのインストールから簡単な使い方までを紹介しよう。
アプリのインストールや更新をコマンドでサクっと実行「winget」の使い方:Windows 10 The Latest - @IT
⇧ 上記サイト様に完全に騙されたんだけどね...
おかげさまで、むちゃくちゃ時間を浪費してしまったではないか...
というのも、
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:
- Install a Windows 10 Insider build
- Join the Preview flight ring by signing up
https://devblogs.microsoft.com/commandline/windows-package-manager-1-0/
⇧ ってなっていて、要するに「winget」を使いたい場合は、「Insider build」または「Preview flight ring」に必ず参加してから、「Microsoft Store」で「App Installer」をインストールすれば良いよ、ってことなんですな。
つまり、
Windows Insider Program とは何ですか?
Windows Insider Programは、何百万人もの Windows の最大ファンのコミュニティで、最新の情報をいち早く見ることができます。Windows Insider は、Windows Insider Preview ビルドと呼ばれるプラットフォームのプレビューを実行して、フィードバックを送信し、直接弊社のエンジニアと Windows の未来を形成していきます。
https://insider.windows.com/ja-jp/about-windows-insider-program
⇧ 思いっきり、試験的な試みを脱していないってことですな。
⇧ 上記サイト様によりますと、「.msixbundle」って拡張子のファイルからインストールできるっぽい、どちらにしろ「winget」の正式リリース版がインストールできるわけではないけど。
なので、2021年8月16日(月)2021年9月28日(火)現在、「winget.exe」を使いたい場合は(ブログの記事を書いてて、1ヵ月ぐらい時間が空いてしまっていたようです)、
■前提条件
- Windows 10 1809 (build 17763) or later
■インストール方法
- Insider build、または、Preview flight ringに参加している場合
Micorosoft StoreでApp InstallerをインストールすればOK - 上記のいずれにも参加していない場合
GitHubで公開されてる拡張子「.msixbundle」のファイルからインストールする
のいずれかをするしかないっぽい。
もう一つ、「source code」からビルドするって方法もあるかもですが、方法がよく分からんです...
これを、どうやったら正式リリースと解釈できるのか謎過ぎる...
拡張子「.msixbundle」ファイルからインストール方法については、
PowerShell を管理者権限で起動しましょう。
PowerShell 本体をアップグレードする場合、PowerShellそのものの使用中は更新できません。
なので、PowerShell はスタートメニューに登録されているWindows PowerShell (x86)
の方を管理者権限で立ち上げます。
そうするとAdd-AppxPackage
コマンドからインストールできます。
Add-AppxPackage PowerShell-7.0.1-win-arm64.msix
⇧ 上記サイト様が詳しいです。
ちなみに、「Windows 10 1809 (build 17763) or later」って条件を満たしていても、「Insider build」か「Preview flight ring」のどちらかに参加してないと、「Microsoft Store」で「App Installer」をインストールしても、「winget.exe」はインストールされないらしい。
試しに、「Microsoft Store」で「アプリ インストーラー」をインストールしてみて、
⇧ ってな感じで、「アプリ インストーラー」がインストールされたんだけど、Windows の「設定」>「アプリと機能」 >「アプリ実行エイリアス」を確認してみると、
⇧「Windows Package Manager Client」が表示されていない、つまり、「winget.exe」がインストールされませんと。
致し方ないので、一旦、アンインストールしますと。
Get-AppxPackage *Microsoft.DesktopAppInstaller* | Remove-AppxPackage
⇧ 「Microsoft Store」などのウィンドウを開き直すと、アンインストールされたことが確認できました。
というわけで、正式リリースされるまで待つべきか、試験的だけどインストールすべきか悩ましいところですな...
インストールしてみます。
拡張子が「.msixbundle」のファイルがダウンロードできたら、「PowerShell」を「管理者権限」で起動して、以下のコマンドを実行。
Add-AppxPackage [.msixbundleファイルまでのパス]\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
ちなみに、拡張子が「.msixbundle」のファイルからインストールした「winget」は、
アプリ パッケージは 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
⇧ 上記のディレクトリにインストールされるってことですかね?
ディレクトリにアクセス権が無いって、起こられたので、ディレクトの構成を適当なファイルで保存して確認することにしました。
管理者権限でコマンドプロンプトを起ち上げて、以下のコマンドを実行。ファイルは事前に作成してなくても、コマンド実行後に作成されるようです。
tree /f >[保存先]
保存されたファイルを開いてみると、
「winget.exe」は見つからんかったけど、「AppInstaller.exe」なるは見つかる。
一応、このPCのどこかにはインストールされているらしいけど...
ということで、「winget.*」で検索してみる。
C:\>cd 目的のディレクトリ C:\目的のディレクトリ>dir /s /b ファイル名*
とすれば、目的のファイル名を探せます。
まずは、cdで目星の付いているディレクトリへ移動。これが抜けると、検索にたいそう時間がかかってしまうので。
⇧ 上記サイト様が詳しいです。
いざ、検索。
cd C:\ dir /s /b winget.*
⇧ う~ん、何か、ややこしいことに、「AppInstaller.exe」は「C:\Program Files\WindowsApps\package_name」のディレクトリにインストールされるようなんですが、「winget.exe」については、「C:\Users\Toshinobu\AppData\Local\Microsoft\WindowsApps」と、
「C:\Users\Toshinobu\AppData\Local\Microsoft\WindowsApps\Microsoft.DesktopAppInstaller_xxxxxxxxxxxxx」にインストールされるみたい...
Windowsカオスだな~...
「エクスプローラー」でも検索かけてみました。かなり時間がかかりますが...
毎回モヤモヤ感が半端ない...
何て言うか、ネットの情報の錯綜っぷりが凄まじいよね...
まぁ、いまのところ「Oracle JDK 17」が「winget」でインストールできないってことを知ったので、「winget」インストールした意味ないな~と意気消沈気味です...
今回はこのへんで。