Ограничения UWP в настольных приложениях
Я знаю, что новая модель приложения UWP имеет некоторые ограничения по сравнению с "традиционными" приложениями Win32.
Давайте возьмем код Visual Studio в качестве примера настольного приложения.
Какие функции кода Visual Studio отсутствовали или должны были отличаться от точки зрения пользователя, если это было приложение UWP?
РЕДАКТИРОВАТЬ: я сдал экзамены на сертификацию Microsoft "Основы разработки приложений для Магазина Windows с использованием C#" и экзамен 70-355: универсальная платформа Windows - данные приложений, службы и шаблоны кодирования. Так что я знаю кое-что о Win RT API.
Пожалуйста, не беспокойтесь о таких ответах, как "приложение uwp запускается в песочнице". Они бесполезны, потому что ничего не говорят об ограничениях с точки зрения пользователей. Я намеренно взял пример из реальной жизни, чтобы мы могли пойти конкретным путем.
Ограничение может состоять в том, что ваше приложение не может поддерживать сторонние плагины, такие как пользовательская подсветка синтаксиса или расширение рефакторина (это было ограничением приложений Windows Store, не уверенным, что оно все еще действует).
Еще одним ограничением может быть то, что ваше приложение не может делать снимки экрана, потому что в uwp для него нет api (на самом деле не уверен, что это правда)
2 ответа
Фраза "настольное приложение Win32" является плохо определенной, поскольку программная модель Win32 API существовала начиная с Windows NT 3.1. Он также может охватывать десятки языков разработки и интерфейсов пользовательского интерфейса за прошедшие два десятилетия.
Вот краткий обзор ключевых отличий UWP:
Площадь поверхности API. Платформа UWP поддерживает многие, но не все Win32 и COM API, и вводит новые API. Если ваше "настольное приложение Win32" использует в основном API-интерфейсы ANSI, относящиеся к Windows 95, то вам нужно много обновлений. Если вы в основном используете API-интерфейсы UNICODE эпохи Windows Vista, то многие вещи "просто работают". См. Win32 и COM API для приложений среды выполнения Windows (система).
Контекст безопасности. Платформа UWP запускает приложения в контексте безопасности AppContainer. "Настольные приложения Win32" в Windows Vista или более поздней версии запускаются как "Стандартный пользователь" или как "Администратор". Приложения UWP имеют меньше прав доступа, чем "Стандартный пользователь", и их нельзя запускать как "Администратор". Приложения UWP могут запрашивать дополнительные возможности, чтобы получить еще несколько прав с разрешения пользователя, но имеют ограниченный доступ к системе и данным пользователя. Например, вы не можете прочитать большую часть файловой системы, только ваше установленное местоположение, изолированную папку с данными приложения и изолированную временную папку с файлами. См. Доступ к файлам и разрешения (приложения Windows Runtime). Это также означает, что приложения UWP имеют ограниченный доступ к устройствам. См. Обзоры устройств и датчиков.
Контроль учетных записей пользователей Windows Vista, в котором был представлен "Стандартный пользователь", был нацелен на защиту данных системы и других пользователей по сравнению со старой моделью "все является администратором", но мало что делал для защиты файлов данных текущего пользователя, поскольку все приложения могли получать к ним доступ или даже изменять их. Изоляция AppContainer защищает как систему, так и данные и настройки текущего пользователя. "Настольные приложения Win32" рекомендуется устанавливать на
C:\Program Files
который был доступен только для чтения во время выполнения и для использования папок данных приложения, но они не были обязаны.
Развертывание AppX. "Настольные приложения Win32" используют любое количество способов развертывания, часто с использованием технологии MSI и "Администратор". Приложения UWP упакованы в файлы AppX и всегда развертываются системой. Не существует "Настраиваемого шага установки", и поэтому приложения UWP не могут устанавливать драйверы или службы, изменять ACL и т. Д. Система заботится о развертывании среды выполнения C/C++ (которая должна быть только в Visual C++ 2015).
Модель пользовательского интерфейса. Существует множество фреймворков пользовательского интерфейса для "настольных приложений Win32", таких как WinForms, MFC, WPF и т. Д. Подавляющее большинство из них не совместимы с UWP, поскольку UWP не поддерживает классические оконные функции Win32,
WM_
сообщения или GDI/GDI+. Для приложений UWP вы можете использовать XAML с выделенным кодом C++ или C#, DirectX (Direct2D и / или Direct3D) с C++ (или C# через сторонние сборки, такие как SharpDX) или HTML5 с JavaScript.
Поэтому ответить на ваш вопрос чрезвычайно сложно, если не невозможно, без полного понимания кодовой базы и зависимостей продукта.