У меня есть приложение, которое в настоящее время использует 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 нужна спецификация на лицевой стороне.