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

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

古いエントリのサムネイル画像がリンク切れになってたりするけど、チマチマ修正中


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コマンドが見つからない。

 

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

お時間あったら、他のエントリもクリックして頂ければ幸いです。