Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание патчей. [D7, Win2k, WinXP]


Unsigned ©   (2006-01-27 00:21:00) 

Здравствуйте. Разрабатываем софт, основная уeдитория которого – модемщики. Встал вопрос о создании обновлений. В общем как организовать создание патча? Под патчем подразумевается изменение багов и\или добавление функциональности проге а не изменение каких-то собственных ресурсов.


Yanis   (2006-01-28 09:25:00) [1]

ByteKillerРУЛИТ!


OldNaum   (2006-01-28 07:09:00) [2]

лучший патч-мейкер, имхо, PatchFactory 3.xx, именно 3.хх - у него появился отличный контроль версий / компонентов, да и сделан он на славу. только вот ломанного нормальнонигде нету, жаль ;) очень жаль...


Германн   (2006-01-28 02:29:00) [3]


> Я бы сказал что понятие ОБНОВЛЕНИЕ включает в себя понятие
> ПАТЧ.

А я бы (по умолчанию) так не сказал бы! Имхо по моему видению, задачи патча - изменить некоторое количество байт в файле(ах) без перезаписи оного(ых) в целом!


Eraser   (2006-01-27 15:56:00) [4]


> PAVIA ©   (27.01.06 01:53) [7]
>
> Дело не в том чтобы файлы были одного размера. А в том что
> если ты создашь двай файла и у тебя неожиданно пропадет
> байт из середины то заменять дебе придеться пол файла. А
> ведь тогда адресса процедур изменется поэтому и еще пол
> файла(гораздо меньше но во многих местах) переделовать.

Примерно это я имел ввиду под ньюансами, которые хороший патчер учитывает, а адреса процедур и т.д патчеру феолетовы, т.к. ему вообще всё равно что патчить.

> и у тебя неожиданно пропадет байт из середины то заменять
> дебе придеться пол файла

хороший патчер определяет, что в середине отсутствует байт и просто прописывает в свой скрипт "удалить 1 байт там-то". "Спрограммировать" такое - не тривиальная задача, выполнимая.

> Германн ©   (27.01.06 02:19) [9]


> Так вот сначала, имхо, стоит "отделить мух от котлет"! В
> чём главная суть сабжа? И, имхо, не стОит в очередной раз
> поминать диал-ап и т.п. Можно любую конкретную задачу решить
> так, что обновление ПО будет требовать минимальный траффик,
>  имхо. Но в общем случае, на такие вопросы, полностью грамотных
> ответов нет.

Я бы сказал что понятие ОБНОВЛЕНИЕ включает в себя понятие ПАТЧ. А разработать грамотную систему обновлений не так-то просто.... согласен.


Германн   (2006-01-27 02:19:00) [5]


> Unsigned ©   (27.01.06 00:21)  
>
> Здравствуйте. Разрабатываем софт, основная уeдитория которого
> – модемщики. Встал вопрос о создании обновлений. В общем
> как организовать создание патча? Под патчем подразумевается
> изменение багов и\или добавление функциональности проге
> а не изменение каких-то собственных ресурсов.
>


Имхо тут в "винегрет" замешаны две, по идее разные сущности: обновления и патчи. Так вот сначала, имхо, стоит "отделить мух от котлет"! В чём главная суть сабжа? И, имхо, не стОит в очередной раз поминать диал-ап и т.п. Можно любую конкретную задачурешить так, что обновление ПО будет требовать минимальный траффик, имхо. Но в общем случае, на такие вопросы, полностью грамотных ответов нет. По крайней мере пока.


PAVIA   (2006-01-27 02:04:00) [6]

Есть третий вариант Специально сохроняешь адресса процедур. И места от куда их вызывают. Тогда в патчере можно указать изменения в коректной процедуре, а патчер сам вычислит нужные изминения.


PAVIA   (2006-01-27 01:53:00) [7]

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


Eraser   (2006-01-27 01:42:00) [8]


> Unsigned ©   (27.01.06 01:25) [5]

нет, патчер действует не совсем так, как описал PAVIA ©   (27.01.06 01:22) [4].
Конечно патчер патчеру рознь, но по-моему тварение от InqSoft более интеллектуально работает, т.е. умеет определять, именно различия, короче учитывает несколько ньюансов, что делает патчи более компактынми.
Описывать эти ньюансы лень сейчас, уж извините :) и в двух словах не сформулируешь )


Unsigned   (2006-01-27 01:25:00) [9]

2 PAVIA, Eraser.
То есть исходный файл и пропатченый должны быть одного размера? И потом просто сравниваю побайтово 2 файла и пишу в 3 по каким адресам менять байты?


PAVIA   (2006-01-27 01:22:00) [10]

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

Конечно ты можешь создать еще одну секцию кода в файле, но что это тебе даст?


Eraser   (2006-01-27 01:17:00) [11]


> Unsigned ©   (27.01.06 00:54) [2]


> А есть идеи как такие проги устроены?

Ну та прога нечто большее чем просто патчер.

А патчер просто сравнивает 2 файла, различия заности в файл.
<позиция в файле><размер данных><данные> и т.д.


Unsigned   (2006-01-27 00:54:00) [12]


> есть спец. утилиты для создания патче, от InqSoft неплохой
> патчер есть,

Хм,спасибо!Надо будет подумать над этим! А есть идеи как такие проги устроены?


Eraser   (2006-01-27 00:49:00) [13]


> Unsigned ©   (27.01.06 00:21)

есть спец. утилиты для создания патче, от InqSoft неплохой патчер есть, правда это больше для кряка предназначено, но можно и для мирных целей приспособить!


Наверх

Титульная страница Поиск, карта сайта Написать письмо