Обновился Istool до 5.1.6 _http://www.istool.org/files/istool-5.1.6.exe
» Inno Setup (создание инсталяционных пакетов)
Zabo4ka
Погоди до понедельника. я на работе гляну. дома лень ставить. но можешь сам посмотреть по помощи. где-то есть описание всех констант. в полне возможно что и нет, но тогда напишем сами процедурку. в общем если у тебя не получится, в понедельник всё сделаем.
Погоди до понедельника. я на работе гляну. дома лень ставить. но можешь сам посмотреть по помощи. где-то есть описание всех констант. в полне возможно что и нет, но тогда напишем сами процедурку. в общем если у тебя не получится, в понедельник всё сделаем.
feandy
Спасибо за помощь!! Скрипт не зарабоатл, но один знакомый мне чуть его подделал и все заработало, вот как надо было:
Код: [Соdе]
procedure DeinitializeUninstall;
Var OldString:String;
begin
RegQueryMultiStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager','PendingFileRenameOperations',OldString);
If (OldString<>'') Then OldString:=OldString+#0;
RegWriteMultiStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager','PendingFileRenameOperations',OldString+'\??\'+ExpandConstant('{localappdata}')+'\File.dll'+#0+#0);
end;
Спасибо за помощь!! Скрипт не зарабоатл, но один знакомый мне чуть его подделал и все заработало, вот как надо было:
Код: [Соdе]
procedure DeinitializeUninstall;
Var OldString:String;
begin
RegQueryMultiStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager','PendingFileRenameOperations',OldString);
If (OldString<>'') Then OldString:=OldString+#0;
RegWriteMultiStringValue(HKLM,'SYSTEM\CurrentControlSet\Control\Session Manager','PendingFileRenameOperations',OldString+'\??\'+ExpandConstant('{localappdata}')+'\File.dll'+#0+#0);
end;
Zabo4ka
Ответ на твой вопрос. Тебе нужно написать например следущее
Root: HKLM; Subkey: SOFTWARE\Oviont\Buh; ValueType: string; ValueName: SourceDisk; ValueData: {drive:{src}}; Components: ProgFiles
в результате будет записан диск с которого производилась установка (например d: (БЕЗ слеша!!!))
Ответ на твой вопрос. Тебе нужно написать например следущее
Root: HKLM; Subkey: SOFTWARE\Oviont\Buh; ValueType: string; ValueName: SourceDisk; ValueData: {drive:{src}}; Components: ProgFiles
в результате будет записан диск с которого производилась установка (например d: (БЕЗ слеша!!!))
chum2000
Я счастлив Работает.Очень благодарен за предоставленную инфу...
Я счастлив Работает.Очень благодарен за предоставленную инфу...
ну просто надо вместо {sys} писать {win}. А потом можно проще
Filename: "{app}\имя файла.reg"; StatusMsg: "Внесение изменений в реестр..."; Flags: shellexec
Добавлено:
а вообще полезно помощь почитать, а если с англицким беда, то в шапке есть ссылка на русский файл помощи. и ещё для тебя было бы удобно пользоваться ISTool.
Успехов
Filename: "{app}\имя файла.reg"; StatusMsg: "Внесение изменений в реестр..."; Flags: shellexec
Добавлено:
а вообще полезно помощь почитать, а если с англицким беда, то в шапке есть ссылка на русский файл помощи. и ещё для тебя было бы удобно пользоваться ISTool.
Успехов
Доброе время суток Всем! Опять требуетса Ваша помощь!! Опять же по ужасномуному для меня языку Паскаль и секции [Соdе]
Идея такая, чтоб пропатчить (заменить НЕХ значения или как там оно) в одном файле (File.dll), мне сказали, что тиоретически это возможно написать в Паскале и даже вроде смогут написать, но всеровно хочу спросить сперва у Вас
Короче инсталятор копирует внешний файл (File.dll) себе в {app}\PackFiles\File.dll , потом код определяет версию файла (задано будет 2 версии и для каждого свое применения) и патчет его!
Версия 1.0, тут надо "проНЕХить" следующие значения:
Код:
00000140: D5 AA
00000141: C8 BB
0001BA1A: 83 33
0001BA1B: EC C0
0001BA1C: 1C C9
0001BA1D: 56 C2
0001BA1E: 8D 04
0001BA1F: 4D 00
0001BB8C: 33 81
0001BB8D: F6 EC
0001BB8E: 8B 88
0001BB8F: C6 00
0001BB90: C9 00
0001BB91: C2 00
0001BB92: 08 A1
0001BB93: 00 18
000359FE: 00 01
Идея такая, чтоб пропатчить (заменить НЕХ значения или как там оно) в одном файле (File.dll), мне сказали, что тиоретически это возможно написать в Паскале и даже вроде смогут написать, но всеровно хочу спросить сперва у Вас
Короче инсталятор копирует внешний файл (File.dll) себе в {app}\PackFiles\File.dll , потом код определяет версию файла (задано будет 2 версии и для каждого свое применения) и патчет его!
Версия 1.0, тут надо "проНЕХить" следующие значения:
Код:
00000140: D5 AA
00000141: C8 BB
0001BA1A: 83 33
0001BA1B: EC C0
0001BA1C: 1C C9
0001BA1D: 56 C2
0001BA1E: 8D 04
0001BA1F: 4D 00
0001BB8C: 33 81
0001BB8D: F6 EC
0001BB8E: 8B 88
0001BB8F: C6 00
0001BB90: C9 00
0001BB91: C2 00
0001BB92: 08 A1
0001BB93: 00 18
000359FE: 00 01
boss911
Теоритически возможно. Но я бы сделал маленькую прогу патчер и запускал ее из инсталятора.
Цитата:
А так оно и происходит
Теоритически возможно. Но я бы сделал маленькую прогу патчер и запускал ее из инсталятора.
Цитата:
то еть сперва отрабатываетса секция [Files], а потом уже [Run]
А так оно и происходит
Для boss911
Гы... Чтобы пропатчить в Inno Setup нуно использовать спец. dll для этого, bindiff.dll вроде. Ее механизм и способ применения можно узнать в Patch Factory, см.
http://forum.ru-board.com/topic.cgi?forum=35&topic=14003&start=80#lt
Патчи, создаваемые данной программой основаны на инсталляторе Inno Setup. Но прога очень гиморная, рекомендую изучить дефолтный скрипт и разобраться в вызове процедур пропатчивания. Самому же очень влом, т.к. я бы маленький внешний патчик лучше смастерил и запускал бы его вообще отдельно.
Гы... Чтобы пропатчить в Inno Setup нуно использовать спец. dll для этого, bindiff.dll вроде. Ее механизм и способ применения можно узнать в Patch Factory, см.
http://forum.ru-board.com/topic.cgi?forum=35&topic=14003&start=80#lt
Патчи, создаваемые данной программой основаны на инсталляторе Inno Setup. Но прога очень гиморная, рекомендую изучить дефолтный скрипт и разобраться в вызове процедур пропатчивания. Самому же очень влом, т.к. я бы маленький внешний патчик лучше смастерил и запускал бы его вообще отдельно.
feandy & Kindly
Цитата:
Конечно можно и так, только я с програмированием не как, вот и прошу вашей помощи, напишите кто может, плиз, только есть к Вам маленькие условия:
прога должна сама распазновать врсию файла и применять для каждого свой код пропатчивания;
прога должна не выдавать не каких сообщений\окон и имела возможность работать с ключами где можно указать путь к файлу, то есть чтоб работала с командной строки, примерно так:
Код: Patcher.exe {app}\PackFiles\File.dll
Цитата:
сделал маленькую прогу патчер и запускал ее из инстал
Конечно можно и так, только я с програмированием не как, вот и прошу вашей помощи, напишите кто может, плиз, только есть к Вам маленькие условия:
прога должна сама распазновать врсию файла и применять для каждого свой код пропатчивания;
прога должна не выдавать не каких сообщений\окон и имела возможность работать с ключами где можно указать путь к файлу, то есть чтоб работала с командной строки, примерно так:
Код: Patcher.exe {app}\PackFiles\File.dll
boss911 если хочешь сделать все как хочешь и с обалденным интерфейсом (вставка разных картинок в формы, редактирование кнопок, двойной прогресс-бар) да и еще и пропатчить, то нужно использовать соответствующий патчер-инсталлятор. Не следует думать, что Inno Setup слишком навороченная программа, т.к. в ней все нужно реализовывать практически все вручную, обладая при этом кучей знаний.
Для твоего же случая, если в принципе плевать на базовый размер инсталлятора (на 250 KB больше чем в Inno), рекомендую патчер-инсталлятор Visual Patch 2. Прямую ссылку на закачку здесь не дам, но ее можно найти здесь:
http://msilab.net/forum/viewtopic.php?t=549
Если что, стучись в PM.
Для твоего же случая, если в принципе плевать на базовый размер инсталлятора (на 250 KB больше чем в Inno), рекомендую патчер-инсталлятор Visual Patch 2. Прямую ссылку на закачку здесь не дам, но ее можно найти здесь:
http://msilab.net/forum/viewtopic.php?t=549
Если что, стучись в PM.
Kindly
Цитата:
Дело в том, что я нехочу создать конкретный патчер для нужного мне файла, у меня задача совсем другая и патчинье одного файла не единственная задача инсталятора Inno, просто я собрал некий софт, который делает определенные процедуры, так вот застрял пока на одном! Короче хочетса, чтоб было все в одном, так как мой пакет (инсталятор) предназначен для одной области!!
Почему я нехочу применять программы-патчеры, да потомуч-то они заменяют сам файл, а у меня задача, чтоб патчило только НЕХ значение, то есть это не зависит от версии и языка файла, если бы мне надо было просто подменит файл, то я бы сделал это и через Inno !!
Цитата:
... то нужно использовать соответствующий патчер-инсталлятор. Не следует думать, что Inno Setup слишком навороченная программа ...
Дело в том, что я нехочу создать конкретный патчер для нужного мне файла, у меня задача совсем другая и патчинье одного файла не единственная задача инсталятора Inno, просто я собрал некий софт, который делает определенные процедуры, так вот застрял пока на одном! Короче хочетса, чтоб было все в одном, так как мой пакет (инсталятор) предназначен для одной области!!
Почему я нехочу применять программы-патчеры, да потомуч-то они заменяют сам файл, а у меня задача, чтоб патчило только НЕХ значение, то есть это не зависит от версии и языка файла, если бы мне надо было просто подменит файл, то я бы сделал это и через Inno !!
Можно при создании setup-ника убарть из комментариев (Свойства...Версия...Комментарий) эту строку "This installation was built with Inno Setup: http://www.innosetup.com"?
boss911
Цитата:
Цитата:
Не понимаю зачем такой геморой? Нельзя что ли для этого файла патчик создать и запускать его из секции [Run]?
DemonKPZ читай внимательно руководство.
Цитата:
Почему я нехочу применять программы-патчеры, да потомуч-то они заменяют сам файлБред.
Цитата:
а у меня задача, чтоб патчило только НЕХ значение
Не понимаю зачем такой геморой? Нельзя что ли для этого файла патчик создать и запускать его из секции [Run]?
DemonKPZ читай внимательно руководство.
Kindly
Человек похоже не понимает что такое патчер. Тема заходит в тупик.
boss911
Патчер - это прога которая в программе меняет несколько байт на что-то другое.
Что зависит от ситуации. И конечно же это не подмена файла другим файлом.
Человек похоже не понимает что такое патчер. Тема заходит в тупик.
boss911
Патчер - это прога которая в программе меняет несколько байт на что-то другое.
Что зависит от ситуации. И конечно же это не подмена файла другим файлом.
Ну е мое. Берешь патчер DUP 2 http://diablo2oo2.di.funpic.de/dup.htm (Лучше скачать последнюю бетку с форума). Делаешь патч. Для твоего случая нужно OFFSET PATCH пропатчивание. Далее сравниваешь старый и новый файл, программа сама определит изменения. Затем указываешь целевой (старый файл). Никаких наворотов больше не надо, типа вставка в патч изображения, музыки и т.д., т.к. мы будем делать фоновое (не заметное) пропатчивание. Если в файле изменений мало, то патч вообще будет пару килобайт + еще можем его сжать EXE-упаковщиком. Итак, создали патч, и в Inno Setup пишем следующее:
[Files]
Source: "C:\patch.exe"; DestDir: "{app}"; Flags: deleteafterinstall
[Run]
Filename: "{app}\patch.exe"; WorkingDir: "{app}"; Parameters: "/silent"; StatusMsg: "Процесс пропатчивания..."; Flags: waituntilterminated
По желанию делаешь проверки (реестр, присутствие, размер) перед установкой (см.руководство).
Если проверяешь реестр, то пропатчить можно и исходя из значений реестра, тогда патч может находится, например, во временной папке.
[Files]
Source: "C:\patch.exe"; DestDir: "{app}"; Flags: deleteafterinstall
[Run]
Filename: "{app}\patch.exe"; WorkingDir: "{app}"; Parameters: "/silent"; StatusMsg: "Процесс пропатчивания..."; Flags: waituntilterminated
По желанию делаешь проверки (реестр, присутствие, размер) перед установкой (см.руководство).
Если проверяешь реестр, то пропатчить можно и исходя из значений реестра, тогда патч может находится, например, во временной папке.
feandy
Цитата:
Именно это мне и надо!!
Kindly
Цитата:
Спасибо так и поступлю (блин прога английская, а есть русик), а что касаетса запуска с секции [Run], то тут мне уже обьяснять ненадо, просто патчинг для меня что-то новое, раньше подобным вообще не занемался да и не имею не какого представления какие проги для этого нужны и как они работают!! Спасибо, будем учитса!!!
Цитата:
Патчер - это прога которая в программе меняет несколько байт на что-то другое.
Именно это мне и надо!!
Kindly
Цитата:
Ну е мое. Берешь патчер DUP 2 ...
Спасибо так и поступлю (блин прога английская, а есть русик), а что касаетса запуска с секции [Run], то тут мне уже обьяснять ненадо, просто патчинг для меня что-то новое, раньше подобным вообще не занемался да и не имею не какого представления какие проги для этого нужны и как они работают!! Спасибо, будем учитса!!!
Где можно найти описание класса TNewCheckListBox? В хелпе к Inno Setup в раздлел Pascal Scripting: Support Classes Reference представлен только прототипы функций. Я к примеру брал код для TNewCheckListBox из Inno Setup Form Designer, а при компиляции появилось сообщение об ошибке что, свойство Style не определено. Хотелось бы самому понимать, првальный ли код генерируется для форм и контролоа. Есть ли более полное (нежели в хелпе к Inno Setup) описание классов контроллов и форм, используемых в секции [Code]?
Kindly
Спасибо прога помогла, только вот к сожалению ключи /startupworkdir и /workdir для нее неработают, а хотелось бы так:
Код: [Run]
Filename: patch.exe; WorkingDir: {app}; Parameters: /silent /startupworkdir PackFiles/File.dll; StatusMsg: Процесс пропатчивания...; Flags: waituntilterminated
Спасибо прога помогла, только вот к сожалению ключи /startupworkdir и /workdir для нее неработают, а хотелось бы так:
Код: [Run]
Filename: patch.exe; WorkingDir: {app}; Parameters: /silent /startupworkdir PackFiles/File.dll; StatusMsg: Процесс пропатчивания...; Flags: waituntilterminated
Ну так а как ты хочешь? Если русифицировать, то чем обычный способ не устраивает? Так смысл ведь в пропатчивании, значит копируй патч в ту папку, в которую установлен требуемый файл.
Kindly
Цитата:
Уже так и сделал, все работает, еще раз большое тебе спасибо за патчер, ты реально спас мою ситуацию, а то я бы еще долго делал свой проэкт!!
Подскажите пожалуйста, как в Inno скрипте организовать по очередность выполнения тех или инных секций, например, чтоб сперва выполнилось [Run] потом [Files] и опять [Run] или можно так: [Files] потом [Run] и опять [Files], короче что-то в этом духе!??
Цитата:
значит копируй патч в ту папку, в которую установлен требуемый файл.
Уже так и сделал, все работает, еще раз большое тебе спасибо за патчер, ты реально спас мою ситуацию, а то я бы еще долго делал свой проэкт!!
Подскажите пожалуйста, как в Inno скрипте организовать по очередность выполнения тех или инных секций, например, чтоб сперва выполнилось [Run] потом [Files] и опять [Run] или можно так: [Files] потом [Run] и опять [Files], короче что-то в этом духе!??
boss911
Никак. Используй процедуры что-то типа BeforeIstall и AfterInstall
Добавлено:
Читай справку
Никак. Используй процедуры что-то типа BeforeIstall и AfterInstall
Добавлено:
Читай справку
Как в скрипте определить директорию установки по ключу в реестре? В справке я на этот вопрос ответа никак не найду. Спасибо.
Xomyak, в справке нету, а вот в FAQ есть .
Цитата:
Xomyak, в справке нету, а вот в FAQ есть.
Спасибо, вчера ещё наткнулся. Вопрос решён.
Всем привет!!!
Есть проинсталированная прога с unins000.dat в папке от Inno... Как решить обратную задачу: скрипт из нее сделать? А то утилиты по распаковке инсталеров есть, а вот чтоб такое сотворить что-то не нашел... Просто не пойму что в реестр пишется, а надо узнать...
Есть проинсталированная прога с unins000.dat в папке от Inno... Как решить обратную задачу: скрипт из нее сделать? А то утилиты по распаковке инсталеров есть, а вот чтоб такое сотворить что-то не нашел... Просто не пойму что в реестр пишется, а надо узнать...
AJIEKSEu
А ты инсталяк распакуй и в секции [Registry] созданного файла увидишь что и куда пишется.
А ты инсталяк распакуй и в секции [Registry] созданного файла увидишь что и куда пишется.
Мне прога досталась уже проинсталенная, хочу на диск записать, но чтобы "почти" оригинал был... Ес-но что записи в реестре отсутствуют...
AJIEKSEu, ыыы... А как это - у кого то кривые руки были? Тебе еще повезло, что Inno кое чего в лог записывает. Открываешь блокнотом и выполняешь поиск по слову Software, хотя значения параметров ты не узнаешь. А вообще если инсталлятор был серъезный, то у тебя могут отсутствовать требуемые файлы, например, установленные не только в папку с программой. Далее ты все равно точных данных, внесенных в реестр не узнаешь, т.к. в лог все может и не записываться при повторной установке/переустановке. В зависимости от фантазии программеров, инсталлятор может прописывать кое-какие данные в реестр не из секции скрипта, а при выполнении кода при инициализации, да мало ли еще какие способы...
Парни, для всяких красивостей и прочих наворотов есть еще:
Inno Setup Script Includes (ISSI)
SHORT DESCRIPTION:
ISSI is a library of functions that can be implemented very easily into your existing setups created with Inno Setup.
Inno Setup Script Includes (c) 2003-2005 Jan Albartus
http://www.albartus.com/issi/
Классная штука. Но без предкомпилятора ISTool работать не будет.
Inno Setup Script Includes (ISSI)
SHORT DESCRIPTION:
ISSI is a library of functions that can be implemented very easily into your existing setups created with Inno Setup.
Inno Setup Script Includes (c) 2003-2005 Jan Albartus
http://www.albartus.com/issi/
Классная штука. Но без предкомпилятора ISTool работать не будет.
Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
Предыдущая тема: ICONS
Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.