Опубликован: 02.04.2013 | Уровень: для всех | Доступ: платный
Лекция 2:

Жизненный путь приложений для Магазина Windows: Характеристики платформы Windows 8

Обнаружение, получение и установка

Теперь, когда ваше приложение вышло во внешний мир, следующая его задача - стать известным и привлекательным для потенциальных пользователей. Проще говоря, так как пользователи могут найти ваше приложение в Магазине Windows, просматривая его каталог или пользуясь поиском, вам нужно, как это обычно бывает, представить свой продукт рынку. Это неизменная истина, которая касается публикации программного обеспечения. Даже когда ваше приложение уже размещено в Магазине Windows, ему всё еще нужно хорошо представить себя потенциальным пользователям.

Каждое приложение в Магазине имеет страницу описания приложения (product description page), на которой люди могут прочесть описание приложения, увидеть скриншоты и обзоры, и возможности вашего приложения, описанные в его манифесте, как показано на Рис. 1.2. Последнее означает, что вы должны разумно подходить к объявлению возможностей приложения. Приложение для проигрывания музыки, например, очевидно заявит о своем намерении получать доступ к музыкальной библиотеке пользователя, но без особой причины не будет нуждаться в объявлении возможности доступа к библиотеке картинок. Точно так же, коммуникационное приложение обычно запрашивает доступ к камере и микрофону, а приложение для чтения новостей, как правило - нет. С другой стороны, программа для чтения электронных книг может запросить доступ к микрофону если у неё есть функция прикрепления аудиозаметок к закладкам, заданным пользователем.

Типичная страница приложения в Магазине Windows, на которой содержимое манифеста определяет, что будет перечислено в разделе описания разрешений, которые требуются приложению. В данном случае, например, в манифесте приложения PuzzleTouch объявлены возможности доступа к библиотеке изображений (Pictures Library), вебкамере (Webcam) и к Интернету в качестве клиента (Internet (Client)).

Рис. 1.2. Типичная страница приложения в Магазине Windows, на которой содержимое манифеста определяет, что будет перечислено в разделе описания разрешений, которые требуются приложению. В данном случае, например, в манифесте приложения PuzzleTouch объявлены возможности доступа к библиотеке изображений (Pictures Library), вебкамере (Webcam) и к Интернету в качестве клиента (Internet (Client)).

Размещенный в Магазине Windows appx-пакет приложения (Onboarder appx package)

Возможности, объявленные в манифесте, определяют то, что будет перечислено среди разрешений, которые требуются приложению (Capabilities in the manifest determine what shows under app permissions)

Смысл здесь в том, что те возможности, о которых вы заявляете, играют роль для пользователя, и если есть какие-то сомнения, вы должны чётко отразить связь возможностей с функциями вашего приложения в его описании. (Обратите внимание на то, как в описании Puzzle Touch это сделано для камеры). В противном случае, пользователя может весьма озадачить вопрос о том, что ваша программа для чтения новостей собирается делать с микрофоном, в итоге он может выбрать другое приложение, которое покажется ему менее навязчивым 3Пользователь всегда имеет возможность запретить доступ к ресурсам, которые он считает конфиденциальными, для тех приложений, которые объявили о соответствующем намерении, как мы увидим позже. Однако так как эти возможности отражены непосредственно в Магазине Windows, вам следует опасаться объявлять возможностей, которые вашему приложению, на самом деле, не нужны., вмешивающимся в его личные дела.

