Назад | Перейти на главную страницу

DISM deploy приложения Windows 10 не запускаются

Я пытаюсь развернуть приложения на компьютерах в школе с помощью DISM со сценарием запуска компьютера.

Я создал сценарий для перечисления каталога в сети и установки приложения на компьютеры:

for %%v in (%~dp0*.appx) do (
    DISM /Online /Add-ProvisionedAppxPackage /PackagePath:%%v /SkipLicense
)

На первый взгляд кажется, что приложение работает нормально. Однако, когда кто-то пытается запустить приложение, появляется индикатор выполнения:

Однако, если я использую команду из командной строки с повышенными правами, приложение устанавливается и запускается нормально.

Могу ли я что-то сделать, чтобы восстановить приложение после развертывания или правильно развернуть его с первого раза?

Что ж, оказывается, что требовалась зависимость, которая не была установлена ​​на моем компьютере. Я думал, что команда DISM сработала локально, но я использовал компьютер рядом с ней.

Так что же случилось?

В этом примере я пытался развернуть бесплатное приложение Fresh Paint на всех компьютерах. Я загрузил его из Магазина Windows, используя Fiddle, чтобы вырвать URL.

Выполнение этой команды в PowerShell показывает мне важную информацию:

> Get-AppxPackage *fresh*

Dependencies      : {Microsoft.VCLibs.140.00_14.0.22929.0_x86__8wekyb3d8bbwe,
                  Microsoft.NET.Native.Runtime.1.1_1.1.23406.0_x86__8wekyb3d8bbwe}

Итак, Fresh Paint имеет две зависимости: библиотеку Visual C и среду выполнения .Net.

Я получил доступ к только что установленному компьютеру и снова загрузил приложение. На этот раз я заметил, что зависимости загружаются и устанавливаются автоматически. Я взял URL-адрес сред выполнения и поместил их в свою папку развертывания, где я запускаю скрипт в вопросе.

Теперь каждая машина автоматически установила зависимости вместе с самим приложением.

Стоит отметить, что DISM установит приложение, даже если зависимости не соблюдены. Однако его аналог PowerShell Add-AppxProvisionedPackage проверяет зависимости и отказывается устанавливать приложение. Лучший способ проверить, будет ли приложение работать, - это попробовать эту команду перед использованием DISM.

Наконец, мне удалось отладить приложение с помощью команды исправления PowerShell, которая ходит по Интернету:

Get-AppXPackage -AllUsers | Foreach {Add-AppxPackage -DisableDevelopmentMode -Register "$($_.InstallLocation)\AppXManifest.xml"}

Это не только исправляет приложения для любых пользователей (это удобно, если была нажата ссылка «Удалить»), но также выводит ошибки для приложений, которые не устанавливаются. Это указывало мне на правильное направление для устранения зависимостей и, наконец, для того, чтобы приложение заработало.