.appxパッケージファイルがある場合は、Add-AppxPackage
コマンドレットを使用してPowerShellからインストールできます。ただし、名前でMicrosoft Storeパッケージをダウンロードしてインストールするだけです。
Microsoftストアページに移動し、フィドラーを開始し、ダウンロードを開始し、.appxファイルのURLをキャプチャして、Add-AppxPackage
を使用できるように手動でダウンロードする必要はありません。 (Windows OS Hubがどのように実行したかを参照してください ここ )
楽しいかもしれませんが、フレーク状になります。 Windowsストアアプリを管理するための堅牢でスクリプト可能な方法が必要です。
(Microsoft Storeからのみアクセスできるソフトウェアパッケージがいくつかあります。それ以外はChocolateyまたは直接msiダウンロードから入手できます。)
スクリプトを作成できない例の1つは、HEIF Image Extensionsのインストールです(iPhoneから画像形式を表示するために必要です:*.HEIC
形式。
これをWindowsストアからインストールすると、Get-AppxPackage
が表示されます
PS C:\Tools> Get-AppxPackage | Where-Object {$_.Name -eq "Microsoft.HEVCVideoExtension" }
Name : Microsoft.HEVCVideoExtension
Publisher : CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US
Architecture : X64
ResourceId :
Version : 1.0.31053.0
PackageFullName : Microsoft.HEVCVideoExtension_1.0.31053.0_x64__8wekyb3d8bbwe
InstallLocation : C:\Program Files\WindowsApps\Microsoft.HEVCVideoExtension_1.0.31053.0_x64__8wekyb3d8bbwe
IsFramework : False
PackageFamilyName : Microsoft.HEVCVideoExtension_8wekyb3d8bbwe
PublisherId : 8wekyb3d8bbwe
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : False
NonRemovable : False
Dependencies : {Microsoft.VCLibs.140.00_14.0.27810.0_x64__8wekyb3d8bbwe}
IsPartiallyStaged : False
SignatureKind : Store
Status : Ok
私が欲しいのは、コマンドレットDownload-AppxPackage
です。
Download-AppxPackage -Name "Microsoft.HEVCVideoExtension"
誰か私がこれを行う方法を知っていますか?
store.rg-adguard.net は、ストアアプリへの直接ダウンロードリンクを生成するためのGUIです。そのページのソースを覗いて、コンテンツを直接ダウンロードするためにそれらを便乗させることができますが、NameではなくPackageFamilyNameを使用します(例ではMicrosoft.HEVCVideoExtension_8wekyb3d8bbwe)。
function Download-AppxPackage {
[CmdletBinding()]
param (
[string]$PackageFamilyName,
[string]$Path
)
process {
$WebResponse = Invoke-WebRequest -Method 'POST' -Uri 'https://store.rg-adguard.net/api/GetFiles' -Body "type=PackageFamilyName&url=$PackageFamilyName&ring=Retail" -ContentType 'application/x-www-form-urlencoded'
$LinksMatch = $WebResponse.Links | where {$_ -like '*_x64*.appx*'} | Select-String -Pattern '(?<=a href=").+(?=" r)'
$DownloadLinks = $LinksMatch.matches.value
for ($i = 1; $i -le $DownloadLinks.Count; $i++) {
Invoke-WebRequest -Uri $DownloadLinks[$i-1] -OutFile "$Path\$PackageFamilyName($i).appx"
}
}
}
これはx64バージョンに限定されており、パスはフォルダーを指す必要があります。パッケージとその依存関係をダウンロードし、それらをすべてPackagefamilyName(n)。appxとして保存します