Я хочу, чтобы установщик UWP обнаруживал установленную версию .net, удалял старую сборку перед установкой новой, позволял системным администраторам выполнять массовую установку на ПК в своей сети. Все три вещи было легко сделать для обычного настольного приложения, поскольку мы могли создавать настраиваемые действия и выполнять автоматическую установку. Но как мне добиться этого с помощью файла appx?
Как добавить дополнительные действия в установщик UWP, как мы это делаем для обычных установщиков настольных приложений?
Ответы (2)
Вы просто не можете. Процесс установки приложений uwp
стандартизирован для работы на всех устройствах, поддерживаемых ОС. Пользовательские действия по установке не имеют смысла при написании приложения, например. Hololense, ПК, мобильные устройства и XBOX. Вы ничего не добьетесь.
определить установленную версию .net
Зачем тебе беспокоиться об этом? Вы отправляете свое приложение, скомпилированное для определенной версии CLR. Если на ПК отсутствует эта версия, виноваты администраторы.
удаление старой сборки перед установкой новой
Это произойдет автоматически при установке более новой версии.
разрешить системным администраторам выполнять массовую установку на ПК в своей сети
Это возможно, но не является неотъемлемой частью процесса установки. Ваши администраторы должны применить определенный процесс развертывания, чтобы развернуть приложение на всех компьютерах.
По сути, вам нужно будет понять все тонкости загрузки неопубликованного приложения UWP LOB. Как только вы это поймете, вы можете просто написать установщик, как вы привыкли, и установщик будет вызывать все соответствующие команды powershell для большинства рабочих процессов и настраивать запланированные задачи, когда пользователь входит в систему, для выполнения других рабочих процессов. (Я рекомендую wix для вашего msi, msiexec для запуска этого msi, psexec для безголового запуска некоторых команд msiexec под системной учетной записью и виртуальную машину win10 для проверки вашего msi)
Во-первых, вам нужно убедиться, что ваше бизнес-приложение упаковано с «сертификатом подписи», выданным вашей организации центром сертификации. Это сообщит Windows, что ваше приложение «подписано» для фактического создания компанией, о которой оно говорит.
Во-вторых, вам нужно убедиться, что целевые машины находятся в режиме боковой загрузки.
Настройте ПК для требований загрузки неопубликованных приложений: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sideload-apps-with-dism-s14#span-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanconfigure-pcs-for-sideloading-requirements
Поскольку вы хотите «разрешить системным администраторам выполнять массовую установку на ПК в своей сети», они захотят иметь возможность выполнять установку без головы и для всех пользователей. Итак, вам нужно включить подготовку приложения в установщик.
Подготовка бизнес-приложений
Важно понимать, что вы можете подготовить приложение к «сетевому» образу Windows 10 целевой машины или к «автономному» образу Windows 10 по мере его подготовки к созданию. Онлайн-редактирование образа — это то, что нужно администраторам, поскольку машины, на которых они развернуты, уже будут работать в этом сценарии.
Подготовка предоставит LOB-приложение UWP пользователю Windows при входе в систему, если приложение еще не существует. Однако этого не хватает, когда обновления должны происходить — оставляя обновление приложения другой стороне. Это просто способ предоставить пользователю одну версию бизнес-приложения один раз. У него также есть ограничения, одно из которых заключается в том, что при выполнении подготовки на машине не может быть активных пользователей, поэтому это должно выполняться без участия пользователя с помощью таких инструментов, как SCCM или PSExec, и должна использоваться учетная запись SYSTEM. Другое ограничение заключается в том, что в образе может быть всего 24 подготовленных приложения.
Добавление подготовленного бизнес-приложения
Инициализация может быть выполнена с помощью командлета powershell (должна быть вызвана 64-битная версия powershell, если это 64-битная система)
Add-AppxProvisionedPackage -Online -PackagePath <yourpackagepath> -DependencyPackagePath <yourdependencypackagepath> -SkipLicense
^ Выйдите из системы для всех пользователей — поэтому запустите это через psexec как SYSTEM или из SCCM.
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sideload-apps-with-dism-s14
Обновление подготовленного бизнес-приложения
Более новая версия подготовленного бизнес-приложения может быть применена только с помощью следующего командлета (через powershell) для каждого пользователя который выполнил вход на ПК с установленным образом Windows.
> Add-AppxPackage
^ войти в систему как целевой пользователь при запуске этого
Удаление подготовленного бизнес-приложения
Удалите подготовленное бизнес-приложение из образа:
> Remove-AppxProvisionedPackage -Online -PackageName MyAppxPkg
^ Выйдите из системы для всех пользователей — поэтому запустите это через psexec как SYSTEM или из SCCM.
Удалите вхождения старой версии приложения от каждого активного пользователя:
> Remove-AppxPackage MyAppxPkg
^ войти в систему как целевой пользователь при запуске этого
tl;dr. Обычному установщику бизнес-приложения UWP предстоит преодолеть множество проблем, но при желании это можно сделать!