Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Dust112
Дата сообщения: 13.05.2006 15:20
Обновился Istool до 5.1.6 _http://www.istool.org/files/istool-5.1.6.exe
Автор: chum2000
Дата сообщения: 14.05.2006 10:18
Zabo4ka
Погоди до понедельника. я на работе гляну. дома лень ставить. но можешь сам посмотреть по помощи. где-то есть описание всех констант. в полне возможно что и нет, но тогда напишем сами процедурку. в общем если у тебя не получится, в понедельник всё сделаем.
Автор: boss911
Дата сообщения: 14.05.2006 21:13
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;
Автор: chum2000
Дата сообщения: 15.05.2006 17:13
Zabo4ka

Ответ на твой вопрос. Тебе нужно написать например следущее

Root: HKLM; Subkey: SOFTWARE\Oviont\Buh; ValueType: string; ValueName: SourceDisk; ValueData: {drive:{src}}; Components: ProgFiles

в результате будет записан диск с которого производилась установка (например d: (БЕЗ слеша!!!))


Автор: Zabo4ka
Дата сообщения: 16.05.2006 15:53
chum2000
Я счастлив Работает.Очень благодарен за предоставленную инфу...
Автор: chum2000
Дата сообщения: 16.05.2006 17:36
ну просто надо вместо {sys} писать {win}. А потом можно проще

Filename: "{app}\имя файла.reg"; StatusMsg: "Внесение изменений в реестр..."; Flags: shellexec


Добавлено:
а вообще полезно помощь почитать, а если с англицким беда, то в шапке есть ссылка на русский файл помощи. и ещё для тебя было бы удобно пользоваться ISTool.

