Vsalat
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Recursive Patch Maker (RPM) - утилита предназначенная для создания бинарных патчей. С ее помощью вы сможете с легкостью сопоставить две версии файлов и записать разницу между ними для последующего обновления. Данная утилита является полностью консольной и как понятно из заголовка основана на другой утилите под названием xDelta. Естественно существуют программы для осуществления операции по созданию патча из директории, однако 99% из них имеют убогий и неудобный интерфейс с нечитабельными настройками. Ко всему прочему добрая часть из них не предоставляет возможности собрать свой инсталлятор, что в свою очередь ведет к ограничению вариативности.
Чем же так хорош RPM? 1. Основан на проверенных утилитах xdelta, bincomp, freearc. 2. Создает и применяет рекурсивные «заплатки». 3. Простая, понятная и минималистичная настройка параметров. 4. Последующее использование с Inno компилятором.
Структура приложения - modules -- modules\arc.exe (модуль freearc, предназначен для архивации) -- modules\arc.sfx (расширение freearc, для создания sfx архивов) -- modules\bincomp.exe (утиль для проверки различий между файлами) -- modules\xdelta3.exe (последняя стабильная версия 3.0.11) - builder.exe - config.ini (конфигурационный файл для билдера) - patcher.exe
Использование билдера Ниже представлена дефолтная конфигурация для билдера. Разберем ее параметры по порядку. [COMPARING] Original — Папка с исходными/оригинальными файлами Modified — Папка с измененными файлами, которые должны быть получены после применения патча [FLTERS] excludefolders — Папки которые будут исключены из списка патчей ["FolderName", "FolderName\Subfolder"] excludefiles — Файлы которые будут исключены из списка патча ["FileName.exe", "*Name", "Name*", "*Name*"] excludeexts — Файлы с расширениями которые будут исключены из списка патча ["*.dll", "*.txt"] [FILENAMES] Filelist — Название файла с списком путей модифицированной папки (это просто текстовый файл. имя и расширение может быть абсолютно любыми) Missedfolder — Название директории в которой будут храниться отсутствующие файлы из мод. папки Patchfolder — Название директории в которой будут храниться созданные файлы патчей [COMPRESSION] Compressing — Параметр отвечающий за вкл или откл компрессии с помощью Freearc Arcpass — Пароль архива (пустой по дефолту) Код: ; Comparing folders [COMPARING] original=C:\Windows modified=D:\Windows ; Add `*` as any symbol and any length. Leave empty [] if you dont need any rules. ; To exclude folders or subfolders ["FolderName", "FolderName\Subfolder"] ; To exclude files by full name ["FileName.exe"], by a part of name ["*Name", "Name*", "*Name*"] ; To exclude files with specific extension ["*.dll", "*.txt"] [FILTERS] excludefolders=[] excludefiles=[] excludeexts=[] ; Update folder, Patch folder, Files list [FILENAMES] missedfolder=rpm_update patchfolder=rpm_patch fileslist=fileslist.info ; Enable/Disable archiving [0|1] ; You cant use special chars in password(!@#$%^&*()+{}[]><?|\/:; etc.) [COMPRESSION] compressing=0 arcpass= |
Использование патчера В следующем листинге перечислены доступные на данный момент внешние передаваемые параметры. -t — Заголовок отображаемый в консоли и последующих блоках внутри скрипта * -n — Название директории в которой будет производится применение патчей -p — Название директории в которую будет распаковываться архив с патчами -u — Название директории в которую будет распаковываться архив с обновлениями -l — Название файла с списком путей -psw — Пароль, если был задан в конфиге Использование кириллических символов возможно, но нежелательно Дефисы передаваемые в параметрах будут заменены на пробелы ( -t My-Patch-Name => -t My Patch Name ) Параметры содержащие пробельные символы заключайте в кавычки ( "My Application Title" ) -t [title] (default: Recursive Patch Maker) -n [patched folder name] (default: rpm_new) -p [patch folder name] (default: rpm_patch) -u [update folder name] (default: rpm_update) -l [file with pathes list] (default: fileslist.info) -psw [archive password] (default: null)
Скрипт Inno Setup В следующем листинге представлен самый простой скрипт для Inno, позволяющий создать установочный визард. В дефайнах для удобства заданы переменные, которые изменяются в соответствии с создаваемым патчем. Для их работы обязательно должен быть включен препроцессор. Все они разбиты на отдельные сорсы, однако возможно использование и из директории (Source: {#rpmPath}{#updFolder }*;) appID — ID созданного ранее в Inno Setup визарда (опционально) appName — Название приложения version — Версия rpmPath — Путь до папки с утилитой RPM updFolder — Название папки с патчем, созданной RPM patcherName — Название исполняемого файла (по умолчанию patcher.exe) updName — Название exe архива с обновлением patchName — Название exe архива с патчем fileListName — Название файла с списком путей parameters — Параметры для RPM патчера Код: #define appID '36E6CAF2-C966-44E3-A0FB-339CC862C640' #define appName 'Demo Patcher' #define version '0.0.1' #define rpmPath 'С:\RPM [build 1.0.0]' #define updFolder '20151107.53638' #define patcherName 'patcher' #define updName 'rpm_update' #define patchName 'rpm_patch' #define fileListName 'fileslist.info' #define parameters '-t "Заголовок"' [Setup] AppID={{{#appID}} AppName={#appName} - Update {#version} AppVersion={#version} DefaultDirName={pf}\{#appName} OutputDir=D:\ OutputBaseFilename=-01-{#appName}-{#version} SolidCompression=true UsePreviousAppDir=true AppendDefaultDirName=false DirExistsWarning=false Uninstallable=false Compression=lzma2/Ultra64 InternalCompressLevel=Ultra64 [Files] Source: {#rpmPath}\{#patcherName}.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall; Source: {#rpmPath}\modules\xdelta3.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall; Source: {#rpmPath}\{#updFolder}\{#updName}.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall; Source: {#rpmPath}\{#updFolder}\{#patchName}.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall; Source: {#rpmPath}\{#updFolder}\{#fileListName}; DestDir: {app}; Flags: ignoreversion deleteafterinstall; [Run] Filename: {app}\{#patcherName}.exe; Parameters: "{#parameters}"; WorkingDir: {app}; StatusMsg: Updating..; |
Скачать: v1.0.0 — https://sourceforge.net/projects/xdeltapatchmaker
| Всего записей: 10 | Зарегистр. 02-08-2011 | Отправлено: 05:35 09-08-2016 | Исправлено: Maz, 17:08 08-02-2025 |
|