Возможно, вы можете использовать алгоритм цукини , который является механизмом обновления, который используется в Google Chrome . Это действительно легко использовать и применять в вашей инфраструктуре. В настоящее время это работает только для операционных систем Windows. Пользователи Chrome для Windows получают обновления небольшими порциями, в отличие от пользователей Mac и Linux, которые все еще получают порции в общем размере.
Вы можете найти исходный код здесь в репозитории Chromium SVN. Это алгоритм сжатия, позволяющий применять небольшие обновления к Google Chrome вместо постоянной отправки всего дистрибутива. Вместо того, чтобы выдавать пользователю целые 10 МБ, вы можете указать только разницу изменений.
Более подробную информацию о том, как работает Courgette, можно найти здесь и официальном сообщении в блоге об этом здесь .
Работает так:
server:
hint = make_hint(original, update)
guess = make_guess(original, hint)
diff = bsdiff(concat(original, guess), update)
transmit hint, diff
client
receive hint, diff
guess = make_guess(original, hint)
update = bspatch(concat(original, guess), diff)
Когда вы извлекаете исходный код, вы можете скомпилировать его как исполняемый файл (щелкните правой кнопкой мыши по компиляции в Visual Studio) и использовать приложение в этой форме для тестирования:
Использование:
courgette -dis <executable_file> <binary_assembly_file>
courgette -asm <binary_assembly_file> <executable_file>
courgette -disadj <executable_file> <reference> <binary_assembly_file>
courgette -gen <v1> <v2> <patch>
courgette -apply <v1> <patch> <v2>
Или вы можете включить это в свое приложение и делать обновления оттуда. Вы можете имитировать среду автоматического обновления Omaha, создав собственную службу, которую вы периодически проверяете и запускаете Courgette.