ПАКЕТЫ КОМПЬЮТЕРНЫХ ПРИКЛАДНЫХ ПРОГРАММ С ИНДИВИДУАЛЬНОЙ НАСТРОЙКОЙ
COMPUTER APPLICATION PROGRAM PACKAGES WITH PERSONAL SETTING

ОБЛАСТЬ ТЕХНИКИ
Настоящее изобретение относится к программному обеспечению для компьютерных систем, а более точно к программному обеспечению для виртуальной среды, которое может быть локально настроено для каждого пользователя.
ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ
Приложения могут быть любым видом компьютерного программного обеспечения, которое выполняет функции или услуги. Во многих случаях, приложения могут быть программными системами, которые позволяют пользователю выполнять задачи, такие как обработка текстов, подготовка и воспроизведение презентаций, или отслеживание и анализирование финансов. Подобные программные системы могут иметь несколько различных видов файлов и других ресурсов, включая в себя исполнимые файлы, сценарии, динамически подгружаемые библиотеки, метаданные, установки реестра, и другие ресурсы, которые совместно работают для предоставления услуг или функций приложения.
Многие приложения имеют элементы, которые могут быть настроены индивидуально. Например, пользовательский интерфейс может быть сконфигурирован с особенным видом и ощущением, а некоторые функции могут быть доступны, недоступны или сконфигурированы для действия конкретным способом.
Приложения, работающие в виртуальной среде, могут быть собраны в пакет, содержащий различные программные компоненты. Каждый программный компонент может иметь конкретное имя и другие метаданные, включающие в себя кодовое обозначение для перезаписи или изменения ресурса. Политика может определять, как любые изменения конкретных программных компонентов могут быть сохранены и извлечены на основании кодового обозначения. Для создания индивидуальной версии приложения, на основании оригинального пакета, могут быть созданы, сохранены и повторно применены один или более наборов измененных компонентов. Приложение может быть выполнено в виртуальной среде приложения или в выделенной виртуальной среде машины.
Данное раскрытие изобретения предоставлено для выбора концепций в упрощенной форме, которые дополнительно описаны ниже в подробном описании. Данное раскрытие изобретения не предназначено для определения основных характеристик или существенных признаков заявленного объекта изобретения, а также не предназначено для использования с целью ограничения объема заявленного объекта изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
На чертежах:
фиг.1 изображает графическую иллюстрацию варианта осуществления, показывающую систему для исполнения пакетов прикладных программ;
фиг.2 изображает графическую иллюстрацию варианта осуществления, показывающую функциональные элементы системы для исполнения пакетов прикладных программ;
фиг.3 изображает иллюстрацию блок-схемы последовательности операции способа отслеживания изменений;
фиг.4 изображает иллюстрацию блок-схемы последовательности операции способа обновления пакета прикладных программ.
ПОДРОБНОЕ ОПИСАНИЕ ИЗОБРЕТЕНИЯ
Приложение может быть создано как пакет, который исполняется в виртуальной среде. Пакет может содержать все различные файлы или другие ресурсы, которые могут составлять приложение. Каждый файл или ресурс в пакете может иметь набор метаданных, который может быть использован для отслеживания изменений в пакете. Изменения могут быть встроены в модифицированный пакет, который может содержать модифицированные версии измененных файлов.
Модифицированные файлы могут быть использованы в сочетании с оригинальным пакетом прикладных программ для создания модифицированной версии пакета прикладных программ. В некоторых вариантах осуществления, индивидуально настроенный пакет прикладных программ может быть создан, когда пакет прикладных программ включает в себя модифицированные файлы вместо оригинальных файлов.
Каждый файл в пакете может иметь бит перезаписи или несколько других метаданных, которые могут позволить совершить изменение, сохранить и использовать в последующее время. Другие файлы в пакете могут не иметь таких метаданных или могут не изменяться. Некоторые файлы могут быть изменены, но изменение может не сохраниться.
Для определения того, как может быть сохранен конкретный вид изменения или изменения отдельных файлов, может быть использован набор политик. В  некоторых  случаях, политика может позволить применить изменение к другим пользователям системы как специфическое для системы изменение. Политика может быть применена к пользователю так, чтобы пользователь опробовал индивидуальную настройку независимо от используемой машины. Другие применения политик могут позволить изменениям распространиться на группы систем или пользователей, применение изменений в конкретных обстоятельствах, или другие определения.
После обновления пакета прикладных программ, могут быть созданы другие версии пакетов. Когда приложение исполняется в виртуальной среде, последняя версия пакета может быть извлечена и исполнена. Диспетчер обновления может объединить набор измененных файлов с обновленным пакетом прикладных программ на основании метаданных, относящихся к индивидуальным файлам. Например, некоторые обновленные файлы в пакете прикладных программ могут быть установлены, чтобы перезаписать файл, который был индивидуально настроен или изменен пользователем, в то время как другие обновленные файлы не могут быть установлены.
В описании изобретения и на чертежах одинаковые номера ссылок обозначают одни и те же элементы.
Если элементы именуются как являющиеся "подключенными" или "соединенными", элементы могут быть напрямую подключены или соединены друг с другом, или также могут присутствовать один или более промежуточных элементов. Напротив, если элементы именуются как являющиеся "напрямую подключенными" или "напрямую соединенными", промежуточных элементов не существует.
Объект изобретения может быть осуществлен как устройства, системы, способы и/или компьютерные программные продукты. Соответственно, некоторые или все из объектов изобретения могут быть осуществлены в аппаратном и/или программном обеспечении (в том числе в програмно-аппаратном обеспечении, резидентном программном обеспечении, наборе микрокоманд, машинах состояний, матрицах логических элементов, и так далее). Более того, объект изобретения может принять вид компьютерного программного продукта на машиночитаемом или пригодном для использования компьютером носителе данных, имеющем пригодный для использования компьютером или машиночитаемый программный код, воплощенный в носителе, для использования исполняющей команды системой, или в сочетании с ней. В контексте данного документа, пригодный для использования компьютером или машиночитаемый носитель может быть любым носителем, который может содержать, сохранять, сообщать, распространять, или переносить программу для использования исполняющей команды системой, прибором или устройством, или в сочетании с ними.
Пригодный для использования компьютером или машиночитаемый носитель может быть, для примера, электронной, магнитной, оптической, электромагнитной, инфракрасной или полупроводниковой системой, прибором, устройством или средой распространения, но не ограничивается этим. Для примера, а не ограничения, машиночитаемая среда может содержать компьютерную среду хранения и коммуникационную среду.
Компьютерная среда хранения включает в себя энергозависимый и энергонезависимый, съемный и несъемный носитель данных, реализованный по любому способу или технологии для хранения информации, такой как машиночитаемые команды, структуры данных, программные модули или другие данные. Компьютерная среда хранения включает в себя, но не ограничивается этим, ПЗУ, ОЗУ, EEPROM, флэш-память или технологии запоминания, CD-ROM, универсальный цифровой диск (DVD) или другое оптическое хранилище, магнитные кассеты, магнитную ленту, запоминающее устройство на магнитных дисках или другое магнитное запоминающее устройство, или любой другой носитель, которой может быть использован для хранения желаемой информации и к которому можно обратиться посредством исполняющей команды системы. Отметим, что пригодный для использования компьютером или машиночитаемый носитель может быть бумагой или другой подходящей средой, на которой распечатана данная программа, поскольку программа может быть захвачена в электронном виде посредством, например, оптического сканирования бумаги или другой среды, затем при необходимости откомпилирована, интерпретирована, или иначе обработана подходящим способом, и затем сохранена в компьютерном запоминающем устройстве.
Коммуникационные среды обычно включают в себя машиночитаемые команды, структуры данных, программные модули и другие данные в модулированные сигналы данных, такие как несущие волны или другие механизмы переноса и включают в себя любые среды доставки информации. Термин "модулированный сигнал данных" означает сигнал, который имеет установленными или измененными одну или несколько своих характеристик так, чтобы закодировать информацию в данный сигнал. Для примера, а не ограничения, коммуникационные среды включают в себя проводные среды, такие как проводные сети или прямые проводные соединения, и беспроводные среды, такие как акустические, RF, инфракрасные и другие беспроводные среды. Сочетания любого из перечисленного выше также должно быть включено в объем машиночитаемой среды.
Когда объект изобретения осуществляется в общем контексте машиночитаемых команд, вариант осуществления может содержать программные модули, исполняемые одной или более системами, компьютерами или другими устройствами. Обычно, программные модули включают в себя процедуры, программы, объекты, компоненты, источники, структуры данных, и так далее, которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Обычно, функциональные возможности программных модулей в различных вариантах осуществления могут быть по желанию объединены или распределены.
Фиг.1 изображает диаграмму варианта 100 осуществления, показывающую систему для исполнения пакетов прикладных программ. Вариант 100 осуществления является примером системы, которая может управлять пакетами прикладных программ как приложениями, индивидуально настроенными пользователями, также как и обновленными разработчиками приложения. Приложения могут быть сконфигурированы  в  виде  пакетов  и  исполнены  в  виртуальной среде.   Как   только совершены изменения в ресурсах, относящихся  к приложению, эти изменения могут быть сохранены или отклонены на основании   метаданных,   относящихся к ресурсам, и набора политик, устанавливающих как обрабатываются изменения.
Диаграмма на фиг.1 изображает функциональные компоненты системы. В некоторых случаях, компонент может быть аппаратным компонентом, программным компонентом или сочетанием аппаратных и программных средств. Некоторые компоненты могут быть программными средствами уровня приложений, в то время как другие компоненты могут быть компонентами уровня операционной среды. В некоторых случаях, соединение одного компонента к другому может быть близким соединением, где два или более компонента работают на единой аппаратной платформе. В других случаях, соединения могут быть сделаны через сетевые соединения, охватывая большие расстояния. Каждый вариант осуществления может использовать различные аппаратные, программные и взаимосвязанные архитектуры для достижения описанных функций.
Вариант 100 осуществления изображает функциональную схему, иллюстрирующую несколько компонентов и общую архитектуру для системы для управления приложениями, объединенными в пакет. Архитектура может состоять из сервера 104 распределения пакетов, который можно подключить к клиенту 102 через сеть 106. Во многих вариантах осуществления, сервер 104 распределения пакетов может быть компьютерным сервером, а клиент 102 может быть персональным компьютером, подключенным через локальную сеть. В других вариантах осуществления, сервер 104 и клиент 102 могут быть соединены через сеть 106 связи, содержащую Интернет или другую глобальную сеть.
Архитектура, показанная в варианте 100 осуществления, является обычным видом архитектуры клиент-сервер, которая встречается в коммерческих или других предприятиях. Другие варианты осуществления могут использовать другой вид архитектуры, в которой некоторые из функциональных возможностей, описанные для сервера 104, могут быть выполнены клиентом 102 или наоборот.
Клиент 102 может быть любым видом вычислительной платформы, в том числе персональным компьютером, карманным мобильным устройством, сотовым телефоном, карманным считывающим устройством, дорожным компьютером или другим переносным компьютером, устройством для доступа к сети, измерительным прибором, поддерживающим работу в сети, или любым другим устройством, которое может иметь пользовательский интерфейс 112.
Вариант 100 осуществления иллюстрирует систему, посредством которой сервер 104 распределения пакетов может подавать пакет 108 прикладных программ клиенту 102 так, чтобы пакет 108 прикладных программ мог быть исполнен в виртуальной среде 110. Во многих вариантах осуществления, пакет может быть исполнен в виртуальной среде 110 для пользы клиента 102.
Например, приложение обработки текстов может быть сконфигурировано в виде пакета 108 прикладных программ и отправлено клиенту 102, где клиент 102 может вызвать исполнение приложения обработки текстов. Пользовательский интерфейс 112 может показывать действия обработчика текстов и быть механизмом для пользователя по использованию приложения.
В некоторых вариантах осуществления, пакет 108 прикладных программ может быть для услуги или другого приложения, которое может взаимодействовать с другим компьютером. Подобные приложения могут использовать или могут не использовать пользовательский интерфейс 112.
Клиент 102 может вызвать исполнение пакета 108 прикладных программ в виртуальной среде 110. Виртуальная среда 110 может быть средой виртуальной машины или средой виртуального приложения. Среда виртуальной машины может быть программной конструкцией, которая имитирует среду операционной системы, в которой может быть исполнен пакет прикладных программ.
Среда виртуального приложения является механизмом, при помощи которого приложение может быть исполнено без взаимодействия с другими приложениями. Виртуализация приложения может создавать зависящие от приложения копии совместно используемых ресурсов. Каждое приложение может иметь отдельную конфигурацию потенциально совместно используемых ресурсов, таких как записи реестра, динамически подгружаемые библиотеки, и другие объекты, которые могут быть упакованы вместе с приложением. Пакет может быть исполнен в кэше, создавая виртуальное приложение. Когда применено виртуальное приложение, оно использует свою собственную копию этих совместно используемых ресурсов.
Поскольку приложение может быть исполнено в виртуальной среде, приложение может быть изменено, модифицировано и обновлено без взаимодействия с другими приложениями, которые могут использовать совместно используемые ресурсы. Виртуальная среда может дать возможность разделения между другими приложениями и позволить каждому приложению быть сконфигурированным отдельно.
Пакет 108 прикладных программ может содержать все файлы и ресурсы, используемые для исполнения данного приложения. Подобные ресурсы или компоненты могут включать в себя исполняемые файлы, сценарии, конфигурационные файлы, динамически подгружаемые библиотеки, файлы данных, шаблоны, установки реестра, метаданные, и любой другой вид файлов, данных, или другой элемент.
Каждый пакет 108 прикладных программ может включать в себя для каждого ресурса метаданные, которые могут описывать, среди других вещей, может ли данный ресурс быть обновлен и как обрабатывать эти обновления. Например, метаданные могут определять, может ли пользователь изменять ресурс и может ли это изменение быть сохранено. В другом примере, метаданные также могут определять, как данный ресурс может быть обновлен, когда доступна новая версия приложения. В еще одном примере, метаданные могут определять механизм, посредством которого сохраняются изменения, и как изменения могут быть распространены другим пользователям или другим устройствам. Метаданные могут содержать информацию, используемую во время начальной сборки новой версии пакета прикладных программ и другую информацию, которая может быть использована после того как пакет завершен и будет исполнен.
Когда ресурс в пакете 108 прикладных программ обновлен, модифицирован или сконфигурирован, данное изменение может быть сохранено и использовано еще раз, когда пакет прикладных программ будет перезапущен в сходном контексте. Изменение может быть сохранено или повторно использовано несколькими различными механизмами.
Пакет 108 прикладных программ может содержать файлы, а также и другие ресурсы, для которых изменения могут быть отслежены и сохранены. На протяжении данного описания изобретения, термин "ресурсы" используется для приведения примера тех ресурсов, которые могут включать в себя исполняемые файлы, файлы данных, конфигурационные файлы, записи реестра, ресурсы COM, IP-адреса, метаданные, конфигурационные элементы, установки, и другие ресурсы. Любое упоминание о ресурсах может включать в себя любой вид ресурсов, включая те, что описаны выше.
В первом механизме, сделанные изменения сохраняются в отдельный набор индивидуально настроенных ресурсов 114. Когда пакет 108 прикладных программ запущен, набор индивидуально настроенных ресурсов 114 может быть встроен в пакет 108 прикладных программ на время работы путем замены соответствующих ресурсов в пакете 108 прикладных программ индивидуально настроенными ресурсами 114.
Подобный вариант осуществления имеет несколько особых характерных признаков. Пакет 108 прикладных программ может быть первоначальным пакетом, содержащим все неизмененные версии ресурсов в приложении. Любые изменения, сделанные в конфигурации приложения, могут быть сохранены отдельно в группе индивидуально настроенных ресурсов 114. Подобный вариант осуществления имеет более сложную процедуру запуска, чтобы индивидуально настроенные ресурсы 114 могли быть встроены в пакет 108 прикладных программ.
Во втором механизме, изменения могут быть использованы для создания индивидуально настроенных версий пакетов 116 прикладных программ. Могут быть созданы несколько различных индивидуально настроенных версий пакетов 116 прикладных программ, каждая отдельного пользователя или отдельной ситуации. Индивидуально настроенные версии пакетов 116 прикладных программ могут быть полными пакетами прикладных программ, которые включают в себя все из различных ресурсов, которые составляют приложение.
Подобный вариант осуществления имеет несколько особых характерных признаков. Пакеты 116 прикладных программ каждый могут быть довольно большими, и, когда присутствует много разных конфигураций, объем хранилища, используемый пакетами 116 прикладных программ, может быть большим. Однако пакеты 116 прикладных программ могут быть полными, автономными приложениями, содержащими в себе все ресурсы, используемые для исполнения. Как полные пакеты прикладных программ они могут быть более быстро запущены и начаты исполняться, чем при использовании первого механизма.
Другие варианты осуществления могут иметь другие механизмы для управления, сохранения и извлечения индивидуально настроенных или модифицированных ресурсов. В некоторых вариантах осуществления, метаданные или политики могут быть использованы для определения того, какие некоторые виды изменений в пакете могут быть сохранены в индивидуально настроенных ресурсах 114 и другие изменения использованы для создания индивидуально настроенных версий пакетов 116 прикладных программ. Некоторые изменения могут быть по своему характеру локальными и могут затрагивать только пользователей конкретного клиента 102. Другие изменения могут быть более широко применимы и могут быть совместно использованы с другими клиентскими устройствами сервером 104 распространения пакетов, посредством индивидуально настроенной версии пакета 116 прикладных программ.
Время от времени, сервер 118 обновлений может распространять пакеты 120 обновления на сервер 104 распространения пакетов. Пакеты 120 обновления могут включать в себя корректоры ошибок, модернизации, новые свойства, или другие изменения в пакет 108 прикладных программ. Сервер 104 распространения пакетов может иметь диспетчер обновления, который может создавать новый пакет 108 прикладных программ, используя обновления 120 пакетов.
Обновления 120 пакетов могут быть в виде полных пакетов, или в виде группы модифицированных или обновленных ресурсов, таких как дифференциальный набор ресурсов. В любом случае, может быть принято решение о том, как встроить индивидуально настроенные ресурсы 114 в данный обновленный пакет. В некоторых случаях, ресурсы от сервера 118 обновления могут иметь метаданные, которые заставят данные ресурсы перезаписать любые существующие ресурсы, будь они оригинальными ресурсами в предыдущей версии пакета 108 прикладных программ или индивидуально настроенными ресурсами 114, которые могли быть созданы или модифицированы пользователями.
Метаданные в обновлении 120 пакета могут определять, будет ли обновленный ресурс использован вместо любого существующего ресурса или нет. Подобные метаданные могут обозначать, что обновленный ресурс является используемым вместо любой предыдущей версии, или может обозначать, что обновленный ресурс может быть использован вместо более ранней версии, но не версии, индивидуально настроенной пользователем. Метаданные могут раздельно определять, могут ли быть пользователем сделаны модификации ресурсов и как эти модификации могут быть сохранены.
Фиг.2 изображает графическое представление варианта 200 осуществления, показывающее систему для исполнения пакетов прикладных программ. Вариант 200 осуществления является примером функциональных компонентов системы, которая может управлять пакетами прикладных приложений как приложениями, индивидуально настроенными пользователями, так же как и модернизированными разработчиками прикладных программ.
Графическое представление на фиг.2 изображает функциональные компоненты системы. В некоторых случаях, компонент может быть аппаратным компонентом, программным компонентом, или комбинацией программных и аппаратных средств. Некоторые из компонентов могут быть программным обеспечением уровня прикложений, тогда как другие компоненты могут быть компонентами уровня операционной системы. В некоторых случаях, подключение одного компонента к другому может быть близким подключением, где два или более компонента работают на одной аппаратной платформе. В других случаях, подключения могут быть сделаны через сетевые подключения, охватывая большие расстояния. Каждый вариант осуществления может использовать различную аппаратную, программную, и взаимосвязанную архитектуру для достижения описанных функций.
Вариант 200 осуществления является примером функциональных элементов, которые могут быть использованы для управления обновлениями исполняемых пакетов прикладных программ. Функциональные элементы могут быть различными функциями, которые могут быть выполнены на одном или более устройствах и во многих различных конфигурациях. В некоторых случаях, различные функции могут быть выполнены разными физическими устройствами, соединенными через локальную сеть, или глобальную сеть, такую как Интернет. В других случаях, два или более, или возможно все из различных функций могут быть выполнены на одном устройстве.
Функции, описанные в варианте 200 осуществления, иллюстрируют некоторый механизм, посредством которого пакет прикладных программ может управляться на протяжении различных циклов обновления. В некоторых случаях, обновленные версии пакета могут быть созданы разработчиком прикладных программ или производителем программного обеспечения. Обновленные версии могут быть использованы для создания текущей версии пакета прикладных программ. В других случаях, модификация или индивидуальные настройки могут быть сделаны пользователем, системным администратором, или другим объектом, и эти индивидуальные настройки могут быть сохранены и встроены в пакет прикладных программ.
Модифицированные или индивидуально настроенные ресурсы могут быть отслежены и обработаны отдельно от обновлений, созданных производителем программного обеспечения. Метаданные в пакетах прикладных программ могут определять, как обработать обновление. Метаданные могут позволить или запретить обновления и могут позволить некоторым обновлениям быть сохраненными, некоторым перезаписать другие обновления, и многие другие возможности.
Для определения как индивидуально настроенные ресурсы могут быть сохранены и применены, может быть использован набор политик. Политика может определять, будут ли некоторые обновления сохранены и применены ко всем пользователям устройства,  к различным группам пользователей или индивидуальным пользователям. Политика может классифицировать конкретные виды обновлений и применять эти обновления разными способами.
Диспетчер 204 обновлений для исполнения может предоставлять с пакетом прикладных программ исполняющий механизм 210. Пакет прикладных программ может включать в себя ресурсы из текущей версии пакета 202 вместе с некоторыми индивидуально настроенными наборами ресурсов 206. Диспетчер 204 обновлений может создавать индивидуально настроенный пакет прикладных программ посредством слияния текущей версии пакета 202 и групп наборов индивидуально настроенных ресурсов 206.
В некоторых случаях, на основании политики 216, диспетчер обновления может применить два или более индивидуально настроенных набора ресурсов 206. Наборы индивидуально настроенных ресурсов 206 могут быть созданы на основании политики  216  для различных видов изменений. Некоторые изменения могут быть применены к компании или предприятию целиком, в то время как другие изменения могут быть применены к отделам внутри предприятия, группам внутри отдела, или конкретным пользователям или устройствам. Некоторые изменения могут быть применены к различным видам устройств, независимо от пользователей, в то время как другие изменения могут быть применены к различным видам пользователей, независимо от используемых устройств.
В некоторых случаях, конкретные наборы индивидуально настроенных ресурсов могут быть созданы для некоторых обстоятельств. Для примера, приложение, используемое вооруженной охраной для наблюдения за зданием, может иметь индивидуальные настройки, определенные для наблюдения за зданием в ночное время, и отдельный набор индивидуальной настройки для дневной работы здания. В другом примере, приложение бухгалтерского учета может иметь конкретный набор свойств или индивидуальных настроек, определенных для итогового годового отчета и отдельный набор индивидуальных настроек, определенных для судебно-бухгалтерской экспертизы.
В случаях, где используются два или более набора индивидуально настроенных ресурсов, индивидуально настроенные ресурсы могут быть применены в конкретном порядке, где последний примененный набор имеет приоритет. Например, сначала может быть применен набор индивидуальных настроек в масштабе компании, затем набор индивидуальных настроек в масштабах отдела, и последним пользовательский набор индивидуальных настроек. Другие варианты осуществления могут иметь другие способы или механизмы для встраивания множественных наборов индивидуальных настроек.
Набор индивидуально настроенных ресурсов 206 может включать в себя набор конфигурационных ресурсов, файлов данных, или других видов ресурсов, которые могут модифицировать любую часть приложения. В некоторых случаях, индивидуально настроенные ресурсы могут включать в себя элементы, которые изменяют внешний вид и ощущения или пользовательский интерфейс приложения. Например, набор индивидуальных настроек компании может включать в себя логотип компании и телефонный номер или адрес электронной почты для внутренней технической поддержки компании. Созданный пользователем набор индивидуальных настроек может включать в себя настройки для размера шрифта и цветовой схемы. В другом примере, набор конфигурационных ресурсов может включать в себя сетевые настройки и адреса, которые могут позволить приложению подключаться к удаленной услуге, размещенной на сервере, расположенном в локальной сети или доступном через Интернет. В зависимости от физического местоположения или сетевого местоположения устройства во время запуска приложения могут быть использованы разные конфигурационные ресурсы.
В других случаях, данные индивидуально настроенные ресурсы могут включать в себя элементы, которые изменяют функции или характеристики приложения. Например, набор индивидуально настроенных ресурсов 206 может включать в себя сценарии, макрокоманды, или исполняемые файлы, которые выполняют конкретные задачи, интегрированные модули приложения, конфигурационные ресурсы, которые разрешают или запрещают конкретные функции, или другие функциональные изменения в приложении. В другом примере, набор индивидуально настроенных ресурсов 206 может включать в себя сетевые адреса и параметры соединения, чтобы позволить приложению подключаться к конкретной услуге, предоставляемой по конкретному сетевому адресу, в то время как другой набор индивидуально настроенных ресурсов 206 может быть использован для подключения к подобной услуге на другом сервере.
В еще одних случаях, индивидуально настроенные ресурсы могут включать в себя данные, которые могут быть использованы приложением. К примеру, программа обработки текстов может иметь набор индивидуально настроенных ресурсов, которые включают в себя шапку фирменного письма компании или индивидуализированные бланки для документов. Некоторые подобные индивидуально настроенные ресурсы могут включать в себя шаблоны, форматы, или наборы данных по умолчанию, которые используются в различных функциях или действиях.
Наборы индивидуально настроенных ресурсов 206 могут быть созданы разными видами пользователей или могут быть классифицированы различными способами. Вид индивидуальной настройки и способность для конкретного вида пользователя модифицировать конкретный ресурс могут быть определены в метаданных, относящихся к данному ресурсу, а также как в политике 216. Например, некоторые виды индивидуальной настройки в масштабе предприятия могут быть реализованы пользователем с административным уровнем прав. Например, пакет прикладных программ  может  иметь  характерные  признаки, которые могут быть разрешены или запрещены на основании лицензионных ограничений или общей политики компании. Подобные изменения могут быть разрешены администратору, но не обычному пользователю.
Некоторые пользователи могут быть определены как группа администраторов и могут быть способны добавлять, или модифицировать индивидуальные настройки, которые используются группой пользователей, такой как отдел внутри компании, но не имеют возможности вводить изменения, которые используются в других отделах или группах.
Некоторые варианты осуществления могут позволить пользователю создавать индивидуально настроенные ресурсы или изменять существующие ресурсы, затем определяя, как данные изменения могут быть распространены. Например, пользователь может делать изменение в существующий ресурс в пакете прикладных программ. Пользователю может быть представлен набор возможностей того, как изменение может быть применено по другим копиям приложения. Пользователь может, к примеру, позволить использование изменения другими лицами или группами пользователей. Путем выбора того, как данное изменение может быть применено, изменение может быть записано в различные наборы индивидуально настроенных ресурсов 206.
Политика 216 может разрешить сохранение изменений, используя различные механизмы. Например, некоторые изменения могут быть сохранены на локальном устройстве хранения, и использоваться, когда приложение исполняется на локальном устройстве. Другие изменения  могут  быть  сохранены  на сетевом сервере и совместно использованы с другими пользователями и другими устройствами.
Некоторые политики могут позволить применять наборы индивидуально настроенных ресурсов 206 на пользовательском базисе,  а  также  и  на  базисе   устройства  или функциональном базисе. Пользовательский базис может относиться к применению набора индивидуально настроенных ресурсов, основанного на идентичности пользователя, такой как конкретный пользователь или группа пользователей. Группа пользователей может быть определена по виду пользователя, такому как администратор, опытный пользователь, обычный пользователь, или гостевой пользователь. Другие группы пользователей могут быть определены по назначению, например Руководители программы или Помощники по административным вопросам. Еще одни группы пользователей могут быть определены посредством принадлежности, например члены отдела маркетинга или члены клуба велосипедистов.
Базис устройства для применения набора индивидуально настроенных ресурсов может быть основан на идентичности конкретного устройства или группы устройств. Некоторые группы устройств могут быть идентифицированы по различным функциональным характеристикам, таким как имеет ли устройство конкретную способность или подключенное периферийное устройство, например. Некоторые группы устройств могут быть идентифицированы, используя сетевые адреса, например устройства в конкретной подсети. Группы устройств также могут включать в себя устройства, относящиеся к отделу компании, например отдел учета. Некоторые устройства могут быть классифицированы по виду, например переносные компьютеры, настольные компьютеры, серверные компьютеры, ручные считывающие устройства, мобильные телефоны, или другие виды устройств.
Функциональный базис для применения набора индивидуально настроенных ресурсов может быть основан на конкретной функции, которая может быть выполнена с приложением. Например, приложение управления инвентаризацией может иметь набор индивидуально настроенных ресурсов, который выбирается, когда выполняются функции перевозки и приема. Другой набор индивидуально настроенных ресурсов может быть выбран, когда подлежит выполнению функция инвентаризации.
В некоторых вариантах осуществления, политика 216 может позволять сложный набор критериев для выбора и применения наборов индивидуально настроенных ресурсов 206 для текущей версии пакета 202 прикладных программ. Например, пользователь, выполняя конкретные функции на конкретном устройстве, может использовать наборы индивидуальных настроек, которые включают в себя индивидуальные настройки в масштабах компании, индивидуальные настройки конкретного отдела, индивидуальные настройки конкретной функции, индивидуальные настройки конкретного устройства и персональные индивидуальные настройки. Каждый набор индивидуальных настроек может добавлять или убирать различные элементы из пакета прикладных программ, так что пакет прикладных программ может выглядеть совершенно индивидуально настроенным, но может происходить из единой текущей версии пакета 202 прикладных программ, который используется многими пользователями, устройствами и функциями.
Некоторые из индивидуально настроенных ресурсов в наборе индивидуально настроенных ресурсов 206 могут быть модификацией существующих ресурсов или могут быть отдельными ресурсами, не относящимися к другим ресурсам. Модификация существующего ресурса может быть обновленной версией стандартного ресурса в пакете прикладных программ.
Например, в пакете прикладных программ может быть определен конфигурационный ресурс, и метаданные, относящиеся к конфигурационному ресурсу, могут позволить пользователю изменить конфигурационный ресурс. В некоторых случаях, метаданные могут запретить пользователю изменить некоторые части конфигурационного ресурса, в то время как в других случаях, метаданные могут позволить любой вид изменений конфигурационного ресурса. Обновленный конфигурационный ресурс может быть сохранен как индивидуально настроенный ресурс в наборах индивидуально настроенных ресурсов 206.
Обновленный ресурс, взятый из пакета прикладных программ, может быть сохранен с определенной зависимостью, определенной между обновленным ресурсом и исходным ресурсом в пакете прикладных программ. В некоторых случаях, обновленный ресурс может разделять то же имя, как и исходный ресурс в пакете прикладных программ. В других случаях, для исходного ресурса может быть определен глобально уникальный идентификатор (GUID). Обновленный ресурс в некотором виде может ссылаться на GUID исходного ресурса так, что два данных ресурса являются родственными. В некоторых случаях, для обновленного ресурса может быть определен GUID, и может быть определена таблица взаимоотношений для сохранения и отслеживания взаимоотношений между исходными и индивидуально настроенными ресурсами.
Диспетчер 204 обновлений может объединить текущую версию пакета 202 прикладных программ и различные наборы индивидуальных ресурсов 206. В некоторых вариантах осуществления, диспетчер 204 обновлений может создать индивидуально настроенный пакет прикладных программ, который содержит полный набор ресурсов, которые могут быть исполнены в виртуальной среде 212 исполняющим механизмом 210. В других случаях, диспетчер 204 обновлений может передавать пакет 202 прикладных программ вместе с наборами индивидуально настроенных ресурсов 206, которые применимы в данной конкретной ситуации.
Текущая версия пакета 202 прикладных программ может быть постоянной или "золотой" версией приложения. Пакет 202 прикладных программ может быть стандартизированной копией или базовой версией, откуда могут быть применены другие индивидуальные настройки. В развертывании приложения на уровне предприятия, по всему предприятию может быть использована единственная золотая версия приложения, но каждый отдел, пользователь или группа могут испробовать разные версии. Каждый пользователь может иметь возможность индивидуальной настройки некоторых частей данного приложения и иметь эти индивидуальные настройки появляющимися каждый раз, когда пользователь запускает приложение.
С точки зрения пользователя, каждый пользователь может испробовать другое приложение, однако с точки зрения управления программным обеспечением, единственный пакет прикладных программ может быть управляем и развернут среди множества разных пользователей.
Исполняющий механизм 210 может принимать пакет прикладных программ и может вызывать исполнение данного пакета прикладных программ в виртуальной среде. В некоторых случаях, виртуальная среда 212 может быть создана и сконфигурирована исполняющим механизмом 210 особенным образом для данного приложения.
Виртуальная среда 212 может быть любым видом виртуальной среды в любом виде конфигурации. Во многих случаях, виртуальная среда может быть виртуальной средой приложения. В других случаях, виртуальная среда может быть виртуальной средой машины. В некоторых случаях, виртуальная среда может быть создана на том же самом физическом устройстве, что и исполнительный механизм 210, тогда как в других случаях исполнительный механизм 210 может использовать виртуальную среду 212, работающую на другом физическом устройстве, например, таком как сервер.
Пользовательский интерфейс 208 может быть использован для выбора и запуска данного приложения вместе с индивидуальными настройками. В сценарии настольного компьютера, пользователь может щелкнуть по пиктограмме для запуска приложения. Настольный компьютер может подключиться к серверному устройству, с которого может быть получена текущая версия пакета 202 прикладных программ и наборы индивидуально настроенных ресурсов. В настольном компьютере, исполняющий механизм 210 может сконфигурировать виртуальную среду 212 и вызвать начало исполнения приложения. В некоторых вариантах осуществления, приложение может быть представлено в пользовательском интерфейсе 208, как если бы приложение было исполнено исходно на операционной системе настольного компьютера.
В некоторых подобных вариантах осуществления, пользователь может иметь различные возможности для выбора при запуске приложения. Подобные возможности могут позволить диспетчеру 204 обновлений выбрать соответствующий набор индивидуально настроенных ресурсов 206 для применения в конкретном случае. В некоторых случаях, пользователь может иметь возможность выбрать соответствующий набор индивидуально настроенных ресурсов 206 из меню или набора возможностей, а в других случаях, подобный выбор может быть сделан автоматически. Например, переносной компьютер может исполнить приложение, используя один набор индивидуально настроенных ресурсов, если переносной компьютер подключен к локальной сети, которая имеет сервер с диспетчером 204 обновлений. Переносной компьютер может исполнить то же самое приложение, используя другой набор индивидуально настроенных ресурсов, если переносной компьютер подключен к тому же самому серверу через Интернет.
Диспетчер 214 изменений на период прогона может обнаруживать, когда сделаны изменения в ресурсах в пакете прикладных программ, и может распределять по категориям, классифицировать и конфигурировать данные изменения в наборы индивидуально настроенных ресурсов 206, используя политику 216. В некоторых случаях, диспетчер 214 изменений на период прогона может работать в фоновом режиме и может выполнять свои функции без вмешательства пользователя. В других случаях, диспетчер 214 изменений на период прогона может взаимодействовать с пользователем, чтобы определить, как изменения подлежат управлению.
Диспетчер 204 обновлений также может обрабатывать управление новых версий пакета 218 прикладных программ. Когда принята новая версия пакета 218 прикладных программ, диспетчер 204 обновлений может создать обновленный "золотой" пакет прикладных программ, который затем может быть установлен как текущая версия пакета 202 прикладных программ.
Диспетчер 204 обновлений может обновлять различные ресурсы в текущей версии пакета 202 прикладных программ на основании метаданных, относящихся к индивидуальным ресурсам в обновленном пакете 218. В некоторых случаях, метаданные будут вызывать перезапись соответствующих ресурсов в текущей версии пакета 202 ресурсами из новой версии пакета 218. В некоторых случаях, метаданные могут вызвать удаление соответствующих ресурсов в наборах индивидуально настроенных ресурсов 206, а также, в некоторых случаях, замену ресурсом в новой версии пакета 218. Метаданные могут позволить или предотвратить последующие изменения нового ресурса пользователем.
Фиг.3 изображает блок-схему, иллюстрирующую вариант 300 осуществления, показывающую способ отслеживания изменений ресурсов в пакете прикладных программ. Вариант 300 осуществления является примером различных действий, которые могут быть выполнены главным образом диспетчером 214 изменений на период прогона, дополнительно к некоторым действиям, выполняемым диспетчером 204 обновлений и исполняющим механизмом 210.
Другие варианты осуществления могут использовать другие последовательности, дополнительное или меньшее число этапов, и другую номенклатуру или терминологию для достижения подобных функций. В некоторых вариантах осуществления, различные действия или наборы действий могут быть выполнены параллельно с другими операциями, синхронным или асинхронным способом. Выбранные здесь этапы были выбраны для иллюстрации некоторых принципов действий в упрощенной форме.
Вариант 300 осуществления иллюстрирует способ обнаружения и обработки изменений ресурсов, сделанных в пакете прикладных программ. Изменения могут быть обработаны на основании метаданных,  относящихся  к данному ресурсу, равно как и политик.
Пакет прикладных программ может быть создан в блоке 302 и исполнен в виртуальной среде в блоке 306.
Пакет прикладных программ может быть создан в блоке 302, используя различные механизмы. В некоторых случаях, пакет прикладных программ может быть создан диспетчером обновлений путем слияния текущего пакета прикладных программ с набором индивидуально настроенных ресурсов. В некоторых случаях, пакет прикладных программ может быть исполнен без дополнительной индивидуальной настройки ресурсов.
Пакет прикладных программ может быть исполнен в блоке 304, используя любой вид виртуальной среды, такой как виртуальную среду машины или виртуальную среду приложения.
Когда в блоке 308 обнаружено изменение ресурса, и в блоке 310 метаданные, относящиеся к ресурсу, позволяют изменение, изменение  может  быть сохранено согласно политике в блоке 312. Если в блоке 310 метаданные не позволяют изменение, изменение не будет записано и данный процесс вернется к блоку 306.
Диспетчер 214 изменений на период прогона может отслеживать исполнение приложения и может обнаруживать любые изменения, сделанные в ресурсе из пакета прикладных программ. Диспетчер изменений на период прогона может быть функцией, работающей внутри той же виртуальной среды, что исполняет приложение, или может быть функцией, которая работает вне виртуальной среды. В некоторых случаях, диспетчер изменений на период прогона может быть функцией, которая запускается исполняющим механизмом вместе с пакетом прикладных программ. Другие варианты осуществления могут каждый иметь другую функциональную архитектуру.
Метаданные, используемые в блоке 310, могут быть метаданными, относящимися к индивидуальным ресурсам, и могут быть метаданными, которые являются частью пакета прикладных программ. В некоторых случаях, каждый ресурс может иметь отдельный и особый набор метаданных. В других случаях, набор метаданных может быть применен к группам ресурсов.
Метаданные в блоке 310 могут позволить или запретить изменения конкретных ресурсов или групп ресурсов. Метаданные могут определить некоторые ресурсы в пакете прикладных программ, которые не могут быть изменены. Подобные ресурсы могут включать в себя такие ресурсы, при изменении которых приложение не может функционировать должным образом, например исполняемые файлы, динамически подгружаемые библиотеки, установки реестра, объекты COM, IP-адреса, и другие ресурсы.
Некоторые ресурсы в пакете прикладных программ могут быть модифицируемыми. Подобные ресурсы могут быть конфигурационными файлами, которые могут содержать конфигурируемые пользователем установки, шаблоны по умолчанию, или другие ресурсы. Метаданные в блоке 310 могут быть определены производителем программного обеспечения и могут быть частью основообразующей структуры приложения.
Политика в блоке 312 может определять, как изменения могут быть  сохранены  и  управляться  в  среде  предприятия.  Политика  может быть локально определенным и локально управляемым набором правил, который может быть специально приспособлен к внутренним процедурам и деловой модели компании или предприятия.
Политика   может  определять  различные     классификации для изменений к приложению и может определять условия и механизмы для сохранения изменений. Для примера, некоторые изменения могут быть идентифицированы как местные, пользовательские изменения могут быть сохранены на настольном компьютере. Другие изменения могут быть идентифицированы как изменения, которые могут быть разделенными с другими компьютерами, и подобные изменения могут быть сохранены на серверном устройстве.
В некоторых случаях, политика может запретить сохранение изменения  при  конкретном  обстоятельстве,  даже если метаданные могут разрешить изменение. Например, пользователь может  создать  измененную  версию  ресурса,  но  может  не иметь полномочий, как определено в политике для сохранения изменения.
Фиг.4 изображает блок-схему, иллюстрирующую вариант 400 осуществления, показывающую способ обновления пакета прикладных программ. Вариант 400 осуществления является примером различных действий, которые могут быть выполнены диспетчером 204 обновления, когда принята новая версия пакета 218 прикладных программ.
Другие варианты осуществления могут использовать другие последовательности, дополнительное или меньшее число этапов, и другую номенклатуру или терминологию для достижения подобных функций. В некоторых вариантах осуществления, различные действия или наборы действий могут быть выполнены параллельно с другими операциями, синхронным или асинхронным способом. Выбранные здесь этапы были выбраны для иллюстрации некоторых принципов действий в упрощенной форме.
Вариант 400 осуществления является примером способа создания новой версии пакета прикладных программ, используя метаданные, относящиеся к ресурсам обновленного пакета прикладных программ. Вариант 400 осуществления производит анализ каждого ресурса в старой версии пакета прикладных программ. Другие варианты осуществления могут анализировать каждый ресурс в новой версии пакета прикладных программ, чтобы произвести схожие результаты. Вариант 400 осуществления является всего лишь примером общего процесса обновления индивидуальных ресурсов в пакете прикладных программ и удаления индивидуально настроенных ресурсов, если эти индивидуально настроенные ресурсы могут мешать данным обновлениям.
Вариант 400 осуществления проходит по каждому ресурсу в пакете прикладных программ и заменяет старую версию ресурса новой версией, если новая версия существует. Если существует модифицированная версия старого ресурса, метаданные, относящиеся к новому ресурсу, могут показать, что данная модифицированная версия не совместима с обновленным пакетом прикладных программ, и модифицированный или индивидуально настроенный ресурс может быть удален. Если модифицированная версия данного ресурса совместима, то модифицированная версия может быть сохранена.
Старая версия пакета прикладных программ может быть принята в блоке 402, равно как и новая версия пакета прикладных программ в блоке 404, и любые модифицированные ресурсы для пакета в блоке 406.
Новая версия пакета приложений в блоке 404 может быть в виде полного пакета прикладных программ или может быть в виде измененных или обновленных ресурсов для пакета прикладных программ. Во многих случаях, обновленная версия пакета прикладных программ может быть создана производителем программного обеспечения и распространена подписчикам услуги обновления, например.
Для каждого ресурса в старой версии пакета прикладных программ в блоке 408, выполняется анализ ресурса, и ресурс может быть обновлен, а соответствующий индивидуально настроенный ресурс может быть ликвидирован.
Соответствующий ресурс в новой версии пакета прикладных программ может быть идентифицирован в блоке 410. Разные варианты осуществления могут иметь разные механизмы для определения того, какие ресурсы относятся друг к другу. В некоторых случаях, каждому ресурсу может быть назначен глобально уникальный идентификатор (GUID) или некоторое другое уникальное имя. Когда ресурс в старой версии пакета имеет тот же самый GUID, как и ресурс в новой версии, ресурсы являются идентичными как в блоке 412. Если GUID различны, то ресурсы могут быть разными в блоке 412 и старый ресурс может быть заменен новым ресурсом в блоке 414.
Некоторые варианты осуществления могут использовать поисковую таблицу или некоторую другую ссылку для определения, какие ресурсы в новой версии пакета прикладных программ могут заменить ресурсы в старой версии пакета прикладных программ.
В вариантах осуществления, где новый пакет прикладных программ развертывается как полный набор ресурсов, действия блоков 412 и 414 могут быть опущены.
Если в блоке 416 не имеется модифицированной версии текущего ресурса, процесс может вернуться к блоку 408 для обработки следующего ресурса.
Если в блоке 416 имеется модифицированная версия ресурса, метаданные, относящиеся к новой версии, анализируются в блоке 418. Метаданные, относящиеся к новой версии ресурса, могут иметь признак или определение, которое показывает, совместимы ли старые версии модифицированных ресурсов с обновленным пакетом прикладных программ.
Если метаданные показывают, что модифицированный ресурс способен использоваться в блоке 420, модифицированная версия может быть сохранена в блоке 424. Если метаданные показывают, что данный модифицированный ресурс не может быть использован в блоке 420, модифицированная версия ресурса может быть удалена в блоке 422.
В некоторых вариантах осуществления, модифицированная версия ресурса может быть найдена в нескольких разных наборах индивидуально настроенных ресурсов. В подобных вариантах осуществления, каждая копия модифицированного ресурса может быть удалена. В некоторых вариантах осуществления, модифицированные ресурсы могут быть помечены как неактивные, перемещены в другое местоположение, или другим образом выведены из строя вместо удаления ресурса.
Вышеприведенное описание объекта изобретения было представлено с целью иллюстрации и описания. Оно не предназначено быть исчерпывающим или для ограничения сущности изобретения раскрытым точным образцом, и другие модификации и изменения могут быть возможны в свете идей, описанных выше. Вариант осуществления был выбран и описан с целью лучшего объяснения принципов изобретения и практического применения, таким образом позволяя специалистам в данной области техники наилучшее использование изобретения в различных вариантах осуществления и различных модификациях, которые подходят для предполагаемого конкретного использования. Предполагается, что прилагаемая формула изобретения подразумевает включение в себя других альтернативных вариантов осуществления, за исключением того, насколько это ограничено известным уровнем техники.