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