СПОСОБ И СИСТЕМА ОБНОВЛЕНИЯ ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
METHOD AND SYSTEM FOR SOFTWARE UPDATE

Данное изобретение представляет собой продолжение Международной заявки №РСТ/CN2012/084721, поданной 16 ноября 2012 г., в которой утверждается приоритет Патентной заявки КНР №201110392461.4, поданной 1 декабря 2011 г. в патентное ведомство Китая под названием "Способ и система обновления программного обеспечения", раскрытие которой полностью включено в данный документ путем ссылки.
Область техники, к которой относится изобретения
Данное изобретения относится к области технологий обработки программного обеспечения для устройств обработки данных, в частности, к способу и системе обновления программного обеспечения.
Уровень техники
В настоящее время существует два способа обновления программного обеспечения на устройствах обработки данных (например, компьютеры, смартфоны и т.д.) один из которых является способом обновления на основе установочного пакета, а другой является способом обновления на основе пакета обновления CAB.
Способ обновления на основе установочного пакета очень прост. Необходимо загрузить последнюю версию установочного пакета с сервера и запустить установочный пакет после его загрузки. Установочный пакет обеспечит деинсталляцию старой версии и установку новой.
Недостаток способа обновления на основе установочного пакета заключается в следующем. Имеет место значительная растрата пропускной способности. Пользователю приходится загружать установочный пакет размером несколько мегабайт (Мб) или даже сотен мегабайт, даже при необходимости незначительного изменения функциональных возможностей, при этом загружается большая часть неизменяемых файлов для замены вместе с изменяемыми. Это приводит к значительным неоправданным затратам пропускной способности.
Способ обновления на основе пакета обновления CAB реализуется более целенаправленно. Пакет обновления CAB представляет собой разновидность пакетов, применяемых в операционной системе Microsoft Windows и содержащих файлы для выполнения обновления. В данном способе файлы различий между версией х и версией у упаковывают в соответствии со стандартным форматом (форматом CAB) операционной системы для получения пакета обновления CAB. Программа обновления запускает пакет обновления CAB после его загрузки на локальное устройство пользователя, после чего пакет обновления завершает обновление и обработку файлов в соответствии с внутренней логикой обновления и файлами. Таким образом реализуется обновление версии программного обеспечения.
Однако способ обновления на основе пакета обновления CAB имеет следующий недостаток. С появлением новых версий программного обеспечения будет возрастать объем работы, связанный с созданием пакетов обновления CAB. Например, если текущей версией продукта является версия т, а в операционной среде поддерживается версия не ниже версии n, это значит, что в текущей операционной среде пользователи могут одновременно использовать версии с m по n. Поэтому применение данного способа обновления будет означать необходимость создания пакета обновления CAB для каждой из различных версий с m по n, соответственно, и применения данного способа для каждого обновления. Для создания большого количества версий пакета обновления CAB требуется выполнить большой объем работы, что в свою очередь приводит к значительному увеличению затрат на поддержку обновления программного обеспечения.
Раскрытие изобретения
С учетом вышеизложенного варианты осуществления настоящего изобретения обеспечивают способ и систему обновления программного обеспечения, которые позволят сохранить ресурсы пропускной способности и сократить объем работы, необходимой для обновления программного обеспечения.
Способ обновления программного обеспечения, предлагаемый в вариантах осуществления настоящего изобретения, включает в себя:
передачу клиентом на сервер запроса на обновление программного обеспечения, причем запрос на обновление включает в себя файловую информацию локального обновляемого программного обеспечения;
определение сервером различий между обновляемым программным обеспечением и последней версией программного обеспечения в соответствии с файловой информацией обновляемого программного обеспечения в запросе на обновление, генерирование сервером командной информации по обновлению в соответствии с этими различиями и передачу командной информации по обновления клиенту;
загрузку и обновление клиентом соответствующих файлов и выполнение клиентом соответствующей операции локального обновления согласно команде в командной информации по обновлению, причем генерирование сервером командной информации по обновлению дополнительно включает в себя: поиск сервером информации с описанием функций последней версии программного обеспечения и добавление сервером этой информации с описанием функций к командной информации по обновлению; после получения клиентом командной информации по обновлению и перед загрузкой и обновлением клиентом соответствующего файла и выполнением соответствующей операции локального обновления, способ дополнительно включает в себя: отображение клиентом информации с описанием функций, содержащейся в командной информации по обновлению.
Система обновления программного обеспечения, предлагаемая в вариантах осуществления настоящего изобретения, включает в себя:
модуль обновления, установленный на клиенте и сконфигурированный для передачи на сервер запроса на обновление программного обеспечения, который включает в себя файловую информацию обновляемого программного обеспечения, а также для загрузки и обновления соответствующего файла и выполнения соответствующей операции локального обновления согласно команде в командной информации по обновлению, возвращенной сервером; и
модуль службы обновления, установленный на сервере и сконфигурированный для получения запроса на обновление, переданного модулем обновления на клиенте, определения различий между обновляемым программным обеспечением и последней версией программного обеспечения в соответствии с файловой информацией обновляемого программного обеспечения в запросе на обновление, а также для генерирования командной информации по обновлению в соответствии с различиями и отправки командной информации по обновлению в модуль обновления на клиенте;
причем модуль службы обновления включает в себя: модуль определения информации описания и модуль комбинирования и отправки команд обновления; модуль определения информации описания сконфигурирован для поиска информации с описанием функций последней версии программного обеспечения и для отправки информации с описанием функций в модуль комбинирования и отправки команд обновления; модуль комбинирования и отправки команд обновления сконфигурирован для добавления информации с описанием функций к командной информации по обновлению и для отправки командной информации по обновлению в модуль обновления на клиенте.
По сравнению с известным уровнем техники в данном изобретения сервер определяет различия между обновляемым программным обеспечением и последней версией программного обеспечения в соответствии с файловой информацией обновляемого программного обеспечения, динамически генерирует командную информацию по обновлению в соответствии с различиями программного обеспечения и отправляет эту информацию в модуль обновления на клиенте; модуль обновления выполняет загрузку, обновление и удаление файлов, регистрацию СОМ-компонентов, а также другие операции в соответствии с переданными командами обновления. Таким образом, можно сократить объем информационного обмена между сервером и клиентом, а также сохранить ресурсы пропускной способности. Кроме того, сервер обновления может обеспечивать динамическую организацию команд обновления в соответствии с ситуацией с версиями у пользователя. Это позволит сократить объем работы по обновлению программного обеспечения и в дальнейшем снизить затраты на обслуживание системы обновления программного обеспечения.
Краткое описание чертежей
На фиг. 1 приведена блок-схема, на которой показан способ обновления программного обеспечения в соответствии с вариантом осуществления изобретения.
На фиг. 2 приведена блок-схема, на которой показана операция комбинирования найденных наборов действующих команд для обновления в соответствии с вариантом осуществления изобретения.
На фиг. 3 приведена блок-схема, на которой показан процесс обновления, выполняемый модулем обновления на клиенте в соответствии со способом согласно изобретению.
На фиг. 4 приведена схематическая блок-схема, на которой показана система обновления программного обеспечения в соответствии с вариантом осуществления изобретения.
На фиг. 5 приведена схематическая блок-схема, на которой показан модуль службы обновления на сервере в соответствии с вариантом осуществления изобретения.
На фиг. 6 приведена схематическая блок-схема, на которой показан модуль обновления на клиенте в соответствии с вариантом осуществления изобретения.
Осуществление изобретения
В данном изобретении обеспечивается перенос логики обработки в пакете CAB в модуль обновления на клиенте устройства обработки данных. Сервер определяет различия между обновляемым программным обеспечением и последней версией программного обеспечения в соответствии с файловой информацией обновляемого программного обеспечения, генерирует командную информацию по обновлению в соответствии с различиями программного обеспечения и отправляет эту информацию в модуль обновления на клиенте; модуль обновления выполняет загрузку, обновление и удаление файлов, регистрацию СОМ-компонентов, а также другие операции в соответствии с переданными командами обновления. Согласно известному уровню техники эти операции должны выполняться с помощью пакета CAB. Таким образом, снижается объем информационного взаимодействия между сервером и клиентом, обеспечивается экономия ресурсов пропускной способности и исключается необходимость выполнения ручной работы для создания пакета CAB, при этом сервер обновления обеспечивает динамическую организацию команд обновления в соответствии с ситуацией с версиями у пользователя, в результате чего сокращается объем работы по обновлению программного обеспечения и снижаются эксплуатационные расходы на обслуживание системы обновления программного обеспечения.
Ниже приведено подробное описание настоящего изобретения со ссылками на прилагаемые иллюстрации.
На фиг. 1 приведена блок-схема, на которой показан способ обновления программного обеспечения в соответствии с вариантом осуществления изобретения. Как показано на фиг. 1, способ может включать в себя следующие процессы.
Блок 101: клиент передает на сервер запрос на обновление программного обеспечения (ПО), в котором содержится файловая информация локально обновляемого программного обеспечения.
Блок 102: сервер определяет различия между обновляемым программным обеспечением и последней версией программного обеспечения в соответствии с файловой информацией обновляемого программного обеспечения в запросе на обновление, генерирует командную информацию по обновлению в соответствии с различиями и передает командную информацию по обновлению клиенту.
Блок 103: клиент загружает и обновляет соответствующие файлы, а также выполняет соответствующую операцию локального обновления согласно полученной командной информации по обновлению.
Клиент может быть реализован в виде программы, выполняемой в вычислительной системе, оснащенной центральным процессором (CPU), памятью и операционной системой и обеспечивающей операционную среду для программного обеспечения. Типичным примером вычислительной системы может служить настольный компьютер, портативный компьютер, панельный компьютер или карманное устройство, такое как смартфон с вычислительными возможностями, или роботизированное устройство с вычислительными возможностями и т.д. В рамках данного способа согласно данному изобретению операции на стороне клиента могут выполняться модулем обновления, который соответствует локальному обновляемому программному обеспечению. Модуль обновления может быть реализован в виде программы, выполняемой в процессе, запуск которого не зависит от обновляемого программного обеспечения.
Информация по файлам, содержащаяся в запросе на обновление, передаваемом модулем обновления на клиенте, включает в себя, главным образом, имена файлов и информацию о версии файлов, входящих в состав обновляемого программного обеспечения. Дополнительно она также может включать в себя такие данные, как значение хеш-функции и относительный путь к каждому из файлов. После получения запроса на обновление сервер выполняет поиск последней версии программного обеспечения в соответствии с указанным в запросе именем обновляемого программного обеспечения, сравнивает обновляемое программное обеспечение с последней версией программного обеспечения в соответствии с различными именами файлов и информацией о версии и определяет различия в файлах и версиях. Если различий не обнаружено, необходимость обновления программного обеспечения отсутствует, и сервер возвращает клиенту команду об отсутствии необходимости обновления. После получения этой команды модуль обновления клиента прекращает выполнение операции обновления. При обнаружении различий сервер динамически генерирует командную информацию по обновлению в соответствии с различиями между версиями программного обеспечения.
Способ динамического генерирования сервером командной информации по обновлению в соответствии с различиями между версиями программного обеспечения может включать в себя следующие этапы (с 11 по 13):
11) Поиск недавно добавленных и измененных файлов в последней версии программного обеспечения в соответствии с разницей между файлами и использование списка недавно добавленных и измененных файлов для создания списка обновляемых файлов.
Список обновляемых файлов представляет собой список файлов, подлежащих добавлению, изменению или замене при обновлении программного обеспечения с текущей версии в запросе на обновление до последней версии. Каждый файл включают в себя информацию с описанием файла, например, имя файла, относительный путь, размер файла, контрольное число MD5 и т.д.
В данном случае сервер может обеспечивать ведение таблицы отображения по последней версии всех файлов обновляемого программного обеспечения. Пример такой таблицы отображения приведен в табл. 1.
Как показано в табл. 1, в таблице отображения содержится список последних версий всех файлов обновляемого программного обеспечения. В каждом блоке информации списка файлов содержится по меньшей мере имя файла, путь загрузки и относительный путь. Согласно приведенной выше табл. 1, поскольку сервер хранит все файлы одного программного обеспечения в одном общем каталоге, соответствующем программному обеспечению, причем относительные пути к каталогу совершенно такие же, как и относительные пути к каталогу установки программного обеспечения на клиенте, относительные пути, приведенные в табл. 1, могут соответствовать путям загрузки. Необходимо просто добавить путь к общему каталогу программного обеспечения, расположенному на сервере, перед относительными путями, поскольку в табл. 1 обеспечивается ведение только относительных путей, а информацию о пути загрузки можно получить путем добавления адреса общего каталога к относительным путям. Конечно, в табл. 1 может также содержаться информация об абсолютном пути загрузки, при этом клиент сможет загружать соответствующие файлы согласно этой информации без добавления каких-либо адресов каталогов. Кроме того, в списке файлов в таблице отображения содержится информация о размере файла, контрольное число MD5 (в связи с ограниченной шириной в табл. 1 не показано контрольное число MD5) и т.д., а также информация о последней измененной версии.
После получения запроса на обновление сервер выполняет фильтрацию вышеупомянутую таблицу отображения в соответствии с текущим списком файлов обновляемого программного обеспечения в запросе и упорядочивает список обновляемых файлов, оставляя в нем недавно добавленные и измененные файлы из последней версии программного обеспечения. Недавно добавленные файлы - это файлы обновляемого программного обеспечения, отсутствующие на клиенте. Измененные файлы - это файлы из последней версии программного обеспечения, имена которых совпадают с именами файлов обновляемого программного обеспечения на клиенте, но информация о версии которых отличается от подобной информации по файлам обновляемого программного обеспечения на клиенте, т.е. файлы с измененным содержимым. При этом необходимо изменить в обновляемом программном обеспечении на клиенте файлы с теми же именами, как и у файлов из последней версии программного обеспечения.
12) Поиск наборов действующих команд для всего программного обеспечения, версия которого является более поздней, чем версия обновляемого программного обеспечения в запросе на обновление, в соответствии с разницей в версиях, а также комбинирование найденных наборов действующих команд.
В данном изобретении обновление каждой версии программного обеспечения может сопровождаться набором действующих команд. Для однократного обновления версии могут использовать несколько таких действующих команд, окончательно компонуемых в виде набора. Каждая действующая команда в наборе действующих команд может включать в себя имя действующей команды, которое может быть идентифицировано локальным клиентом, относительный путь и имя файла целевого файла операции, соответствующей команде, а также дополнительно может включать в себя имя вспомогательной программы для обработки целевого файла. В табл. 2 приведен пример набора действующих команд. Для облегчения понимания в табл. 2 также приведено назначение каждой действующей команды.
Для обновления каждой из версий программного обеспечения на сервере может иметься отдельный набор действующих команд. Каждый набор действующих команд имеет версию. После получения запроса на обновление сервер выполняет поиск наборов действующих команд для всего программного обеспечения, каждый из которых относится к более поздней версии, чем версия обновляемого программного обеспечения в запросе на обновление. В итоге сервер возвращает в модуль обновления набор действующих команд, полученный путем комбинирования всех найденных наборов действующих команд. На фиг. 2 приведена блок-схема, на которой показана операция комбинирования найденных наборов действующих команд в соответствии с данным изобретением. Согласно схеме на фиг. 2 предположим, что наборами действующих команд, соответствующими более поздним версиям, чем версия в запросе на обновление, являются набор 201 действующих команд версии 20467 и набор 202 действующих команд версии 20532. При объединении этих двух наборов действующих команд получается итоговый набор 203 действующих команд.
13) Использование списка обновляемых файлов и комбинированного набора действующих команд в качестве командной информации по обновлению.
В заключение командная информация по обновлению организуется сервером в виде файла XML для получения таблицы данных, которая затем передается в модуль обновления на клиенте. В таблице данных XML в целом содержится список обновляемых файлов, набор действующих команд и некоторая дополнительная информация. Например, сервер также может выполнить поиск информации с описанием функций последней версии обновляемого программного обеспечения и добавить ее в командную информацию по обновлению. Информация с описанием функций позволяет продемонстрировать новые функции, предоставляемые пользователю в результате обновления, и включает в себя текстовое описание и изображения для предварительного обзора, чтобы пользователь мог составить общее представление об обновлении перед его выполнением.
В качестве примера содержимого типичной таблицы с командами по обновлению в формате XML можно привести следующий код XML:
В системе обновления согласно данному изобретению модуль обновления, установленный на клиенте, в целом выполняет следующие операции: передача на сервер запроса на обновление программного обеспечения с информацией о версии обновляемого локального программного обеспечения, загрузка файлов и обновление соответствующих локальных файлов на основе командной информации по обновлению, возвращаемой сервером, и выполнение соответствующих операций локального обновления согласно командам обновления.
На фиг. 3 приведена блок-схема, на которой показан процесс обновления, выполняемый модулем обновления (МО) на клиенте в соответствии со способом согласно данному изобретению. Как показано на фиг. 3, процесс может включать в себя следующие этапы.
Блок 301: модуль обновления на клиенте взаимодействует с сервером для определения необходимости обновления этого модуля, а именно чтобы определить наличие на сервере более новой версии модуля обновления, чем версия локального модуля обновления. При наличии на сервере более новой версии модуля обновления модуль обновления на клиенте загружает файлы новой версии, заменяет файлы исходного локального модуля обновления и перезапускает новую версию для выполнения следующего блока 302. В противном случае непосредственно выполняют блок 302.
Благодаря простоте модуля обновления и тому, что в его состав входит не более 1 или 2 файлов, процесс обновления всего этого модуля реализуется очень просто и быстро. Блок 301 является необязательным и может быть опущен с переходом непосредственно к выполнению блока 302.
Блок 302: модуль обновления взаимодействует с сервером для определения необходимости обновления программного обеспечения. А именно модуль обновления передает на сервер запрос на обновление программного обеспечения, в котором содержится информация о локальных файлах обновляемого программного обеспечения. В файловую информацию входят данные об имени и версии каждого из файлов, входящих в состав обновляемого программного обеспечения, а также дополнительно может входить такая информация, как значение хеш-функции и относительный путь к каждому из файлов. Сервер сравнивает обновляемое программное обеспечение с последней версией программного обеспечения в соответствии с информацией об именах и версиях файлов, чтобы определить различия в файлах и версиях. В случае обнаружения различий, согласно вышеописанному способу сервер динамически генерирует командную информацию по обновлению в соответствии с различиями в файлах и различиями версиях и передает эту информацию в модуль обновления на клиенте. После этого выполняют блок 303. Если различия в программном обеспечении не обнаружены, сервер уведомляет модуль обновления на клиенте об ошибке обновления, после чего выполнение текущего процесса прекращается.
Блок 303: командная информация по обновлению включает в себя список обновляемых файлов, причем в каждом блоке информации этого списка содержится имя файла, информация о пути загрузки и информация об относительном пути так, чтобы модуль обновления мог загрузить соответствующие файлы согласно информация о пути загрузки файлов в списке обновляемых файлов.
Кроме того, если в командной информации по обновлению содержится описание функций новой версии программного обеспечения, то после получения клиентом командной информации по обновлению и перед выполнением блока 303 способ также может включать в себя отображение информации с описанием функций, содержащейся в командной информации по обновлению, чтобы пользователь мог составить общее представление об обновлении перед его выполнением.
Блок 304: в соответствии с информацией об относительном пути в списке обновляемых файлов, модуль обновления может обновлять загруженные файлы в каталоге установки локального обновляемого программного обеспечения по соответствующим им относительным путям. Блок 304 можно также рассматривать как блок, в котором производится комбинирование старых и новых версий каждого из файлов с различиями, а именно замена в каталоге установки обновляемого программного обеспечения файлов старой версии загруженными новыми файлами. К файлам с различиями относятся измененные файлы и/или недавно добавленные файлы.
В большинстве случаев заменяемые целевые файлы могут оказаться недоступными для изменения или замены (может выполняться их сканирование антивирусной программой или они могут использоваться определенным процессом), поэтому для таких случаев необходимо предусмотреть механизмы всестороннего обеспечения эксплуатационной безопасности. Поскольку программные файлы обновляемого программного обеспечения обычно взаимозависимы, если не удается заменить один файл, то с большой долей вероятности станет невозможным функционирование всей программы. С учетом этого в данном изобретении реализуются два механизма обеспечения эксплуатационной безопасности.
А) Перед выполнением комбинирования файлов (а именно файлов обновления) определяют, выполняется ли в настоящий момент обновляемое программное обеспечение. Если оно выполняется, для пользователя выводят запрос о необходимости закрытия программного обеспечения. После закрытия программного обеспечения выполняют обновление соответствующих файлов. В противном случае обновление соответствующих файлов выполняют непосредственно. В данном изобретении модуль обновления и обновляемое программное обеспечение выполняются в двух процессах, поэтому операция закрытия обновляемого программного обеспечения не повлияет на работу выполняемого модуля обновления.
Б) Перед комбинированием файлов выполняют резервное копирование исходных обновляемых локальных файлов, а именно резервное копирование заменяемых файлов старой версии во временный каталог, после чего выполняют обновление файлов. Если в процессе обновления обнаруживается, что один из файлов обновить не удалось, определяют необходимость успешности обновления этого файла. Необходимость успешности обновления файла означает, что этот файл является обязательным для нормальной работы программы, при этом необходимо восстановить обновленные файлы с использованием резервных копий, чтобы гарантировать, что "хотя обновление прошло неуспешно, но работоспособность старой версии сохранена". Если успешность замены файла не является обязательной, последний загруженный файл, соответствующий этому файлу, может быть зарегистрирован в службе замены перезапуска операционной системы (например, ОС Windows), чтобы обеспечить возможность его обновления посредством запуска службы замены перезапуска системы. Необходимость успешности замены файла можно определить по полю "ключевой файл" в списке обновляемых файлов. В случае, когда сервер генерирует список обновляемых файлов, в информацию с описанием по каждому файлу необходимо включить поле "ключевой файл", чтобы указать, является ли данный файл ключевым, т.е. необходима ли успешность его замены. Например, большая часть базовых компонентов является обязательной для выполнения программы, поэтому эти компоненты можно рассматривать как ключевые файлы, но что касается пакетов расширения ресурсов и дополнительных программных модулей, они не оказывают серьезного влияния на нормальную работу системы в целом, поэтому могут не рассматриваться в качестве ключевых файлов. Если обновить файл не удалось, клиент проверяет поле файла "ключевой файл". Если файл является ключевым, клиент определяет обязательность его успешной замены. В противном случае успешность обновления файла является необязательной.
Блок 305: после завершения комбинирования файлов выполняют соответствующие операции локального обновления согласно набору действующих команд в командной информации по обновлению.
Каждая действующая команда в наборе действующих команд включает в себя: имя действующей команды, которое может быть идентифицировано локальным клиентом, относительный путь и имя целевого файла операции, соответствующей команде. Для каждой действующей команды модуль обновления может найти целевой файл с именем в действующей команде, по относительному пути к каталогу установки обновляемого программного обеспечения и выполнить над целевым файлом операцию, соответствующую имени действующей команды, такую как регистрация компонента СОМ в списке файлов, удаление целевого файла, обработка целевого файла с применением программы, указанной в действующей команде, и т.д.
На практике для непосредственной передачи целого файла может потребоваться значительная пропускная способность. Даже при незначительном изменении файла клиенту может потребоваться загрузка целого файла размером несколько мегабайт, что может привести к значительным затратам времени и пропускной способности сети, поэтому в данном изобретении также предлагается вариант его осуществления, который может обеспечить возможность экономии полосы пропускания и времени на загрузку файлов.
В варианте осуществления изобретения файловая информация в запросе на обновление, передаваемом клиентом на сервер, также включает в себя значение хеш-функции для каждого файла. После обнаружения измененного файла в последней версии программного обеспечения сервер может найти соответствующее значение хеш-функции в запросе на обновление в соответствии с именем измененного файла и хранящийся на сервере исходный файл с идентичным значением хеш-функции в соответствии с найденным значением хеш-функции, выполнить двоичное сравнение исходного файла и последней версии файла, имя которого идентично исходному файлу, и сгенерировать двоичный файл различий, заменить информацию о пути загрузки файла, имя которого идентично двоичному файлу различий и содержится в списке обновляемых файлов, информацией о пути загрузки двоичного файла различий. Т.е. в информации по обновляемому файлу может содержаться имя файла, путь загрузки двоичного файла различий, относительный путь и т.д.
Двоичный файл различий обычно называют файлом diff. Он имеет небольшой размер и описывает двоичные операции добавления, удаления или изменения, которые следует выполнить со старой версией файла для генерации новой. Например, удалить 2 байта данных в х, изменить 3 байта данных в у и т.д. Для выполнения двоичного сравнения исходного файла и последней версии файла, имя которого идентично исходному файлу, и генерирования двоичного файла различий можно применять традиционные технические решения. Например, в ОС Linux для генерирования двоичного файла различий по двум файлам может применяться действующая команда diff. Кроме того, поскольку для генерирования файла diff на стороне сервера требуется много времени, можно обеспечить сохранение сгенерированного файла diff и значения хеш-функции исходного файла. Тогда при получении запроса на обновление в следующий раз соответствующий файл diff можно будет найти непосредственно по значению хеш-функции файла, а путь загрузки файла diff можно будет заменить непосредственно в списке обновляемых файлов без повторного генерирования файла diff.
После загрузки соответствующего двоичного файла различий согласно информации о пути загрузки в списке обновляемых файлов, клиент, согласно соответствующей информации об относительном пути, дополнительно комбинирует двоичный файл различий и файл, имеющий идентичное этому двоичному файлу имя и расположенный по относительному пути к каталогу установки обновляемого локального программного обеспечения, чтобы сгенерировать единый новый файл. Для комбинирования двоичного файла различий можно использовать традиционные технические решения, поэтому дальнейшая информация по ним здесь не приводится.
В вышеприведенном варианте осуществления для файла, в котором изменяется только содержимое, клиент может загружать только соответствующий двоичный файл различий. Небольшой размер этого файла позволяет сэкономить ресурс пропускной способности и время на загрузку.
В соответствии с вышеупомянутым способом в данном изобретении также раскрывается система для обновления программного обеспечения, которую можно использовать для реализации способа, предлагаемого настоящим раскрытием. На фиг. 4 приведена блок-схема, на которой показана система обновления программного обеспечения в соответствии с вариантом осуществления изобретения. Как показано на фиг. 4, система обновления программного обеспечения включает в себя два следующих модуля.
Модуль обновления 401, установленный на клиенте, предназначенный для передачи на сервер запроса на обновление программного обеспечения с файловой информацией обновляемого локального программного обеспечения, загрузки и обновления соответствующих файлов, и выполнения соответствующих операций локального обновления согласно командам в командной информации по обновлению, возвращаемой сервером.
Модуль службы обновления 402, установленный на сервере, предназначенный для получения запроса на обновление, передаваемого модулем обновления 401 на клиенте, и определения различий между обновляемым программным обеспечением и последней версией программного обеспечения в соответствии с файловой информацией обновляемого программного обеспечения в запросе на обновление, а также для генерирования командной информации по обновлению в соответствии с различиями программного обеспечения и отправки этой информации в модуль обновления 401 на клиенте.
На фиг. 5 приведена блок-схема, на которой показан модуль службы обновления на сервере в соответствии с вариантом осуществления изобретения. Согласно фиг. 5 в данном варианте осуществления модуль службы обновления 402 на стороне сервера включает в себя следующие модули.
Модуль 421 определения различий в версиях, который сконфигурирован для сравнения обновляемого программного обеспечения с последней версией программного обеспечения в соответствии с информацией об имени и версии каждого файла для определения различий в файлах и версиях.
Модуль 422 определения обновляемых файлов, который сконфигурирован для поиска недавно добавленных и измененных файлов в последней версии программного обеспечения в соответствии с разницей между файлами и для организации списочной информации недавно добавленных файлов и измененных файлов для образования списочной информации обновляемых файлов. Списочная информация обновляемых файлов по меньшей мере включает в себя информацию о пути загрузки, информацию об относительном пути к каждому обновляемому файлу и т.д.
Модуль 423 определения действующих команд, который сконфигурирован для поиска наборов действующих команд для всего программного обеспечения, каждый из которых относится к более поздней версии, чем версия обновляемого программного обеспечения в запросе на обновление, и комбинирования найденных наборов действующих команд. Каждая действующая команда в наборе действующих команд по меньшей мере включает в себя: имя действующей команды, которое может быть идентифицировано локальным клиентом, относительный путь и имя файла целевого файла операции, соответствующей команде.
Модуль 424 комбинирования и отправки команд обновления, который сконфигурирован для использования списка обновляемых файлов и комбинированного набора действующих команд в качестве командной информации по обновлению и отправки командной информации по обновлению в модуль обновления, инициировавший запрос на обновление.
Кроме того, модуль обновления 402 может включать в себя следующее.
Модуль 425 определения информации описания, сконфигурированный для поиска информации с описанием функций последней версии обновляемого программного обеспечения и ее отправки в модуль 424 комбинирования и отправки команд обновления. Модуль 424 комбинирования и отправки команд обновления дополнительно может добавлять информацию с описанием функций в командную информацию по обновлению и отправлять эту информацию в модуль обновления на клиенте, инициировавший запрос на обновление.
На фиг. 6 приведена блок-схема, на которой показан модуль обновления на клиенте в соответствии с вариантом осуществления изобретения. Согласно фиг. 6 в данном варианте осуществления модуль обновления 402 на клиенте включает в себя в частности следующие модули:
Модуль самообновления 411, сконфигурированный для взаимодействия с сервером перед передачей запроса на обновление программного обеспечения для проверки необходимости обновления модуля 401 и, если такая необходимость существует, загрузки файлов новой версии модуля обновления и замены исходных файлов модуля обновления файлами новой версии. Если необходимость обновления модуля 401 отсутствует, выполняют передачу запроса на обновление программного обеспечения.
Модуль 412 для обработки запросов на обновление, сконфигурированный для передачи на сервер запроса на обновление программного обеспечения, в котором содержится информация о версии локального обновляемого программного обеспечения и получения командной информации по обновлению, возвращаемой сервером.
Модуль 413 для загрузки файлов, сконфигурированный для загрузки соответствующих файлов в соответствии с путями загрузки в списочной информации обновляемых файлов в командной информации по обновлению.
Модуль 414 комбинирования файлов с различиями, сконфигурированный для обновления загруженных файлов в каталоге установки локального обновляемого программного обеспечения по соответствующим относительным путям согласно списочной информации обновляемых файлов.
Модуль 415 для выполнения операций, сконфигурированный для, для каждой действующей команды в командной информации по обновлению, поиска целевого файла с именем файла в действующей команде по относительному пути к каталогу установки обновляемого программного обеспечения и выполнения действующей команды над целевым файлом.
В варианте осуществления изобретения модуль 414 комбинирования файлов с различиями дополнительно должен реализовывать механизм обеспечения эксплуатационной безопасности, т.е. модуль 414 комбинирования файлов с различиями может дополнительно включать в себя следующее.
Модуль уведомления о необходимости закрытия программы, сконфигурированный для, перед обновлением соответствующих файлов, определения того, выполняется ли в настоящий момент обновляемое программное обеспечение, и, если оно выполняется, вывода для пользователя запроса о необходимости закрытия этого программного обеспечения. После закрытия программного обеспечения будет выполнено обновление соответствующих файлов. В противном случае обновление соответствующих файлов выполняется непосредственно.
Модуль резервного копирования, сконфигурированный для резервного копирования исходных обновляемых локальных файлов перед обновлением соответствующих файлов; если файл не обновлен успешно, определения необходимости успешного обновления этого файла; если этот файл должен быть успешно обновлен, использования резервных копий файлов для восстановления всех обновляемых файлов; в противном же случае, регистрации последнего загруженного файла, соответствующего этому файлу, в службе замены перезапуска операционной системы и запуска этой службы перезапуске системы для обновления файла.
В другом варианте осуществления изобретения для дополнительной экономии ресурсов пропускной способности и времени, затрачиваемого на загрузку файлов, модуль 422 определения обновляемых файлов может дополнительно включать в себя модуль генерирования двоичных файлов различий. Этот модуль конфигурируют для, после обнаружения модулем 422 измененного файла в последней версии программного обеспечения, поиска соответствующего значения хеш-функции в запросе на обновление в соответствии с именем файла для измененного файла и поиска хранящегося на сервере исходного файла с идентичным значением хеш-функции в соответствии с этим значением хеш-функции, выполнения двоичного сравнения исходного файла и последней версии файла, который имеет такое же имя файла, что и исходный файл, генерирования двоичного файла различий и замены информации о пути загрузки файла с тем же именем, что и двоичный файл различий, информацией о пути загрузки двоичного файла различий в списке обновляемых файлов.
Соответственно, модуль 414 комбинирования файлов с различиями, расположенный на клиенте, может дополнительно включать в себя модуль комбинирования двоичных файлов различий, сконфигурированный для комбинирования двоичного файла различий и файла, имеющего идентичное двоичному файлу имя и расположенного по относительному пути к каталогу установки обновляемого локального программного обеспечения после загрузки соответствующего двоичного файла различий.
В данном изобретении также обеспечивается носитель информации, используемый для хранения команд, которые управляют машиной для выполнения способа обновления программного обеспечения как изложено выше. В частности можно обеспечить систему или устройство, оборудованное носителем информации, при этом среда для хранения информации обеспечивает хранение программного кода программного обеспечения для реализации функций, указанных в любом из вышеописанных вариантов осуществления изобретения. При этом компьютер (или CPU, или микропроцессорное устройство (MPU)) системы или устройства должен иметь возможность считывания и выполнения управляющей программы, хранящейся на носителе.
Поскольку в таком случае программный код, считываемый с носителя информации, может обеспечить реализацию функций, указанных в любом из вышеописанных вариантов осуществления изобретения, программный код и среда для хранения информации являются частью данного изобретения.
Варианты выполнения носителей информации, обеспечивающих хранение программных кодов, включают в себя накопитель на гибких магнитных дисках, накопитель на жестких магнитных дисках, магнитооптический диск, компакт-диск (CD-ROM, CD-R, CD-RW, DVD-ROM, DVD-RAM, DVD-RW, DVD+RW), накопитель на магнитной ленте, карту энергонезависимой памяти и постоянное запоминающее устройство (ROM). Опционально программный код может быть загружен с сервера через коммуникационную сеть.
Кроме того, следует понимать, что для реализации функций любого из вышеописанных вариантов осуществления изобретения, выполнение части или всех практических операций может обеспечиваться не только выполнением программного кода, считанного компьютером, но и операционной системой на компьютере в соответствии с командами на основе программного кода.
Также следует понимать, что посредством записи считанного с носителя информации программного кода в память на плате расширения компьютера или в память подключенного к компьютеру блока расширения, основанные на программном коде команды могут управлять работой CPU на плате расширения компьютера или в блоке расширения для выполнения части или всех операций для реализации функций любого из вышеописанных вариантов осуществления изобретения.
В вышеизложенном описании приведены только предпочтительные варианты осуществления данного изобретения, при этом описание не ограничивает объем правовой охраны изобретения. Подразумевается, что любые изменения, равноценные замены или усовершенствования, произведенные без отступления от сущности и принципов данного изобретения, входят в объем правовой охраны данного изобретения.