Предоставленное приложение 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.

# пример
# следующие файлы существуют
# 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 (пустая папка)    

$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

# обновленный install.wim затем копируется на установочный носитель

Обновление

Изучив некоторую документацию, похоже, это может быть невозможно. Я скачал их с 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, был период примерно в 15 минут после того, как запустилась задача “Edge” или “Поиск” (служба WSearch), прежде чем начнется установка, но я не смог понять, что они делают или как их остановить.

Я не смог найти способ автоматически выполнить команду выше, так как для этого нужны права администратора, но после прочтения документации только Get-AppxProvisionedPackage требует этого, Add-AppxPackage сработает нормально.

Ниже приведен пример того, как я добавил задачу RunOnce для ускорения установки.

# рабочий пример
# следующие файлы существуют
# 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 (пустая папка)    

$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"

# создайте RunOnce, если он не существует 
# закройте дескриптор, чтобы позволить хранилищу успешно выгрузиться
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

# возможно, задержка не требуется
[gq]::Collect()
Start-Sleep -Seconds 1

reg unload "HKU\DefaultUser"

Dismount-WindowsImage -Path $mount -Save

# обновленный install.wim затем копируется на установочный носитель

Обновление

Вернувшись к этому, добавление -Regions All к Add-AppxProvisionedPackage позволяет пакету установиться без необходимости использовать runonce из приведенного выше кода. Похоже, вам нужно -Region или (не пробовал) добавить приложение в ваш LayoutModification.xml, чтобы оно было установлено для новых пользователей.

Ответ или решение

Проблема с установкой Provisioned Appx для новых пользователей в Windows 10: Анализ и решение

Когда вы работаете с образами Windows и модулями Appx, установка необходимых пакетов с помощью команд PowerShell является критически важным аспектом для обеспечения правильной работы системы. Ваша ситуация, связанная с тем, что провизионные пакеты не устанавливаются для новых пользователей, требует детального рассмотрения. Давайте проанализируем шаги, которые вы предприняли, и попробуем идентифицировать причину проблемы.

1. Провизионные пакеты в Windows

При добавлении пакетов с помощью команды Add-AppxProvisionedPackage вы действительно создаете список пакетов, которые должны быть установлены для всех новых пользователей. Однако отсутствие ожидаемой установки может быть связано с несколькими факторами:

  • Совместимость пакетов: Убедитесь, что используемые вами пакеты действительно могут быть провизионными. Например, некоторые приложения, загружаемые из Microsoft Store, могут не поддерживать провизию.

  • Неправильные атрибуты: Обратите внимание на параметры, используемые в команде. Вы упомянули добавление -Regions All, что действительно может упростить процесс установки, поскольку это заставляет Windows учитывать пакет для всех регионов.

2. Использование команд PowerShell

Вы правильно указали, что использование команды Add-AppxPackage может быть выполнено для установки пакетов после их провизии. Однако стоит помнить, что это может потребовать прав администратора, если вы не используете контекст, позволяющий обойти это требование:

$packageName = Get-AppxProvisionedPackage -Path $mount | Where-Object { $_.DisplayName -eq "Microsoft.DesktopAppInstaller" } | Select-Object -ExpandProperty PackageName

Add-AppxPackage -RegisterByFamilyName -MainPackage $packageName

Таким образом, ваш замысел использовать задачу RunOnce для автоматизации процесса является обоснованным решением в случае, если провизия не срабатывает.

3. Решение проблемы с задержкой

Если после установки образа пакеты установятся только через 15 минут, это может быть связано с фоновыми службами, такими как WSearch или Edge. Чтобы избежать таких задержек:

  • Оптимизация служб: Можно рассмотреть возможность отключения или временной приостановки некоторых служб на этапе начальной установки системы. Это может помочь улучшить скорость загрузки и установку приложений.

  • Регистровая запись и файловая система: Управление ключами реестра и оптимизация записей могут ускорить процессы. Использование Registry::HKU\DefaultUser для настройки задач RunOnce позволяет выполнить важные операции сразу после первого входа пользователя.

Заключение

Ваша экспертиза и дополнительные обновления, такие как использование -Regions All в команде Add-AppxProvisionedPackage, являются шагом в правильном направлении. Если автоматическая установка происходит, но принимает слишком много времени, возможно, стоит исследовать дополнительные оптимизации через конфигурацию служб и реестра. Успех в установке пакетов может быть достижен с учетом всех этих деталей, что улучшит общий пользовательский опыт после установки Windows.

Оцените материал
Добавить комментарий

Капча загружается...