いろいろやってみるにっき

てきとーに生きている奴の日記

https化に伴い、表示できなくなっているリンクについて修復中。
2018年から遡って修正し、2015年分まで修正完了。


Windows Server 2022にwingetをインストール その1(まだ動かない)

VMware Workstation PlayerにWindows Server 2022をインストールし、デスクトップOSのような設定をした。

 

shigeo-t.hatenablog.com

shigeo-t.hatenablog.com

 

次はwingetである。確認してみるとWindows Server 2022 Standard デスクトップエクスペリエンスには入っていない。wingetがあるほうがコマンドでインストールできて簡単だし、Windows Server 2022でデスクトップエクスペリエンスにしない場合もあるので、ここはまずwingetをインストールしたい。

 

インストール方法はあるのだが、普通はMicrosoft Storeからである。

atmarkit.itmedia.co.jp

 

しかしWindows ServerにはStoreアプリが無い。Windows Server 2022で変わったかもと検索してみると設定を開いた。

プルダウンしてみる。

元々の設定が一番緩いが、Storeアプリが無いと簡単にはインストールできない。

 

ということでGithubのwinget-cliを開く。

github.com

 

右ペインのReleasesをクリックし、

最新が開いたらスクロールして

Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle をダウンロードする。

ところがこんなエラーが出る。

 

msixbundleの

bitto.jp

管理者権限の PowerShell からインストールしよう

 

やってみる。

エラーである。

エラーメッセージはこんな感じ。

PS C:\Users\Administrator\Downloads> Add-AppxPackage .\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
Add-AppxPackage : 次の HRESULT で展開に失敗しました: 0x80073CF3, パッケージの更新、依存関係、または競合の検証に失敗しま
した。
パッケージ Microsoft.DesktopAppInstaller_1.17.10271.0_x64__8wekyb3d8bbwe は、見つからないフレームワークに依存しているた
めインストールできません。インストールするこのパッケージには、フレームワーク "Microsoft.UI.Xaml.2.7" (公開元 "CN=Micros
oft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US"、ニュートラルまたは x64 プロセッサ アーキテク
チャ、最少バージョン 7.2109.13004.0) が必要です。現在インストールされている "Microsoft.UI.Xaml.2.7" という名前のフレー
ムワークは次のとおりです: {}
注: 詳細については、イベント ログで [ActivityId] 2035a5a1-7165-0002-7bc2-35206571d801 を検索するか、コマンド ラインの G
et-AppPackageLog-ActivityId 2035a5a1-7165-0002-7bc2-35206571d801 を使用してください
発生場所 行:1 文字:1
+ Add-AppxPackage .\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbun ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (C:\Users\Admini...bbwe.msixbundle:String) [Add-AppxPackage], IOException
    + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand

 

探してみる。あった。

dev.classmethod.jp

 

インストールスクリプトはこれ。

function Install-LatestWinGet ([bool]$installVCLibs = $true) {
    # Install prerequisites
    if ($installVCLibs) {
        $vcLibsUrl = 'https://aka.ms/Microsoft.VCLibs.x64.14.00.Desktop.appx'
        $vcLibsPath = Join-Path -Path ([IO.Path]::GetTempPath()) ($vcLibsUrl -split '/')[-1]
        Write-Host -ForegroundColor Green "Download $vcLibsUrl"
        Invoke-WebRequest -Uri $vcLibsUrl -OutFile $vcLibsPath
        Write-Host -ForegroundColor Green "Install $vcLibsPath"
        Add-AppxPackage -Path $vcLibsPath
        if (Test-Path -LiteralPath $vcLibsPath) {
            Write-Host -ForegroundColor Green "Remove $vcLibsPath"
            Remove-Item -LiteralPath $vcLibsPath
        }
    }

    # Find the latest assets url
    $latest = Invoke-RestMethod -Uri 'https://api.github.com/repos/microsoft/winget-cli/releases/latest'
    $msixUrl = $latest.assets | Where-Object { $_.browser_download_url -like '*.msixbundle' } | Select-Object -ExpandProperty browser_download_url
    $msixPath = Join-Path -Path ([IO.Path]::GetTempPath()) ($msixUrl -split '/')[-1]
    $licenseUrl = $latest.assets | Where-Object { $_.browser_download_url -like '*License1.xml' } | Select-Object -ExpandProperty browser_download_url
    $licensePath = Join-Path -Path ([IO.Path]::GetTempPath()) ($licenseUrl -split '/')[-1]

    # Download assets
    ( @{Url = $msixUrl ; LocalPath = $msixPath}, @{Url = $licenseUrl ; LocalPath = $licensePath} ) | ForEach-Object {
        Write-Host -ForegroundColor Green "Download $($_.Url)"
        Invoke-WebRequest -Uri $_.Url -OutFile $_.LocalPath 
    }

    # Install MSIX
    Write-Host -ForegroundColor Green "Install $msixPath"
    Write-Host -ForegroundColor Green "  : License $licensePath"
    Add-AppxProvisionedPackage -Online -PackagePath $msixPath -LicensePath $licensePath

    # Remove assets
    ($msixPath, $licensePath) | ForEach-Object {
        if (Test-Path -LiteralPath $_) {
            Write-Host -ForegroundColor Green "Remove $_"
            Remove-Item -LiteralPath $_
        }
    }
    Write-Host -ForegroundColor Green "Installation complete!"
}
Install-LatestWinGet

 

Windows Server 2022のPowerShell管理者で実行してみる。

 

うまくいったっぽい。でも、wingetコマンドが見つからない。

 

ということで、時間を置いてやってみる。