Успехов
Автор: boss911
Дата сообщения: 17.05.2006 00:36
Доброе время суток Всем! Опять требуетса Ваша помощь!! Опять же по ужасномуному для меня языку Паскаль и секции [Со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
Автор: feandy
Дата сообщения: 17.05.2006 08:13
boss911
Теоритически возможно. Но я бы сделал маленькую прогу патчер и запускал ее из инсталятора.

Цитата:
то еть сперва отрабатываетса секция [Files], а потом уже [Run]

А так оно и происходит
Автор: Kindly
Дата сообщения: 17.05.2006 11:32
Для boss911
Гы... Чтобы пропатчить в Inno Setup нуно использовать спец. dll для этого, bindiff.dll вроде. Ее механизм и способ применения можно узнать в Patch Factory, см.
http://forum.ru-board.com/topic.cgi?forum=35&topic=14003&start=80#lt
Патчи, создаваемые данной программой основаны на инсталляторе Inno Setup. Но прога очень гиморная, рекомендую изучить дефолтный скрипт и разобраться в вызове процедур пропатчивания. Самому же очень влом, т.к. я бы маленький внешний патчик лучше смастерил и запускал бы его вообще отдельно.
Автор: boss911
Дата сообщения: 17.05.2006 16:36
feandy & Kindly

Цитата:
сделал маленькую прогу патчер и запускал ее из инстал

Конечно можно и так, только я с програмированием не как, вот и прошу вашей помощи, напишите кто может, плиз, только есть к Вам маленькие условия:

прога должна сама распазновать врсию файла и применять для каждого свой код пропатчивания;

прога должна не выдавать не каких сообщений\окон и имела возможность работать с ключами где можно указать путь к файлу, то есть чтоб работала с командной строки, примерно так:

Код: Patcher.exe {app}\PackFiles\File.dll
Автор: Kindly
Дата сообщения: 18.05.2006 10:12
boss911 если хочешь сделать все как хочешь и с обалденным интерфейсом (вставка разных картинок в формы, редактирование кнопок, двойной прогресс-бар) да и еще и пропатчить, то нужно использовать соответствующий патчер-инсталлятор. Не следует думать, что Inno Setup слишком навороченная программа, т.к. в ней все нужно реализовывать практически все вручную, обладая при этом кучей знаний.
Для твоего же случая, если в принципе плевать на базовый размер инсталлятора (на 250 KB больше чем в Inno), рекомендую патчер-инсталлятор Visual Patch 2. Прямую ссылку на закачку здесь не дам, но ее можно найти здесь:
http://msilab.net/forum/viewtopic.php?t=549
Если что, стучись в PM.
Автор: boss911
Дата сообщения: 18.05.2006 22:06
Kindly

Цитата:
... то нужно использовать соответствующий патчер-инсталлятор. Не следует думать, что Inno Setup слишком навороченная программа ...


Дело в том, что я нехочу создать конкретный патчер для нужного мне файла, у меня задача совсем другая и патчинье одного файла не единственная задача инсталятора Inno, просто я собрал некий софт, который делает определенные процедуры, так вот застрял пока на одном! Короче хочетса, чтоб было все в одном, так как мой пакет (инсталятор) предназначен для одной области!!

Почему я нехочу применять программы-патчеры, да потомуч-то они заменяют сам файл, а у меня задача, чтоб патчило только НЕХ значение, то есть это не зависит от версии и языка файла, если бы мне надо было просто подменит файл, то я бы сделал это и через Inno !!
Автор: DemonKPZ
Дата сообщения: 19.05.2006 16:24
Можно при создании setup-ника убарть из комментариев (Свойства...Версия...Комментарий) эту строку "This installation was built with Inno Setup: http://www.innosetup.com"?
Автор: Kindly
Дата сообщения: 20.05.2006 09:42
boss911
Цитата:
Почему я нехочу применять программы-патчеры, да потомуч-то они заменяют сам файл
Бред.

Цитата:
а у меня задача, чтоб патчило только НЕХ значение

Не понимаю зачем такой геморой? Нельзя что ли для этого файла патчик создать и запускать его из секции [Run]?

DemonKPZ читай внимательно руководство.
Автор: feandy
Дата сообщения: 20.05.2006 20:35
Kindly
Человек похоже не понимает что такое патчер. Тема заходит в тупик.
boss911
Патчер - это прога которая в программе меняет несколько байт на что-то другое.
Что зависит от ситуации. И конечно же это не подмена файла другим файлом.
Автор: Kindly
Дата сообщения: 21.05.2006 10:19
Ну е мое. Берешь патчер 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

По желанию делаешь проверки (реестр, присутствие, размер) перед установкой (см.руководство).
Если проверяешь реестр, то пропатчить можно и исходя из значений реестра, тогда патч может находится, например, во временной папке.
Автор: boss911
Дата сообщения: 21.05.2006 22:20
feandy

Цитата:
Патчер - это прога которая в программе меняет несколько байт на что-то другое.

Именно это мне и надо!!

Kindly

Цитата:
Ну е мое. Берешь патчер DUP 2 ...

Спасибо так и поступлю (блин прога английская, а есть русик), а что касаетса запуска с секции [Run], то тут мне уже обьяснять ненадо, просто патчинг для меня что-то новое, раньше подобным вообще не занемался да и не имею не какого представления какие проги для этого нужны и как они работают!! Спасибо, будем учитса!!!
Автор: DemonKPZ
Дата сообщения: 22.05.2006 15:47
Где можно найти описание класса TNewCheckListBox? В хелпе к Inno Setup в раздлел Pascal Scripting: Support Classes Reference представлен только прототипы функций. Я к примеру брал код для TNewCheckListBox из Inno Setup Form Designer, а при компиляции появилось сообщение об ошибке что, свойство Style не определено. Хотелось бы самому понимать, првальный ли код генерируется для форм и контролоа. Есть ли более полное (нежели в хелпе к Inno Setup) описание классов контроллов и форм, используемых в секции [Code]?
Автор: boss911
Дата сообщения: 24.05.2006 02:56
Kindly

Спасибо прога помогла, только вот к сожалению ключи /startupworkdir и /workdir для нее неработают, а хотелось бы так:

Код: [Run]
Filename: patch.exe; WorkingDir: {app}; Parameters: /silent /startupworkdir PackFiles/File.dll; StatusMsg: Процесс пропатчивания...; Flags: waituntilterminated
Автор: Kindly
Дата сообщения: 24.05.2006 16:27
Ну так а как ты хочешь? Если русифицировать, то чем обычный способ не устраивает? Так смысл ведь в пропатчивании, значит копируй патч в ту папку, в которую установлен требуемый файл.
Автор: boss911
Дата сообщения: 24.05.2006 19:25
Kindly

Цитата:
значит копируй патч в ту папку, в которую установлен требуемый файл.

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

Подскажите пожалуйста, как в Inno скрипте организовать по очередность выполнения тех или инных секций, например, чтоб сперва выполнилось [Run] потом [Files] и опять [Run] или можно так: [Files] потом [Run] и опять [Files], короче что-то в этом духе!??
Автор: feandy
Дата сообщения: 24.05.2006 19:38
boss911
Никак. Используй процедуры что-то типа BeforeIstall и AfterInstall

Добавлено:
Читай справку
Автор: Xomyak
Дата сообщения: 25.05.2006 00:53
Как в скрипте определить директорию установки по ключу в реестре? В справке я на этот вопрос ответа никак не найду. Спасибо.
Автор: Kindly
Дата сообщения: 25.05.2006 16:17
Xomyak, в справке нету, а вот в FAQ есть .
Автор: Xomyak
Дата сообщения: 25.05.2006 20:35

Цитата:
Xomyak, в справке нету, а вот в FAQ есть.

Спасибо, вчера ещё наткнулся. Вопрос решён.
Автор: AJIEKSEu
Дата сообщения: 31.05.2006 00:16
Всем привет!!!

Есть проинсталированная прога с unins000.dat в папке от Inno... Как решить обратную задачу: скрипт из нее сделать? А то утилиты по распаковке инсталеров есть, а вот чтоб такое сотворить что-то не нашел... Просто не пойму что в реестр пишется, а надо узнать...
Автор: feandy
Дата сообщения: 31.05.2006 08:13
AJIEKSEu
А ты инсталяк распакуй и в секции [Registry] созданного файла увидишь что и куда пишется.
Автор: AJIEKSEu
Дата сообщения: 01.06.2006 10:01
Мне прога досталась уже проинсталенная, хочу на диск записать, но чтобы "почти" оригинал был... Ес-но что записи в реестре отсутствуют...
Автор: Kindly
Дата сообщения: 01.06.2006 10:28
AJIEKSEu, ыыы... А как это - у кого то кривые руки были? Тебе еще повезло, что Inno кое чего в лог записывает. Открываешь блокнотом и выполняешь поиск по слову Software, хотя значения параметров ты не узнаешь. А вообще если инсталлятор был серъезный, то у тебя могут отсутствовать требуемые файлы, например, установленные не только в папку с программой. Далее ты все равно точных данных, внесенных в реестр не узнаешь, т.к. в лог все может и не записываться при повторной установке/переустановке. В зависимости от фантазии программеров, инсталлятор может прописывать кое-какие данные в реестр не из секции скрипта, а при выполнении кода при инициализации, да мало ли еще какие способы...
Автор: mrrex
Дата сообщения: 01.06.2006 17:51
Парни, для всяких красивостей и прочих наворотов есть еще:

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, истории становления российского интернета. Сделано для людей.