Estoy intentando agregar algunos paquetes actualizados/adicionales a una imagen del instalador de Windows 10. (por ejemplo, instalador de aplicaciones de escritorio actualizado y PowerShell)
Puedo aprovisionar los paquetes en la imagen WIM montada sin errores y la imagen se puede utilizar para instalar Windows correctamente.
Tenía la impresión de que los paquetes aprovisionados se instalan para todos los usuarios nuevos, pero los paquetes que agregué no.
Puedo instalarlos manualmente (sin conexión, sin nada extraído de Internet) usando PowerShell con lo siguiente:
$package = Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -eq "Microsoft.DesktopAppInstaller" }
Add-AppxPackage -RegisterByFamilyName -MainPackage $package.PackageName
¿Me falta algún paso en algún lugar al generar mi install.wim que hace que no se instalen automáticamente o es este el resultado esperado?
Puedo agregar un script para ejecutarlo en el primer inicio de sesión para instalarlos automáticamente como se muestra arriba, pero preferiría no hacerlo si no es necesario.
Actualizar
A continuación se muestra un ejemplo de cómo agregué 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
Actualizar
Al leer parte de la documentación, parece que puede que no sea posible. Los descargué de GitHub, pero probablemente todavía se considere una aplicación de tienda, ya que puedes obtenerla desde allí.
No puede descargar una aplicación que se haya descargado de Microsoft Store. Para instalar aplicaciones de Windows que no forman parte de tu línea de negocio, debes utilizar Microsoft Store.
Actualizar
Después de más experimentación, las aplicaciones finalmente se instalan sin ninguna interacción del usuario.
Sin embargo, ¡los ~15 minutos que lleva hacerlo no son ideales!
Al observar los AppxLogs, hubo un período de aproximadamente 15 minutos después de que comenzara una tarea de "Edge" o "Buscar" (servicio WSearch) antes de que se produjera la instalación, pero no pude entender qué estaban haciendo ni cómo detenerlas.
No pude encontrar una manera de ejecutar el comando manual anterior automáticamente ya que necesita privilegios de administrador, pero después de leer los documentos, lo único Get-AppxProvisionedPackage
que requiere esto Add-AppxPackage
funcionará bien.
A continuación se muestra un ejemplo de cómo agregué una tarea RunOnce para acelerar la instalación.
# 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