Если вы хотите пообщаться на эту тему со мной лично, приходите 20 марта на практическое мероприятие.
Простой случай: приложение для стора из Win32 приложения за 5 минут
Самый простой способ перевода вашего Win32 или .NET приложения в пакет для установки из Windows Store — это Desktop App Converter (DAC), который можно скачать собственно из Windows Store. Он представляет собой некоторый набор библиотек и скрипт PowerShell, который позволяет сконвертировать неинтерактивную инсталляцию вашего приложения в пакет для Windows Store. Для того, чтобы решить задачу сбора данных того, что происходит при установке используется технология Windows Containers, соответственно, это определяет требования к машине на которой может быть выполнена конвертация, и, необходимость скачивания референсных образов операционных систем. Версия образа, которую вы скачиваете должна совпадать с версией вашей операционной системы на которой выполняется процедура конвертации. Затем необходимо проинициализировать DAC с соответствующим образом, и вы готовы к конвертации.
Если ваше приложение просто приложение в себе, как, например, многие из классических игр, то этого вполне достаточно, чтобы подготовить ваше приложение для публикации в Windows Store. Однако, Desktop Bridge поддерживает не все сценарии и взаимодействия, которые доступны обычному настольному приложению, и если ваше приложение делает что-то из того, что не поддерживается в данный момент, придётся приложить немного больше усилий.
Хороший пример приложения, которое я сам использую для демонстрации — 7-zip: несколько минут и из установщика приложения для Windows я получаю appx пакет для развёртывания через Windows Store.
Обратная история: UWP приложение с Win32 возможностями
Догадливый читатель, наверное, уже задаёт себе вопрос, а что если… Да! Технически, никто не мешает расширить существующие UWP приложения доступными Win32 возможностями используя технологию Desktop Bridge. Сценариев множество, особенно для разнообразных встраиваемых решений или утилит.
Что надо знать тому, кто решил поступить именно так? Ваш аккаунт в Windows Store должен иметь разрешения для публикации приложений в режиме Full Trust, а именно в нём работают Desktop Bridge приложения.
Сложная история: Win32 приложение с несовместимыми возможностями
В этом случае придётся убирать все несовместимости и заменять их на аналогичный функционал UWP API. Зачем это может потребоваться?
Как самый простой вариант, сразу же приходящий в голову, представьте, что ваше приложение очень популярное и бесплатное, его много скачивают, поэтому вам нужно всё время думать о том, где бы его разместить, чтобы все могли его быстро скачать. Конвертируем его в Windows Store приложение — магия — теперь везде, где есть Windows Store, за доступность вашего приложения можно не беспокоиться.
Второй, корпоративный вариант, Windows Store приложение может распространяться через внутренний магазин приложений внутри организации. Если оно нацелено на крупные компании, возможно, такой удобный способ распространения с самообслуживанием будет востребован.
Это только два самых простых сценария, зачем вам может потребоваться сделать из вашего Win32/.NET приложение Windows Store. Давайте обсудим ваши предложения по сценариям в комментариях. :)
Продолжение истории: сконвертировал, что дальше?
На самом деле, история здесь только начинается! После конвертации ваше приложение получает UWP ID и вы может вызывать все доступные на платформе UWP API, например, легко можно добавить работу с живыми плитками, оповещениями и так далее.
Например, если вам нужно приложение, которое touch friendly, можно запустить Win32 приложение как App Service, написать новый интерфейс на XAML и общаться для выполнения непосредственных задач приложения с приложением App Service, не отображая его классический интерфейс пользователю.
Если у вас появились вопросы и вы хотите задать их мне лично, хочу напомнить, что 20 марта я буду одним из спикеров на Desktop Bridge: из Win32 и .Net в Windows Store. Участие бесплатное, но требуется регистрация.
Короткое видео-введение о том, что я так долго описывал в статье:
Комментарии (27)
crea7or
15.03.2017 15:38Ну по сути получается замена инсталлятора на стор?
stasus
15.03.2017 15:41На начальном этапе, да. Но это одновременно открывает возможность к использованию UWP API и постепенного перехода всё больше в UWP сторону.
Я вот постарался картинку заглавную про этот путь, мост и переход подобрать :)
stasus
15.03.2017 15:51И это же сразу и способ доставки своего приложения — Windows Store. Есть даже публичная история о подобном использовании.
fenriv
15.03.2017 16:52Судя по содержимому пакета на выходе, структера файлов и предстваление реестра очень похожи на APPV 5. Выходит, по сути это тоже виртуализация?
Опять же, по аналогии с APPV, видно что можно настроить регистрацию типов файлов через расширения. Но для APPX как замене MSI рассматривается ли в будущем возможность создания сторонних расширений?stasus
15.03.2017 16:55Это не виртуализация и даже не контейнеризация. А структура файлов такая, потому что собирается из VFS контейнера, при использовании DAC. Desktop Bridge делает некоторую работу, которую контейнер делает для приложения внутри, вроде перенаправления записи файлов и т.д., но при этом, приложение работает не в контейнере.
fenriv
15.03.2017 17:29Спасибо за пояснение. Но я правильно понял, что и реестр установщика, и все папки за пределами корня установки (которые попали в VFS) монтируются исключительно для приложения и только когда оно запущено?
Если это так, подскажите пожалуйста, где можно найти полный список папок, которые будут перенаправлены для приложения при установке из APPX?
zenkz
15.03.2017 16:59Спасибо за статью, эта тема очень актуальна для моих проектов как план на будущее.
К сожалению пока не уверен в том, что у UWP не загнётся как в своё время Metro-style приложения и Windows Phone 7/8. Либо просто не будет востребованым у пользователей.
Другое опасение это то, что нет полноценного офлайн инсталлера, который можно было бы использовать вне зависимости от наличия/отсутствия сети, желание Майкрософта заблокировать приложение в магазине и прочих внешних факторов.stasus
15.03.2017 17:06APPX сейчас можно установить двойным щелчком, если разрешено системой. Как раз идея в том, чтобы просто взять свои Win32 и положить в Windows Store. Хотите добавить потом UWP возможностей, пожалуйста. Не хотите или пока нет того, что вам интересно, ждёте обновления Desktop Bridge.
synmcj
15.03.2017 17:14Насколько я знаю, любой appx можно установить дабл кликом, начиная с Anniversary Update, сети или стора для этого не нужно. К слову, UWP это как раз развитие Metro, с чего Metro приложения загнулись то?
crea7or
15.03.2017 17:16А реестр HKCU с десктопом не общий получается?
stasus
15.03.2017 17:20HKCU — общий, а в HKLM писать не может.
crea7or
15.03.2017 17:34Если я на десктопе что-то запишу, то в запакованном прочитать смогу? А то не очень понятно, там про виртуализацию пишут.
stasus
15.03.2017 17:41+1Как раз хотел пояснить, чтобы небыло недопонимания, а то моё общий могло запутать.
Для всего реестра — десктоп записал -> в приложении прочитал, если есть доступ
HKCU — в приложении записал -> в этом же приложении для этого же пользователя прочитал
HKCU — в приложении записал -> не десктопе не вижу, хранится на файловой системе для каждого пользователя для каждого приложения
В HKLM\Software можно писать, если в «захваченном реестре» нет соответствующей пары «раздел-значение», и у пользователя есть доступ
crea7or
15.03.2017 18:08А такое приложение работать будет только на 10? 8(8.1) уже всё?
fenriv
15.03.2017 18:19Даже не на всех 10-ках. Если верить официальной документации для самого моста:
Windows 10 Anniversary Update (10.0.14393.0 and later) Pro or Enterprise edition
Для запуска таких приложений, думаю нужна как минимум такая же или большая версия сборки ОС.stasus
15.03.2017 18:39Windows 10 Anniversary Update — да, остальное — нет. Это требования к DAC, который использует Windows Containers.
stasus
15.03.2017 18:57DAC != Desktop Bridge
Desktop App Converter — утилита для просто конвератции установщика Win32/.NET в APPX пакет. Desktop Bridge — технология, которая позволяет этому приложению работать в UWP-окружении.
dmandreev
16.03.2017 10:55Ошибка подтверждения приема пакета: Your developer account doesn’t have permission to submit apps converted with the Desktop Bridge at this time. https://aka.ms/desktopbridgeforwindowsstore.
Уже 2 месяца назад сабмитил форму на https://aka.ms/desktopbridgeforwindowsstore ни ответа ни привета. Судя по всему настолько много желающих разрабатывать UWP/Desktop bridge приложения, что все заявки не успевают рассмотреть.stasus
16.03.2017 13:05Там разрешают проекту работать в full trust, насколько я помню, там есть требование, чтобы это было Legal Entety, потому как больно выскоий уровень доступа у приложения, по сравнению с обычным UWP.
Я бы начал с обращения в поддержку за разъяснениями. Если не поможет, напиши мне, у меня есть специально для этой программы косвенный доступ к следующему уровню поддержки.crea7or
18.03.2017 09:01Если требование Legal Entety обязательно, то всё это про положить в стор своё бесплатное и популярное приложение — ерунда. Никто не будет заводить компанию, только для того чтобы положить приложение в стор.
stasus
18.03.2017 09:53Для популярных приложений есть отдельная программа, действует уже сейчас, можно обращаться ко мне.
Требование было раньше, после вопроса поискал и нигде не нашёл его упоминания, но раз было, считаю, надо говорить.
sleeply4cat
Насколько я знаю, Windows может убивать UWP-приложения примерно так же, как это делает андроид со своими. Как программа, не приспособленная изначально для такого жизненного цикла, будет с этим справляться? 7-Zip — вещь короткоживущая, его процесс вряд ли столкнётся с такими трудностями, так что не показатель.
stasus
Это не UWP приложение. По крайней мере сразу после ковертации. Это Win32/.NET приложение, упакованное для распространения через Windows Store, которое запускается в full trust окружении.
7-zip это просто пример приложения, которое можно очень просто перепаковать.
sleeply4cat
а, ок. Просто думал, что в стор пускают только UWP.
stasus
Идея моста в том, чтобы постепенно перейти на UWP по максимуму, но с чего-то надо же начать.
Там с самого начала можно было публиковать обычные настольные приложения, но они разворачивались стандратным образом, просто скачивались из магазина.