Как небольшие программные исправления исправляют большое программное обеспечение? - PullRequest
9 голосов
/ 28 сентября 2008

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

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

Как на самом деле реализованы эти патчи? Может кто-нибудь указать мне какие-либо ресурсы, которые объясняют, как это работает, или это так же просто, как замена небольших компонентов, таких как связанные библиотеки в приложении?

Вероятно, мне никогда не понадобится выполнять развертывание таким образом, но мне любопытно узнать, как оно работает. Если я правильно понимаю, что исправления могут действительно изменять только части двоичных файлов, возможно ли это сделать в .NET? Если это то, что я хотел бы изучить, так как это структура, с которой я больше всего знаком, и я хотел бы понять, как это работает.

Ответы [ 2 ]

14 голосов
/ 28 сентября 2008

Обычно это реализуется с использованием бинарных алгоритмов сравнения - различие последней выпущенной версии с новым кодом. Если пользователь запускает самую последнюю версию, вам нужно только применить diff. Особенно хорошо работает с программным обеспечением, потому что скомпилированный код обычно очень похож в разных версиях. Конечно, если у пользователя не установлена ​​самая последняя версия, вам все равно придется загрузить все это.


Существует пара реализаций общих алгоритмов двоичных различий: bsdiff и xdelta - хорошие реализации с открытым исходным кодом. Я не могу найти никаких реализаций для .NET, но поскольку рассматриваемые алгоритмы довольно независимы от платформы, их не должно быть слишком сложно портировать, если вы чувствуете себя как проект.

2 голосов
/ 28 сентября 2008

Если вы говорите о внесении исправлений в приложения Windows, то вы должны рассмотреть файлы MSP. Они похожи на .MSI, но только патч и приложение.

Взгляните на Обновление и обновление в документах MSDN.

Что делает .MSP-файлы - это загружает обновленные файлы для установки приложения. Обычно это обновленные файлы DLL и файлы ресурсов, но они могут включать любой файл.

Помимо исправления установленного приложения, также обновляются файлы восстановления, расположенные в C: \ WINDOWS \ Installer. Затем, если пользователь выбирает «Восстановить» из программ «Установка и удаление», также используются обновленные файлы исправлений.

Я думаю, что бинарный метод сравнения, обсуждаемый Джоном Милликиным, должен использоваться в других операционных системах. Хотя вы могли бы заставить его работать в Windows, это было бы несколько чуждо.

...