未為新用戶安裝預配 Appx

未為新用戶安裝預配 Appx

我正在嘗試將一些更新/額外的軟體包添加到 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。

https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/sideload-apps-with-dism-s14?view=windows-11

更新

經過進一步的實驗,這些應用程式最終在沒有任何用戶互動的情況下安裝。

然而,這大約需要 15 分鐘,這並不理想!

看看 AppxLogs,在安裝發生之前,「Edge」或「Search」(WSearch 服務)任務啟動後有大約 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

相關內容