Windows 10 OOBE Post-设置:如何允许 PowerShell Add-AppxPackage?

Windows 10 OOBE Post-Setup: How to allow PowerShell Add-AppxPackage?

关于上一个官方 Win 10 LTSC 版本中缺少 AppxPackage 错误,我想在 post 安装程序 Windows 安装程序中自动安装它:开箱即用体验 (OOBE),第一次开机 UI。因此,我有 .appx 文件并将以下行放入 SetupComplete.cmd:

powershell.exe -ExecutionPolicy bypass -Command "Add-AppxPackage %WINDIR%\Setup\Files\Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe.appx" >> %WINDIR%\Setup\Files\log.txt

我可以在非提升的 PowerShell 控制台中手动执行此行,但不幸的是,这不会像日志中所说的那样在 Windows 安装处理中自动运行(抱歉,这是德语) :

Add-AppxPackage : Fehler bei Bereitstellung. HRESULT: 0x80073CF9, Fehler bei der Installation. Wenden Sie sich an den Softwarehersteller. (Ausnahme von HRESULT: 0x80073CF9) Der Bereitstellungsvorgang Add fr das Paket "Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe" von der Installationsanforderung "Microsoft.VCLibs.140.00_14.0.30704.0_x64__8wekyb3d8bbwe.appx" wurde abgelehnt, da dieser Vorgang mit dem lokalen Systemkonto nicht ausgefhrt werden darf. HINWEIS: Wenn Sie weitere Informationen wnschen, suchen Sie im Ereignisprotokoll nach [ActivityId] 895ecdc3-eb9b-0002-0fcf-5e899bebd701, oder verwenden Sie die Befehlszeile Get-AppxLog -ActivityID 895ecdc3-eb9b-0002-0fcf-5e899bebd701 In Zeile:1 Zeichen:1

  • Add-AppxPackage C:\Windows\Setup\Files\Microsoft.VCLibs.140.00_14.0.3 ...
    + CategoryInfo          : WriteError: (C:\Windows\Setu...kyb3d8bbwe.appx:String) [Add-AppxPackage],
IOException
    + FullyQualifiedErrorId : DeploymentError,Microsoft.Windows.Appx.PackageManager.Commands.AddAppxPackageCommand

为什么本地系统帐户无法安装该软件包?

MSIX/AppX 应用程序包为每个 Windows 用户帐户单独安装 - 应用程序文件被提取到中央系统位置,但应用程序在系统中的注册必须完成每个用户。我不知道为什么本地系统帐户被特别禁止安装包,但我可以猜到为什么会这样:为甚至不代表真实帐户的用户帐户安装应用程序包没有意义人,更不用说可以登录设备的人了。

如果您希望计算机上的所有用户都可以使用您尝试安装的包,您应该使用部署映像 “提供” 包,并且服务经理 (DISM)。将在所有现有用户帐户下次登录时自动安装已配置的包,并在首次登录时为所有新创建的帐户自动安装。

使用 DISM's /Add-ProvisionedAppXPackage subcommand (PowerShell version: Add-AppXProvisionedPackage),您可以将已配置的包添加到 Windows 的 运行 副本中。我建议您不要在 OOBE 中执行此操作,而应更早地在 sysprep 审核模式中执行此操作:

:: .bat or .cmd batch file would look like this:
Dism.exe -online -add-provisionedAppxPackage -packagePath:X:\whatever.appx

# PowerShell .ps1 script would look like this:
Add-AppXProvisionedPackage -Online -PackagePath X:\whatever.appx

您还可以使用 DISM 在 Windows 安装映像(.WIM 文件)中配置包,然后 Windows 甚至在设备上安装:

:: use Dism.exe -get-wiminfo to find the WIM's "index" number for the Windows edition or custom image you want to change
Dism.exe -mount-wim -wimFile:D:\sources\install.wim -index:1 -mountDir:X:\WimMount
Dism.exe -image:X:\WimMount -add-provisionedAppxPackage -packagePath:X:\whatever.appx
Dism.exe -unmount-wim -mountDir:X:\WimMount -commit

# use Get-WindowsImage to find the index for the image you want to change
Mount-WindowsImage -ImagePath D:\sources\install.wim -Index 1 -Path X:\WimMount
Add-AppXProvisionedPackage -Path X:\WimMount -PackagePath X:\whatever.appx
Dismount-WindowsImage -Path X:\WimMount -Save