Ich versuche, einem Windows 10-Installer-Image einige aktualisierte/zusätzliche Pakete hinzuzufügen. (Zum Beispiel aktualisierter Desktop App Installer und PowerShell)
Ich kann die Pakete ohne Fehler im bereitgestellten WIM-Image bereitstellen und das Image kann für die erfolgreiche Installation von Windows verwendet werden.
Ich hatte den Eindruck, dass bereitgestellte Pakete für alle neuen Benutzer installiert werden, bei den Paketen, die ich hinzugefügt habe, war dies jedoch nicht der Fall.
Ich kann sie manuell installieren (offline, nichts aus dem Internet gezogen), indem ich Powershell wie folgt verwende:
$package = Get-AppxProvisionedPackage -Online | Where-Object { $_.DisplayName -eq "Microsoft.DesktopAppInstaller" }
Add-AppxPackage -RegisterByFamilyName -MainPackage $package.PackageName
Übersehe ich beim Generieren meiner install.wim irgendwo einen Schritt, der dazu führt, dass die Installation nicht automatisch erfolgt, oder ist dies das erwartete Ergebnis?
Ich kann ein Skript hinzufügen, das bei der ersten Anmeldung ausgeführt wird, um sie wie oben automatisch zu installieren, aber ich würde das lieber nicht tun, wenn es nicht unbedingt sein muss.
Aktualisieren
Unten sehen Sie ein Beispiel, wie ich den DesktopAppInstaller hinzugefügt habe.
# 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
Aktualisieren
Wenn man sich die Dokumentation durchliest, scheint es, als sei das nicht möglich. Ich habe sie von GitHub heruntergeladen, aber es wird wahrscheinlich trotzdem als Store-App betrachtet, da man sie von dort herunterladen kann.
Sie können eine App, die aus dem Microsoft Store heruntergeladen wurde, nicht sideloaden. Um Windows-Apps zu installieren, die nicht zu Ihrem Geschäftsbereich gehören, müssen Sie den Microsoft Store verwenden.
Aktualisieren
Nach weiteren Experimenten werden die Apps schließlich ohne Benutzerinteraktion installiert.
Allerdings sind die dafür benötigten ca. 15 Minuten alles andere als ideal!
Beim Betrachten der AppxLogs ist aufgefallen, dass nach dem Start einer „Edge“- oder „Search“-Aufgabe (WSearch Service) ein Zeitraum von etwa 15 Minuten verging, bevor die Installation stattfand, aber ich konnte nicht herausfinden, was sie taten oder wie man sie stoppen konnte.
Ich konnte keine Möglichkeit finden, den obigen manuellen Befehl automatisch auszuführen, da hierfür Administratorrechte erforderlich sind. Nach dem Lesen der Dokumentation ist jedoch klar, dass das einzige, Get-AppxProvisionedPackage
was diese Rechte erfordert, Add-AppxPackage
problemlos funktioniert.
Unten sehen Sie ein Beispiel, wie ich eine RunOnce-Aufgabe hinzugefügt habe, um die Installation zu beschleunigen.
# 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