Кроме того, пользователь видит цену вашего приложения, и то, предоставляете ли вы пробный период. В любом случае, если он решит установить приложение (будет ли это бесплатное приложение, платное, или пробная версия приложения), ваше приложение окажется развёрнутым на реальном устройстве пользователя. Appx-пакет будет загружен на устройство и автоматически установлен, вместе с любыми ресурсами, от которых он зависит, таких, как Библиотека Windows для JavaScript (Windows Library for JavaScript) (смотрите врезку "Что такое Библиотека Windows для JavaScript"). Как показано на Рис. 1.3, менеджер развертывания приложений Windows создаёт папку для приложения, извлекает в неё содержимое пакета приложения. Он создаёт папки данных приложения (appdata) (здесь будут храниться локальные, перемещаемые и временные данные, к которым приложение может свободно получить доступ, как и к файлам с параметрами в формате ключ-значение, и к некоторым другим папкам, которыми управляет система). Менеджер выполняет необходимые манипуляции с реестром для установки плитки приложения на Начальный экран (Start screen), создания ассоциаций с файлами, установки библиотек, он выполняет и другие действия, описанные в манифесте приложения. В ходе этого процесса участие пользователя не требуется - за исключением чтения и принятия лицензионного соглашения!

Процесс установки приложения для Магазина Windows: точная последовательность шагов неважна

увеличить изображение
Рис. 1.3. Процесс установки приложения для Магазина Windows: точная последовательность шагов неважна

Загрузка и установка пакета приложения (Download and install app package)

Создание структур папок данных приложения (Create appdata structures)

