Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup XDELTA Patch Maker

Модерирует : gyra, Maz

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11

Открыть новую тему     Написать ответ в эту тему

usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Inno Setup XDELTA Patch Maker



What is it?
This is a FREE Patch Maker for your apps, games or some another products with using Inno Setup runtimes and techniques based on powerfull XDELTA engine.
(Similar software: PatchWise Free, Clickteam Patch Maker, Visual Patch, Patch Factory).
 
Что это?
Это бесплатный генератор патчей-обновлений для Ваших приложений, игр и других продуктов, с использованием технологий и компонентов Inno Setup, основанных на мощном движке XDELTA.
(Подобный софт: PatchWise Free, Clickteam Patch Maker, Visual Patch, Patch Factory).
 
Текущая версия: 2.6.4.3
Download latest full build

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 15:19 19-02-2015 | Исправлено: AlexALSP, 09:06 24-11-2023
brduakh



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usermode
хотелось бы, пропатчивать hosts, точнее добавлять запись в файл, но без смены атрибутов

Всего записей: 4515 | Зарегистр. 08-09-2012 | Отправлено: 20:49 20-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
brduakh
leonidz
это все реализуемо посредством кода - по нему объяснять особо не буду.
 
чтобы выполнить патч в разные директории нужно делать дополнительные silent патчи, которые запускать нужно после основного пропатчивания, в секции After Patching. В данном билде код в silent патче разместить нельзя, это баг о котором говорилось выше.
1. Запускается основной патч.
2. Он запускает тихий, который патчит по другому пути, указанному в командной строке.
3. Если это еще не все, первый тихий отрабатывает и запускает второй тихий и т.п.
для этого в зависимости от размещения external files, нужно указывать код inno или batch кому как удобнее.
 
примерно для Inno
var res:Integer;
 
