Как перенести приложение Electron на UWP для Surface Hub

У меня есть приложение, которое в настоящее время использует Electron для развертывания на рабочем столе Windows. Основная часть пользовательского интерфейса - это простой старый JS / CSS / HTML5, а узловая часть - это в основном просто инфраструктура для передачи данных в хромовую часть. Это в значительной степени то, что люди называли «веб-приложением» до того, как Firefox и Chrome отказались от этой идеи.

Мне удалось преобразовать это существующее приложение Electron в UWP с помощью makeappx, и я даже получил его в Window Store, только чтобы обнаружить, что Surface Hub отказывается запускать его, потому что это не «чистый» UWP, а скорее приложение Win32, завернутое в похож на UWP. Мой клиент обязательно должен использовать Surface Hub.

Приложение отлично работает в Edge, но мой клиент должен иметь возможность использовать приложение при отсутствии подключения к Интернету.

Следующей моей идеей было поместить приложение на флешку и просто указать на это Edge. Конечно, просмотр URL-адресов file: // не работает на этом оборудовании, так что это не сработало.

Моя следующая мысль заключалась в том, что я мог бы создать простой HTTP-сервер, поместить его в магазин с запеченным контентом (или прочитать контент с флеш-накопителя), а затем заставить их указывать Edge на localhost. Однако я нашел кучу документов, в которых говорится, что использование устройства с обратной связью запрещено в приложениях Магазина Windows. (Есть обходной путь для корпоративных приложений, но я не знаю, сработает ли это на Surface Hub, а клиент действительно просто хочет установить из Магазина Windows и не должен делать ничего странного).

Год назад ходили разговоры о том, что Microsoft создает некоторые технологии, упрощающие перенос веб-приложений на рабочий стол Windows. Я нашел «Размещенные веб-приложения для Windows 10», но, похоже, они просто создают контейнер для веб-магазина вокруг веб-сайта. В моем случае веб-сайт не будет доступен, так как им нужно запустить его в автономном режиме. Насколько я могу судить, не существует варианта "не размещенного" веб-приложения.

Когда в Chrome размещались веб-приложения, мне удалось использовать автономный манифест, чтобы убедить браузер загрузить все приложение при первом запуске. Но это никогда не работало надежно, потому что Chrome самопроизвольно выбрасывал кеши без уважительной причины. Поскольку Surface Hub агрессивно выбрасывает кеши при завершении сеанса, я подозреваю, что этот подход тоже не сработает. (Я нашел запись в блоге Windows за прошлый год, которая, кажется, описывает этот трюк и называет его Progressive Web Apps или PWA; однако, поскольку он основан на кеш-воркерах, моя озабоченность по поводу того, что Surface Hub просто выбросит его, остается в силе.)

Итак, как я могу заставить мое веб-приложение работать в автономном режиме на Surface Hub? Я совершенно счастлив иметь флешку как часть решения, если это поможет.

-- Обновить --

См. Принятый ответ. Оказывается, для этого вам не нужна студия разработчика. Если вы создадите файл AppxManifest.xml и поместите все свое веб-приложение в папку, вы можете использовать MakeAppx.exe, чтобы связать все это. Обратите внимание, что в Магазине Windows есть некоторые странные требования, например, вашим файлам UTF-8 нужна спецификация на лицевой стороне.


person Joshua Smith    schedule 23.08.2017    source источник


Ответы (1)


Используете ли вы какие-либо собственные модули для своего приложения Electron? Как правило, если вы не полагаетесь на собственные модули, создание веб-приложения Windows довольно просто. Для веб-приложений Windows вы можете довольно легко смешивать локальный контент с удаленным контентом.

person Kevin Hill - Salesforce    schedule 23.08.2017
comment
Моя полная настольная версия имеет некоторую сложность, но для этого единственного развертывания я могу просто исключить эти функции и в основном делать это как статический веб-сайт. Я надеялся избежать необходимости изучать всю цепочку инструментов MS, если бы мог (хотя теперь у меня есть Win10 в виртуальной машине на моем Mac, поскольку мне пришлось сделать это, чтобы создать приложение, которое не будет запускаться на концентраторе). Можете ли вы указать мне на пример веб-приложения hello world, чтобы я мог понять, что в наши дни довольно прямолинейно означает на MS? (Я не писал специфичный для MS код 15 лет.) - person Joshua Smith; 24.08.2017
comment
Я нашел этот пример Hello World. docs. microsoft.com/en-us/windows/uwp/get-started/ Это то, что вы предлагали? - person Joshua Smith; 24.08.2017
comment
Также похоже, что для использования этого подхода для создания нашего приложения потребуется копия Visual Studio за 800 долларов, поскольку бесплатная версия Community не может использоваться предприятиями с немалой прибылью. - person Joshua Smith; 24.08.2017
comment
github.com/MicrosoftEdge/appx-starter - это хороший вариант для создания и тестирования appx в Windows. Какой набор инструментов вы предпочитаете? В конце концов, существуют способы создания пакета .appx из командной строки. Мы создали этот генератор йо, чтобы помочь с альтернативами использованию Visual Studio. - person Kevin Hill - Salesforce; 24.08.2017
comment
Мы используем различные сценарии оболочки в OS X для создания наших сборок. Я воспользуюсь бесплатной версией VS для создания прототипа, а затем посмотрю, смогу ли я выяснить, как самостоятельно сгенерировать .appx на основе того, что VS вставляет в созданный. Однажды я уже проходил генерацию манифеста, конвертируя приложение Electron. Я буду держать вас в курсе. - person Joshua Smith; 25.08.2017
comment
Сообщите мне, если возникнут проблемы! - person Kevin Hill - Salesforce; 25.08.2017
comment
Есть пара проблем, но по большей части я могу сгенерировать манифест и использовать MakeAppx.exe, чтобы все это связать. В основном это просто работает. Я сейчас отправляю пробный запуск магазина, чтобы увидеть, что пойдет не так. Есть идеи, как мое приложение может показать пользователю PDF-файл? Если он попытается просто открыть его, Edge WebView выйдет из строя. Если я попытаюсь показать это с помощью PDFJS, тоже произойдет сбой. На настольном компьютере я обычно передаю в O / S для PDF-файлов, но я не знаю, как это сделать из веб-приложения, подобного этому (PDF-файл запечен, поэтому это URL-адрес ms-appx: //). - person Joshua Smith; 26.08.2017
comment
Я задал вопрос для PDF-файлов: stackoverflow.com/questions/45900180/ - person Joshua Smith; 27.08.2017
comment
Я отправил ответ на вопрос в формате PDF. Мы убираем шаблоны с WinJS, поэтому, если вы сосредоточитесь только на необработанных вызовах JavaScript для рендеринга PDF-файла, вы будете в хорошей форме. - person Kevin Hill - Salesforce; 27.08.2017