Как добавить дополнительные действия в установщик UWP, как мы это делаем для обычных установщиков настольных приложений?

Я хочу, чтобы установщик UWP обнаруживал установленную версию .net, удалял старую сборку перед установкой новой, позволял системным администраторам выполнять массовую установку на ПК в своей сети. Все три вещи было легко сделать для обычного настольного приложения, поскольку мы могли создавать настраиваемые действия и выполнять автоматическую установку. Но как мне добиться этого с помощью файла appx?


person V K    schedule 31.05.2017    source источник
comment
Вы говорите о собственном приложении UWP или приложении Win32, преобразованном с помощью Desktop Bridge?   -  person Marian Dolinský    schedule 31.05.2017
comment
@MarianDolinský Родной UWP   -  person V K    schedule 01.06.2017
comment
Так что просто придерживайтесь того, что сказал Хердо.   -  person Marian Dolinský    schedule 01.06.2017
comment
@MarianDolinský Спасибо за совет.   -  person V K    schedule 01.06.2017


Ответы (2)


Вы просто не можете. Процесс установки приложений uwp стандартизирован для работы на всех устройствах, поддерживаемых ОС. Пользовательские действия по установке не имеют смысла при написании приложения, например. Hololense, ПК, мобильные устройства и XBOX. Вы ничего не добьетесь.

определить установленную версию .net

Зачем тебе беспокоиться об этом? Вы отправляете свое приложение, скомпилированное для определенной версии CLR. Если на ПК отсутствует эта версия, виноваты администраторы.

удаление старой сборки перед установкой новой

Это произойдет автоматически при установке более новой версии.

разрешить системным администраторам выполнять массовую установку на ПК в своей сети

Это возможно, но не является неотъемлемой частью процесса установки. Ваши администраторы должны применить определенный процесс развертывания, чтобы развернуть приложение на всех компьютерах.

person Herdo    schedule 31.05.2017

По сути, вам нужно будет понять все тонкости загрузки неопубликованного приложения 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 предстоит преодолеть множество проблем, но при желании это можно сделать!

person Kyle Dev-ious    schedule 18.08.2017