Exec(ExpandConstant('{tmp}\ExternalFiles\SilentPatch1.exe'), '/MY_PARAM="ExpandConstant('{sys}')"', ExpandConstant('{tmp}\ExternalFiles'), SW_HIDE, ewWaitUntilTerminated, res);
 
 
хост также патчится кодом Inno, увы и ах, нужно подучить паскаль самостоятельно, например:
SaveStringToFile(ExpandConstant('{sys}')+'\drivers\etc\host', #13 + 'требуемая строка', True);
 
поэтому раздел с кодом и реализован, чтобы самостоятельно дополнить функционал.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 22:09 20-05-2015 | Исправлено: usermode, 22:29 20-05-2015
leonidz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Для обычного юзера, такого как я, это очень уж проблематично.

Всего записей: 1226 | Зарегистр. 16-10-2005 | Отправлено: 00:08 21-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
leonidz
Цитата:
Для обычного юзера, такого как я, это очень уж проблематично.  
ну что поделать, эти действия вполне можно реализовать из кода, да, может это и не совсем удобно, но выносить почти все действия Inno в GUI я тоже не могу. Если нужно что-то сделать дополнительно, то можно помочь в реализации. Конечно, что-то навороченное не получится, но простые дополнительные действия и проверки - вполне.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 01:15 21-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[Release 1.9]
 
 - Fixed bug with using external files and custom code in silent mode.
 - Fixed bug with stopping music file if on it playing the skin file has been selected.
 - Fixed playing MOD files parameters.
 - Changed default settings.
 - Changed language files.
 - Patch skin preview GUI is changed to used patch template.
 - Removed propertie ReadOnly from paths for add it also manually.
 - Added [O] button for dir opening and [B] button for files and dirs browsing.
 - Added additional freeware patching engine JojoDiff - this engine in some cases generate much smaller diff files then xdelta. Now your can choose default engine JojoDiff or XDELTA.
 - Patch appling procedure optimization.
 - Added option to Patch "Verify hash" - if checked then after file was patched is checked it MD5 hash with required valid MD5 of modified file.
 - Minor tweaks, fixed some issues.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 16:54 22-05-2015
Xom9I4oK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usermode
А можно попросить Вас скинуть рабочий проект(профиль) сайлент патча (во время установки будет лежать рядом или на один уровень выше с ключевым файлом, сам ключевой файл является тем файлом который надо пропатчить) с запакованными внутри внешними данными. Я уже скидывал до этого свой проект и у меня воз и ныне там - не работает (1 раз как-то сработало, но все равно внешние данные не распаковались).

Всего записей: 506 | Зарегистр. 01-04-2005 | Отправлено: 19:04 22-05-2015 | Исправлено: Xom9I4oK, 19:35 22-05-2015
leonidz

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Сдеделал два патча при создании первого использовался  
движок - jojoDif
Successful compile (2,215 sec).  
Patch_jojoDif.exe     1203KB
движок - XDELTA
Successful compile (1,903 sec).  
Patch_XDELTA.exe  1446KB

Всего записей: 1226 | Зарегистр. 16-10-2005 | Отправлено: 19:29 22-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xom9I4oK
да, остался "хвост" моего недотестирования. к тому же заметил, что путь с внешними файлами по прежнему неактивен, если загрузить проект с указанным путем к внешним файлам в проект по умолчанию.
Silent патч будет досканально протестирован с работой и извлечением внешних файлов, и обязательно недоработка будет в скором времени устранена.
 
Совет. Чтобы Silent патч применился в нужной папке, нужно выставить метод Manually и прописать константу: {src}
 
Вопрос - а как Вы понимаете извлечение External files (чтобы мне пояснить)? Они предназначены не для извлечения в папку, а для доступа к ним со стороны кода, доступ может быть из временной папки патча, либо прямой доступ из папки вместе с патчем. External files - не могут сами себя куда то скопировать - это нужно делать с помощью кода.
 
Xom9I4oK
вот, попробуйте, так ли:
(fix for silent in 1.9)
http://rghost.ru/7NzsfqT2j
 
данный файл скопировать в папку pdata и заменить оригинал.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 19:35 22-05-2015 | Исправлено: usermode, 20:10 22-05-2015
Xom9I4oK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usermode
Благодарю за разъяснения - просто сначала мануал не нашел, тк слишком много папок и я, как говорится, "забудился в 3х соснах", а в самой программе вроде как тоже нельзя справку открыть. Я думал, что внешние файлы копируются автоматически. А нельзя ли сделать такую возможность, чтобы эта папка по умолчанию копировалась по адресу ключевого файла? А то вроде средствами Inno без подключения SHFileOperation.iss нельзя (без особых заморочек) скопировать всю папку.

Всего записей: 506 | Зарегистр. 01-04-2005 | Отправлено: 20:20 22-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xom9I4oK
Цитата:
А нельзя ли сделать такую возможность, чтобы эта папка по умолчанию копировалась по адресу ключевого файла?
Сделать то можно, хотелось бы понять смысл. Ведь если добавляемые или внешние файлы разместить в папке Modified files, то они будут записаны вместе с патч-данными и будут копироваться автоматически как обновленные. Сравнивать для патча можно каталоги со всеми файлами, программа сама определит, какие файлы модифицированы для генерации патч-данных, и какие файлы новые - и она их просто добавит целиком.
 
Как-нибудь я составлю небольшой FAQ по таким вопросам, с примерами кода для Insert Custom Actions.
Для копирования папки с внешними файлами необязательно заморачиваться с подключением SHFileOperation.iss, есть простой код в одну строчку:
 
копирование внешних файлов (если они были помещены внутрь патча), например, в документы пользователя в папку My Game\Config на любом из шагов Insert Custom Actions (Inno):
в поле Vars:
var ResultCode: Integer;
в шаг:
Exec(ExpandConstant('{sys}') + '\xcopy.exe', '"'+ExpandConstant('{tmp}') + '\ExternalFiles'+'" "'+ExpandConstant('{userdocs}') + '\My Game\Config'+'" /s /e /r /h /y /i', ExpandConstant('{tmp}') + '\ExternalFiles', SW_HIDE, ewWaitUntilTerminated, ResultCode);
 
//
или можно сделать такое, предлагать копировать дополнительный контент после обновления в папку с установленным обновлением:
в поле Vars:
var ResultCode: Integer;
 
в шаг AfterPatching:
if MsgBox('Хотите установить мод MyMod для обновленной версии игры?', mbInformation, mb_yesno) = idyes then
begin
if Exec(ExpandConstant('{sys}') + '\xcopy.exe', '"'+ExpandConstant('{tmp}') + '\ExternalFiles'+'" "'+ResultStr+'" /s /e /r /h /y /i', ExpandConstant('{tmp}') + '\ExternalFiles', SW_HIDE, ewWaitUntilTerminated, ResultCode) then
begin
MsgBox('MyMod установлен!', mbInformation, mb_ok);
end else
begin
MsgBox('Произошла ошибка при запуске утилиты копирования! MyMod не установлен!', mbError, mb_ok);
end;
end;
 
наверное, есть смысл сделать константу Error: равна 0 - когда ошибок нет, и 1 - когда процесс обновления завершился неудачно.
тогда можно будет манипулировать дополнительным кодом еще гибче, к примеру:
if Error = 0 then
begin
  // выполняем действия, если успех
end;
if Error = 1 then
begin
  // выполняем действия, если неуспех или ничего не выполняем
end;

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 20:37 22-05-2015 | Исправлено: usermode, 21:10 22-05-2015
Xom9I4oK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usermode
Спасибо за код и правленный файлик - как раз то что надо.
А есть возможность, чтобы патч был сайлент, но отображался прогресс-бар, т.е. чтобы он был не /VERYSILENT, а просто /SILENT?

Всего записей: 506 | Зарегистр. 01-04-2005 | Отправлено: 21:08 22-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xom9I4oK
Цитата:
А есть возможность, чтобы патч был сайлент, но отображался прогресс-бар?  

для этого нужно сделать шаблон, давайте обсудим, что должен "почти тихий" патч отображать на экране, делать ли его со свойством "Всегда сверху", указывать заголовок с текстом и т.д. - по делу. Я так понимаю, он должен запускаться без каких-либо кнопок и чекбоксов и просто отображать информацию? Например:
"Заголовок окна" + Информация о выполнении, допустим "Updating files... Please wait..." + Информация о пути, допустим "Patching in: %path%" + Прогресс бар.
 
ну а хелпы размещу вместе с exe в следующем билде таки.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 21:13 22-05-2015 | Исправлено: usermode, 21:34 22-05-2015
Xom9I4oK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Да, "он должен запускаться без каких-либо кнопок и чекбоксов и просто отображать информацию". Насчет Всегда сверху" думаю лучше без этого, тк на всех современных Windows прогресс установки можно посмотреть и на панели задач. Заголовок, думаю, стоит оставить стандартный, как и в обычной не сайлент версии.

Цитата:
"Заголовок окна" + Информация о выполнении, допустим "Updating files... Please wait..." + Информация о пути, допустим "Patching in: %path%" + Прогресс бар.
Да, то что нужно.

Всего записей: 506 | Зарегистр. 01-04-2005 | Отправлено: 21:32 22-05-2015 | Исправлено: Xom9I4oK, 21:36 22-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Согласен на счет "Always on top", к тому же фича многих раздражает.

Цитата:
на всех современных Windows прогресс установки можно посмотреть и на панели задач.
в патчах это не реализовано, но сделаю. И мигание иконки в таскбаре при завершении.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 22:02 22-05-2015 | Исправлено: usermode, 23:12 22-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[Release 1.9.1]
 
 - Fixed bug with disabled state of External files path in form if project with specified External dir was loaded.
 - Fixed bug with extracting or direct access to external files in silent mode.
 - Fixed bug with enabling "Verify hash" option if patch builded not in a silent mode and default state option was not checked.
 - Fixed some issues in help_en.chm.
 - Added animated progress bar to taskbar icon in Patch and Patch Maker.
 - Added flash effect to taskbar icon to Patch if patching was finished.
 - Added integer constant "PatchingError" for using in Inno Custom Code in steps "AfterPatching" and "OnFinish". "PatchingError" return 1 if some error ocurred or 0 if patching successfull. For example use in required step: if PatchingError = 0 then begin MsgBox('Some code after successfull patching here!', mbInformation, mb_OK); end;
 - Minor tweaks, fixed some issues.
 
ссылка пока здесь, на SoftPedia будет позже:
http://rghost.ru/private/8Pvwsd7nW/1b2257bda03bb8013ebae1b7d625a5fd
 
Форма для тихого патча пока окончательно не протестирована, фича будет доступна в следующем билде.
Выглядит пока так:

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 18:30 24-05-2015 | Исправлено: usermode, 18:34 24-05-2015
Xom9I4oK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usermode
А у Вас так задумано, что иконка на панели задач мигает пока не закроешь (просто обычно делают так, чтобы достаточно раз на неё нажать и она перестает мигать).
По поводу "Формы для тихого патча" - а если процесс установки пройдет без ошибок, то диалоговое окно в конце будет показываться или нет? Если будет, то можно опционально сделать так, чтобы в конце форма сразу закрывалась без таймера или чтобы самому можно было выставить 0 сек время закрытия окна?

Всего записей: 506 | Зарегистр. 01-04-2005 | Отправлено: 19:21 24-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xom9I4oK
Цитата:
так задумано, что иконка на панели задач мигает пока не закроешь
вообще-то да, т.е. уведомляет о том, что патч завершен. Ну а с другой стороны - зачем кликать по нему , чтобы остановить мигание? Уже закрывать окно надо, а не наслаждаться Но это имхо, я не знаю как лучше сделать, т.е. не вижу смысла особого при клике останавливать таймер мигания уже завершившегося патча.

Цитата:
а если процесс установки пройдет без ошибок, то диалоговое окно в конце будет показываться или нет?
точно такое же, только с другими уведомлениями. по умолчанию идет отсчет 5 секунд и форма закрывается сама, но ее можно после завершения операций закрыть досрочно. мне показалось, что делать небольшую задержку в секундах полезно для пользователя, во первых он увидит мигание иконки и переключится на окно, а там увидит сообщения: "патч успешно применен", "нечего патчить" и "патч завершен с ошибками и применился откат". устанавливать количество секунд вручную можно сделать, если это так необходимо.
 
еще можно сделать так, чтобы после патча его окно переключалось как на основное (у того патча что SilentForm).
 
все таки сделаю прекращение мигания после того, как форма патча станет активной.
 
добавлено
вобщем делаю мигание так: если форма неактивна (перекрыта другими приложениями), то иконка по завершении мигает. как только пользователь активировал окно патча или кликнул по это иконке для появления патча, то тут же иконка мигать перестает.
решено не делать приоритетным окно патча после завершения, т.к. это тоже почти раздражающий эффект AlwaysOnTop, нужно не мешать пользователю работать со своими приложениями на момент обновления, я так считаю.
 
для SilentForm делаю так, считаю так лучше, если форма активна, то появляется информация об выполнении и идет отсчет секунд до закрытия сразу. если форма была неактивна, то начинает мигать иконка и только после того, как пользователь активирует форму, начинает идти отсчет секунд до закрытия. если выставить значение секунд 0 в настройках, то форма будет закрыта досрочно без каких либо миганий и уведомлений.
 
также планируется сделать опции для облегчения: "копировать External Files в папку с установкой" и "копировать External Files в выборочную папку", для которой нужно будет в качестве корня указать константу Inno, например, "{userdocs}\My Games\Updated Settings". если понадобится получать кастомный путь через реестр, к примеру, то тогда нужно будет манипулировать этой функцией вручную из кодовой вставки.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 19:42 24-05-2015 | Исправлено: usermode, 12:49 25-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
[Release 1.9.5]
 
 - Improved path detection - now if key-file was not found in any detection path then message "Path not found!" will be appear. For manually method key-file checking is disabled.
 - Renamed "Enable silent patch mode option" to "Silent" and "Enable force patch mode option" to "Force", this options moved to "PatchMode".
 - Added feature "SilentForm" to "PatchMode". The feature add to silent patch form with progress bar and some messages - it closed automatically after some specified seconds after all operations was completed.
 - Fixed flash effect for taskbar icon. Now if form is activated then flashing is stop.
 - Fixed bug with language file extraction before patch initialization.
 - Added Feature "Copy external files to:" "InstallDir" or "CustomDir" with custom dir name. This option have effect only on successfull patching (PatchingError = 0) and will be performed only after patching step. If You want to get custom dir from the registry, then You must disable copy options and paste advanced Inno Setup or Batch script code to Insert Custom Actions for this operation.
 - Added Dutch translation (tnx to Gerard).
 - Minor tweaks, fixed some issues.
 
Ссылка обновлена.

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 12:04 26-05-2015
Xom9I4oK



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
usermode
Спасибо за SilentForm - то что надо. Теперь возник вопрос по батникам - почему-то не могу заставить заработать. Пишу код на удаление файла del /q /s !.txt предварительно выставив Batch script и Before patching и не срабатывает. Пробовал подложить файл !.txt рядом с патчем и рядом с ключевым файлом - ноль эффекта. В чем может быть проблема?

Всего записей: 506 | Зарегистр. 01-04-2005 | Отправлено: 19:08 26-05-2015
usermode

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Xom9I4oK
батники выполняются либо в папке с External Files, если они указаны, либо по дефолту из временной директории.
 
Пока посоветую использовать код Inno в шаг Before patching:
 
DeleteFile(ResultStr + '\!.txt');
 
Я правильно понимаю, нужно реализовать возможность манипулировать батниками из директории с обновляемой программой?
 

Всего записей: 473 | Зарегистр. 11-12-2014 | Отправлено: 19:59 26-05-2015
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11

Компьютерный форум Ru.Board » Компьютеры » Программы » Inno Setup XDELTA Patch Maker


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru