Windows 10 インストーラー イメージに更新されたパッケージや追加パッケージを追加しようとしています。(例: 更新されたデスクトップ アプリ インストーラーと PowerShell)
マウントされた WIM イメージにエラーなくパッケージをプロビジョニングでき、そのイメージを使用して Windows を正常にインストールできます。
プロビジョニングされたパッケージはすべての新規ユーザーに対してインストールされていると思っていましたが、追加したパッケージはインストールされていません。
次のように PowerShell を使用して手動でインストールできます (オフライン、インターネットから取得するものはありません)。
$package = Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -eq "Microsoft.DesktopAppInstaller" }
Add-AppxPackage -RegisterByFamilyName -MainPackage $package.PackageName
install.wim を生成するときにどこかのステップを忘れているために自動的にインストールされないのでしょうか、それともこれが予想される結果でしょうか?
上記のように、最初のログオン時に実行するスクリプトを追加して自動的にインストールすることもできますが、必要がない場合は追加しないことをお勧めします。
アップデート
以下は、DesktopAppInstaller を追加する方法の例です。
# example
# the following files exist
# C:\Deploy\install.wim
# C:\Deploy\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
# C:\Deploy\Packages\Microsoft.UI.Xaml.2.7.appx
# C:\Deploy\Packages\Microsoft.VCLibs.x64.14.00.Desktop.appx
# C:\Deploy\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe_License1.xml
# C:\Deploy\mount (an empty folder)
$packages = "C:\Deploy\Packages"
$mount = "C:\Deploy\mount"
$image = "C:\Deploy\install.wim"
Mount-WindowsImage -Path $mount -ImagePath $image -Index 1
Add-AppxProvisionedPackage -Path $mount -PackagePath $packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle -DependencyPackagePath $packages\Microsoft.UI.Xaml.2.7.appx,$packages\Microsoft.VCLibs.x64.14.00.Desktop.appx -LicensePath $packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe_License1.xml
Dismount-WindowsImage -Path $mount -Save
# the updated install.wim is then copied to the installation media
アップデート
いくつかのドキュメントを読むと、それは不可能かもしれないようです。私は GitHub からダウンロードしましたが、そこから入手できるので、おそらくストア アプリと見なされるでしょう。
Microsoft Store からダウンロードしたアプリをサイドロードすることはできません。ビジネス ラインに含まれない Windows アプリをインストールするには、Microsoft Store を使用する必要があります。
アップデート
さらに実験を重ねた結果、最終的にはユーザーの介入なしにアプリがインストールされるようになりました。
しかし、これを行うのにかかる約 15 分は理想的とは言えません。
AppxLogs を見ると、「Edge」または「Search」(WSearch Service) タスクの開始後、インストールが行われるまでに約 15 分間の期間がありましたが、それが何を実行しているのか、またはそれを停止する方法がわかりませんでした。
上記の手動コマンドは管理者権限が必要なので自動的に実行する方法を見つけることができませんでしたが、ドキュメントを読んだところ、Get-AppxProvisionedPackage
必要なのは管理者権限のみで、Add-AppxPackage
問題なく実行されることがわかりました。
以下は、インストールを高速化するために RunOnce タスクを追加する方法の例です。
# working example
# the following files exist
# C:\Deploy\install.wim
# C:\Deploy\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle
# C:\Deploy\Packages\Microsoft.UI.Xaml.2.7.appx
# C:\Deploy\Packages\Microsoft.VCLibs.x64.14.00.Desktop.appx
# C:\Deploy\Packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe_License1.xml
# C:\Deploy\mount (an empty folder)
$packages = "C:\Deploy\Packages"
$mount = "C:\Deploy\mount"
$image = "C:\Deploy\install.wim"
Mount-WindowsImage -Path $mount -ImagePath $image -Index 1
Add-AppxProvisionedPackage -Path $mount -PackagePath $packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe.msixbundle -DependencyPackagePath $packages\Microsoft.UI.Xaml.2.7.appx,$packages\Microsoft.VCLibs.x64.14.00.Desktop.appx -LicensePath $packages\Microsoft.DesktopAppInstaller_8wekyb3d8bbwe_License1.xml
$packageName = Get-AppxProvisionedPackage -Path $mount | Where-Object { $_.DisplayName -eq "Microsoft.DesktopAppInstaller" } | Select-Object -ExpandProperty PackageName
reg load "HKU\DefaultUser" "$mount\Users\Default\NTUSER.DAT"
$key = "Registry::HKU\DefaultUser\Software\Microsoft\Windows\CurrentVersion\RunOnce"
# create RunOnce if not exist
# close the handle to allow the hive to unload successfully
if ( -Not (Test-Path $key)) {
(New-Item -Path $key -Force).Handle.Close()
}
New-ItemProperty -Path $key -Name "DeployAppInstaller" -PropertyType ExpandString -Value ("""%systemroot%\System32\WindowsPowerShell\v1.0\powershell.exe"" -WindowStyle Hidden -ExecutionPolicy ByPass -Command ""Add-AppxPackage -RegisterByFamilyName -MainPackage '{0}'""" -f $packageName) -Force
# sleep may not be required
[gq]::Collect()
Start-Sleep -Seconds 1
reg unload "HKU\DefaultUser"
Dismount-WindowsImage -Path $mount -Save
# the updated install.wim is then copied to the installation media