Загрузка и установка материалов, от которых зависит приложение (объявленных в манифесте) (Download and install dependencies (identified in the manifest)

Создание записей в реестре на основании данных манифеста (Create registry entries based on manifest)

На самом деле, условия лицензирования приложений встроены в Магазин; загрузка приложения означает принятие этих условий. (Однако приложения вполне могут показывать собственные лицензионные требования при старте, так же как и предлагать совершить первый вход в систему, если они подразумевают подобную возможность). Но вот, что интересно: помните ли вы реальную цель всех этих длинных, скучных, набранных прописными буквами лицензионных соглашений, при виде которых мы обычно лишь делаем вид, что читаем их? Почти все из них обычно сообщают, что вы можете установить программное обеспечение лишь на одном компьютере. В случае с приложениями для Магазина Windows, это изменилось: вместо лицензирования, основанного на привязке к компьютеру, они лицензируются для пользователя, давая ему право установить приложение на нескольких, до пяти, устройствах.

Таким образом, приложения для Магазина Windows являются гораздо более персональными, нежели традиционные настольные приложения. Они гораздо меньше напоминают некие стандартные инструменты, с которыми могут работать многие пользователи. Они больше похожи на музыкальные записи или другие медиаматериалы, которые делают опыт взаимодействия пользователя с ОС Windows по-настоящему персональным. Такой подход создаёт у пользователя ощущение, что он может скопировать свою персонализированную рабочую среду на разные устройства, Windows поддерживает подобную возможность посредством автоматического перемещения и синхронизации данных приложений и их настроек между этими устройствами. (Подробнее об этом позже).

В любом случае, конечный результат всего этого заключается в том, чтобы приложение и все его подсистемы, необходимые для работы, были бы полностью готовы к работе на устройстве после того, как пользователь коснётся плитки на Начальном экране или запустит приложение посредством таких функций системы, как Поиск или Общий доступ. И, так как система знает всё, что происходило при установке приложения, можно выполнить полностью обратный процесс для 100%-чистой деинсталляции - полностью уничтожить папки с данными приложения, например, вычистить абсолютно всё, что ранее было записано в реестр. Это поддерживает систему абсолютно чистой в любой момент, даже тогда, когда пользователь устанавливает и деинсталлирует сотни или тысячи приложений. Нам нравится описывать это, приводя пример сравнения между гостями, которые приходят к вам домой, и гостями в отеле. В вашем доме гости могут есть вашу пищу, переставлять мебель, разбить пару ваз, скормить объедки домашним животным, бросать всякий хлам за шкафы, другими словами - оставлять после себя некоторое количество необратимых изменений (и вы знаете классические настольные приложения, которые так и делают, я уверен!). В отеле же гости могут пользоваться весьма небольшой частью общей инфраструктуры, и даже если они завалят мусором свою комнату, отель сможет очистить её и привести всё к такому состоянию, будто никого там и не было.

Врезка: Что такое Библиотека Windows для JavaScript

HTML, CSS и JavaScript-код в приложениях для Магазина Windows обрабатывается, компилируются и отрисовывается во время исполнения программ. (Смотрите раздел "Играя в собственной комнате: Контейнер приложения"). В результате, множество системных возможностей для приложений, написанных на JavaScript, таких, как элементы управления, управление ресурсами, стили по умолчанию, поддерживаются посредством Библиотеки Windows для JavaScript, или WinJS, вместо поддержки их посредством Windows Runtime API. При таком подходе, JavaScript-разработчики видят естественную интеграцию этих возможностей в окружение, которое они уже понимают, вместо того, чтобы испытывать необходимость в использовании незнакомых конструкций.

WinJS, например, предоставляет HTML-реализацию множества элементов управления, так что они выглядят как части DOM, их внешний вид может быть настроен с помощью CSS, как и в случае с "родными" для HTML элементами управления. Такой подход гораздо естественнее для разработчиков, чем создание экземпляра некоего WinRT-класса, связывание его с HTML-элементом и настройка его внешнего вида из кода, или с использованием какой-то фирменной системы разметки. Аналогично, WinJS предоставляет библиотеку анимации, которая построена на CSS, воплощающей привычный для пользователя Windows 8 опыт взаимодействия с системой, в итоге, приложению нет необходимости "ломать голову" над тем, чтобы воспроизвести этот опыт собственными средствами.

Вообще говоря, WinJS - это набор инструментов, который содержит множество независимых возможностей, которыми можно пользоваться как совместно, так и по отдельности. Так, WinJS предоставляет шаблоны для типичных структур программного кода, упрощает объявление пространств имен и объектных классов, помогает в обработке асинхронных операций (которые повсюду встречаются в WinRT) посредством promise-объектов, и предоставляют структурные модели для приложений, привязки данных, навигации по страницам приложения. В то же время, не делается попытка создать "обертку" для WinRT, за исключением тех случаев, где WinJS может принести реальную пользу. В конце концов, механизм, посредством которого WinJS проецируется на JavaScript уже приводит WinRT-структуры к тем, которые хорошо знакомы JavaScript-разработчикам.

В целом, WinJS важен для всех приложений для Магазина Windows, написанных на JavaScript, которые совместно пользуются этим набором инструментов. WinJS автоматически загружается и, при необходимости, обновляется, когда устанавливаются приложения, зависящие от него. Мы увидим множество его возможностей в этом курсе, хотя некоторые наш путь не пересекают. В любом случае, вы можете всегда узнать о том, что можно сделать с помощью WinJS в соответствующем разделе Справочника по Windows API для приложений Магазина Windows (http://msdn.microsoft.com/ru-ru/library/windows/apps/xaml/br211377.aspx).

Врезка: Библиотеки сторонних разработчиков

WinJS - это пример специальной совместно используемой библиотеки, которая автоматически загружается из Магазина Windows для приложений, которые в ней нуждаются. Microsoft поддерживает несколько подобных в Магазине Windows, таким образом, пакет библиотеки должен быть загружен лишь один раз и затем приложения могут использовать его совместно. Библиотеки сторонних разработчиков, к которым возможен общий доступ приложений в настоящее время не поддерживаются.

Однако приложения могут свободно использовать библиотеки сторонних разработчиков, встраивая их в собственные пакеты, при условии, конечно, что библиотеки используют лишь API, доступные приложениям для Магазина Windows.

Например, приложения, написанные на JavaScript могут использовать jQuery, Modernizer, Dojo, prototype.js, Box2D и другие, с учетом того, что некоторая функциональность, в особенности

касающаяся пользовательского интерфейса и внедрения скриптов, может не поддерживаться. Кроме того, приложения могут использовать двоичные ресурсы сторонних разработчиков, известные как WinRT-компоненты, которые, так же, включаются в пакет приложения. Так же смотрите врезку "Приложения на смешанных языках" ниже в этой лекции.

Владимир Мороз
Владимир Мороз
Украина, Киев, Киевская государственная академия водного транспорта имени Гетмана Петра Конашевича-Сагайдачного, 2012
Сергей Ширяев
Сергей Ширяев
Россия, г. Москва