Помощник
Здравствуйте, гость ( Вход | Регистрация )
|
Гость_Kindly_*
|
17:03:2005, 16:05
|
|
Инопланетный гость |
(Вопрос по Inno Setup 5) Я извиняюсь за вопрос немножко не в тему. Меня интереcует написание скрипта на Pascal следующего характера: Перед запуском инсталлятора нужна проверка реестра на определённый ключ, и если он существует - должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?
mailto:gubei_vadim@list.ru |
|
Сообщение
#1
|
|
![]() |
|
|
22:06:2005, 19:02
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 904 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 11
|
Цитата Хотелось бы вообще удалить титульную надпись и не вспоминать о ней. Код procedure InitializeWizard(); begin MainForm.BORDERSTYLE:=bsNone; end; Цитата А возможно ли, чтобы инсталлятор проверял не какое-то конкретное число или буквы, а проверял бы введенный серийник по соответствующей маске (к примеру такой: '####-#####-#****', где #-цифры, а *-буквы и т.д.). Ну или что-то похожее. Код function CheckSerial(Serial: String): Boolean; var mask:string; i:Integer; begin Result:=True; mask:='####-####-##****'; If Length(Serial)<>Length(mask) then begin Result:=False; exit; end; For i:=1 to Length(mask) do begin If StrGet(mask, i)='#' then If not ((Ord(StrGet(Serial, i))>=48) and (Ord(StrGet(Serial, i))<=57)) then begin Result:=False; exit; end; If StrGet(mask, i)='*' then If not ((StrGet(Serial, i)>='A') and (StrGet(Serial, i)<='Z')) then begin Result:=False; exit; end; end; end; Цитата И сразу тут второй вопрос - как сделать шифрование инсталлятора. А то скачал с сайта файл ISCrypt.dll, а как его использовать не знаю. 1. Файл ISCrypt.dll копируешь в каталог Inno Setup 2. В секцию [Setup] добавляешь: Код [Setup] Encryption=yes Password=12345 После компиляции инсталлятор зашифрован. |
|
Сообщение
#61
|
|
|
Гость_Snаke_*
|
22:06:2005, 23:48
|
|
Инопланетный гость |
Вот вылез сегодня под утро на форум, почитал, что вы мне посоветовали. Еще раз ОГРОМНОЕ спасибо!
|
|
Сообщение
#62
|
|
|
Гость_Snаke_*
|
23:06:2005, 02:05
|
|
Инопланетный гость |
Попробовал эти скрипты, почти все нормально. Почти потому, что я наверное плохо объяснил и вы не так меня поняли. Под титульной надписью я имел в виду надпись, которая отображается в фоновом окне шрифтом ARIAL белого цвета, размер 29 (вроде) и курсивом. Но все равно благодарен - нашел несколько другое применение тому скрипту. Еще раз спасибо за скрипт с серийником, просто класс, осталось мне только придумать свой keygen и готово. А не получится его сделать, наплевать, сам буду придумывать серийники к своим дистрибутивам.
Все же Inno Setup крутейшая программка, окончательный выбор сделал на ней, хотя делал инсталляторы и в InstallShield Developer, и в Wise. Но Inno Setup - это рулез. |
|
Сообщение
#63
|
|
|
Гость_Guest_*
|
26:06:2005, 08:33
|
|
Инопланетный гость |
А вот для этой темы следующие обучающие документы на русском.
Статья для начинающих: http://sabbathblacklab.narod.ru/rus2/docinnosetup.rar Русский хелп для версии 5: http://sabbathblacklab.narod.ru/rus2/is5hlp.rar |
|
Сообщение
#64
|
|
|
Гость_Guest_Юрий_*_*
|
8:07:2005, 11:27
|
|
Инопланетный гость |
Здравствуйте!
Папка на диске c:\ содержит некоторое количество текстовых файлов (изначально неизвестно сколько их). Часть файлов имеет внутри себя некий одинаковый ключ, а часть не имеет. Задача состоит в создании инсталятора, позволяющего выборочную установку. При этом число пунктов выбора должно соответствовать количеству файлов с одинаковым ключом, а названия этих пунктов должны быть считаны из 20-ых строк соответствующих текстовиков. Кто-нибудь решал подобную задачу? Поделитесь возможными вариантами решения. Спасибо. |
|
Сообщение
#65
|
|
|
|
9:07:2005, 04:43
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 904 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 11
|
Цитата Папка на диске c:\ содержит некоторое количество текстовых файлов (изначально неизвестно сколько их). Не понял, на компьютере где будет запускаться ваш инсталлятор, диск c:\ содержит некоторое количество текстовых файлов? Цитата Задача состоит в создании инсталятора, позволяющего выборочную установку. При этом число пунктов выбора должно соответствовать количеству файлов с одинаковым ключом Опять непонятно, ведь каждый пункт выбора в инсталляторе, должен быть связан с одним или несколькими файлами дистрибутива. Как же вы будете создавать дистрибутив не зная даже сколько будет пунктов выбора. Или я не понимаю, или у вас непривильно поставлена задача. |
|
Сообщение
#66
|
|
|
Гость_Kindly_*
|
9:07:2005, 08:33
|
|
Инопланетный гость |
У меня вопросы следующего содержания:
Требуется поместить CheckBox на панель выбора директории для установки, допустим под строкой отображаемого пути и задать ему выполнение, например, включение/отключение функции MyProgCheck. Конечно, у меня получалось это сделать, создавая новую страницу мастера, но там уже другие проблемы, да и гиморно очень (задать выполнение функции не получалось). Вообще реально поместить CheckBox на панель выбора директории для установки по умолчанию без создания дополнительной страницы мастера? И сразу второй вопрос: Как задать выполнение какой-нибудь функции через CheckBox на чистой странице? |
|
Сообщение
#67
|
|
|
Гость_Guest_Юрий_*_*
|
9:07:2005, 22:31
|
|
Инопланетный гость |
To Zubr:
>Опять непонятно, ведь каждый пункт выбора в инсталляторе, должен быть связан с одним или несколькими файлами дистрибутива. Как же вы будете создавать дистрибутив не зная даже сколько будет пунктов выбора. Или я не понимаю, или у вас непривильно поставлена задача. Необходимо создать инсталлятор. При написании скрипта известно, что текстовые файлы (которые должны войти в setup.exe) находяться на диске по конкретному пути (допустим, c:\CreateInstall), но ни имена, ни количество этих *.txt неизвестны. Таким образом, не знаю, как можно заранее знать количество пунктов выборочной установки, а задача стоит именно такая. |
|
Сообщение
#68
|
|
|
Гость_Guest_Юрий_*_*
|
9:07:2005, 22:40
|
|
Инопланетный гость |
Ещё интересует такая задача: как из конкретного файла по пути "C:\CreateIntall\ReadMe.txt" выцепить 20-ую строку для того, чтобы использовать её для названия пункта выборочной установки?
|
|
Сообщение
#69
|
|
|
Гость_Guest_Юрий_*_*
|
9:07:2005, 22:42
|
|
Инопланетный гость |
Ещё интересует такая задача: как из конкретного файла по пути "C:\CreateIntall\ReadMe.txt" выцепить 20-ую строку для того, чтобы использовать её в качестве названия пункта выборочной установки?
|
|
Сообщение
#70
|
|
|
|
10:07:2005, 05:35
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 904 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 11
|
Guest_Юрий_*
Цитата Необходимо создать инсталлятор. При написании скрипта известно, что текстовые файлы (которые должны войти в setup.exe) находяться на диске по конкретному пути (допустим, c:\CreateInstall), но ни имена, ни количество этих *.txt неизвестны. Таким образом, не знаю, как можно заранее знать количество пунктов выборочной установки, а задача стоит именно такая. Средствами InnoSetup такое не получится. Надо написать программу, которая обработает эти текстовые файлы (произведет необходимый поиск), сгенерит файл скрипта InnoSetup .iss, запустит сам InnoSetup в командном режиме, и после компиляции может даже запустить готовый инсталляционный файл на установку. Цитата Ещё интересует такая задача: как из конкретного файла по пути "C:\CreateIntall\ReadMe.txt" выцепить 20-ую строку для того, чтобы использовать её в качестве названия пункта выборочной установки? Смотрите выше, в вашем случае это должна будет делать сторонняя программа. Kindly Потерпите немного, будет время, постараюсь ответить на ваши вопросы. |
|
Сообщение
#71
|
|
|
Гость_Guest_Юрий_*_*
|
10:07:2005, 20:09
|
|
Инопланетный гость |
To Zubr:
спасибо. будем думать и делать Появилась ещё пара вопросов. 1. После создания посредством Inno Setup, в свойствах файла инсталлятора на закладке "Версия" поле "Авторские права" остаётся незаполненным. Каким образом его можно заполнить? 2. Как убить на той же закладке в поле "Комментарий" значение "This installation was built with Inno Setup: http://www.innosetup.com"? |
|
Сообщение
#72
|
|
|
|
11:07:2005, 20:30
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 904 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 11
|
Цитата Появилась ещё пара вопросов. 1. После создания посредством Inno Setup, в свойствах файла инсталлятора на закладке "Версия" поле "Авторские права" остаётся незаполненным. Каким образом его можно заполнить? 2. Как убить на той же закладке в поле "Комментарий" значение "This installation was built with Inno Setup: http://www.innosetup.com"? Эти вопросы можно решить пропатчив скомпилированный InnoSetup файл, так как все эти данные находятся в ресурсе в Unicode. Могу сделать программку-патчер, не бесплатно конечно. Цитата Требуется поместить CheckBox на панель выбора директории для установки, допустим под строкой отображаемого пути и задать ему выполнение, например, включение/отключение функции MyProgCheck. Конечно, у меня получалось это сделать, создавая новую страницу мастера, но там уже другие проблемы, да и гиморно очень (задать выполнение функции не получалось). Вообще реально поместить CheckBox на панель выбора директории для установки по умолчанию без создания дополнительной страницы мастера? И сразу второй вопрос: Как задать выполнение какой-нибудь функции через CheckBox на чистой странице? Вот код: Код var
cb:TCheckBox; procedure cdClick(Sender: TObject); begin If cb.CHECKED then MsgBox('cb.CHECKED', mbInformation, MB_OK) else MsgBox('not cb.CHECKED', mbInformation, MB_OK) end; procedure CurPageChanged(CurPageID: Integer); var i:Integer; begin If CurPageID=wpSelectDir then begin If cb=nil then begin cb:=TCheckBox.Create(WizardForm); cb.Parent:=WizardForm; cb.Left:=WizardForm.SELECTDIRLABEL.Left; cb.Top:=ScaleY(180); cb.CAPTION:='MyCheckBox'; cb.ONCLICK:=@cdClick; end; end else begin If cb<>nil then begin cb.Free; cb:=nil; end; end; end; |
|
Сообщение
#73
|
|
|
Гость_Guest_Юрий_*_*
|
12:07:2005, 08:46
|
|
Инопланетный гость |
To Zubr:
благодарю Вас. Вопросов мало не бывает, поэтому ещё возник один: В процессе установки какого либо приложения Мастер показывает строку прогресса (прогресс-бар). Над ним пишутся пути, куда устанавливаются те или иные файлы. Можно ли: 1. отключить отображение путей для всей установки (всех файлов)? 2. отключить отображение путей для конкретных файлов? 3. заменить строку отображения путей на нечто типа "Идёт процесс установки" для всех файлов? 4. заменить строку отображения путей на "Устанавливается компонент" для группы файлов или одного конкретного? |
|
Сообщение
#74
|
|
|
Гость_Kindly_*
|
12:07:2005, 09:55
|
|
Инопланетный гость |
Вновь спасибо Вам, zubr, за оказанную помощь, сейчас в отъезде, так что сполна опробую Ваш совет позже.
Guest_Юрий_* Цитата В процессе установки какого либо приложения Мастер показывает строку прогресса (прогресс-бар). Над ним пишутся пути, куда устанавливаются те или иные файлы. Можно ли: 1. отключить отображение путей для всей установки (всех файлов)? 2. отключить отображение путей для конкретных файлов? 3. заменить строку отображения путей на нечто типа "Идёт процесс установки" для всех файлов? 4. заменить строку отображения путей на "Устанавливается компонент" для группы файлов или одного конкретного? Но ведь можно изменить это, заменив/изменив строки в файле локализации (языкового файла) тем же Inno Setup. zubr Цитата Как убить на той же закладке в поле "Комментарий" значение "This installation was built with Inno Setup: http://www.innosetup.com"? Эти вопросы можно решить пропатчив скомпилированный InnoSetup файл, так как все эти данные находятся в ресурсе в Unicode. Могу сделать программку-патчер, не бесплатно конечно. А разве пропатчивание инсталлятора не снимет защиту проверки CRC суммы? |
|
Сообщение
#75
|
|
|
Гость_Guest_Юрий_*_*
|
12:07:2005, 13:21
|
|
Инопланетный гость |
2 Kindly:
>Но ведь можно изменить это, заменив/изменив строки в файле локализации >(языкового файла) тем же Inno Setup. Насколько я помню, в языковом файле (*.isl) действительно можно изменить строки, выводимые в окнах Мастера, однако, опциональную возможность отображения или сокрытия пути установки файлов, там не настроить... |
|
Сообщение
#76
|
|
|
Гость_Guest_Юрий_*_*
|
12:07:2005, 13:26
|
|
Инопланетный гость |
2 Kindly:
...Также редактирование языкового файла не даст возможности применения конкретной строки в момент установки конкретного файла... Поэтому, эта задача несколько сложней той, о которой Вы сказали... Благодарю Вас за совет! |
|
Сообщение
#77
|
|
|
Гость_Guest_Юрий_*_*
|
12:07:2005, 13:28
|
|
Инопланетный гость |
>А разве пропатчивание инсталлятора не снимет защиту проверки CRC суммы?
Что-то мне подсказывает, что пропатчивание автоматически снимает легальность использования Inno Setup для создания инсталляторов коммерческих продуктов... |
|
Сообщение
#78
|
|
|
|
13:07:2005, 03:58
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 904 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 11
|
Цитата В процессе установки какого либо приложения Мастер показывает строку прогресса (прогресс-бар). Над ним пишутся пути, куда устанавливаются те или иные файлы. Можно ли: 1. отключить отображение путей для всей установки (всех файлов)? 2. отключить отображение путей для конкретных файлов? 3. заменить строку отображения путей на нечто типа "Идёт процесс установки" для всех файлов? 4. заменить строку отображения путей на "Устанавливается компонент" для группы файлов или одного конкретного? Честно говоря юзая настроечный файл это сделать не пробовал, но тут можно пойти тем же путем как и у Kindly c CheckBox, перехватывать окна и менять надписи, будет время может поюзаю, тогда чего нить выложу. Цитата А разве пропатчивание инсталлятора не снимет защиту проверки CRC суммы? Ну у скомпилированного файла InnoSetup нет защиты на проверку целостности. Короче патчится он без проблем. |
|
Сообщение
#79
|
|
|
Гость_Guest_Юрий_*_*
|
13:07:2005, 06:27
|
|
Инопланетный гость |
отображение путей при установке файлов можно скрыть, используя следующюю конструкцию:
[Code] procedure InitializeWizard; begin WizardForm.ProgressGauge.Visible := False; end; |
|
Сообщение
#80
|
|
|
Гость_Guest_Юрий_*_*
|
13:07:2005, 06:32
|
|
Инопланетный гость |
... это действует на процесс установки всех файлов...
|
|
Сообщение
#81
|
|
|
Гость_Guest_Юрий_*_*
|
13:07:2005, 09:41
|
|
Инопланетный гость |
To Zubr:
Thanx |
|
Сообщение
#82
|
|
|
Гость_Guest_Юрий_*_*
|
13:07:2005, 11:51
|
|
Инопланетный гость |
Такой ещё вопрос:
Установил я какой-то компонент при выборочной установке. Затем, через некоторое время, решил, что надо бы ещё из списка установить компонент. Идёт процесс установки второго компонента, и тут я нажимаю кнопу "Отмена"... Пошёл откат (Rollback)... Самое паршивое, что этим убивается и заранее установленный компонент... Как избежать того, чтобы при отмене установки какого-то компонента не удалялся заранее установленный компонент? Есть, конечно, по этому поводу мысли о пихании инфы в реестр после каждой установки компонента, но вдруг кто-нибудь нашёл поинтереснее схему? |
|
Сообщение
#83
|
|
|
|
14:07:2005, 03:59
|
|
Божественный ![]() ![]() ![]() ![]() ![]() Группа: Модеры Сообщений: 904 Регистрация: 19:11:2003 Пользователь №: 133 Репутация: 11
|
Цитата Установил я какой-то компонент при выборочной установке. Затем, через некоторое время, решил, что надо бы ещё из списка установить компонент. Идёт процесс установки второго компонента, и тут я нажимаю кнопу "Отмена"... Пошёл откат (Rollback)... Самое паршивое, что этим убивается и заранее установленный компонент... Как избежать того, чтобы при отмене установки какого-то компонента не удалялся заранее установленный компонент? Точно не уверен (не смотрел), но по моему копирование файлов на диск производится на самом последнем этапе, так что возможно, когда вы нажимаете Отмена, еще на диске ничего и не было. |
|
Сообщение
#84
|
|
|
Гость_Guest_Юрий_*_*
|
14:07:2005, 05:06
|
|
Инопланетный гость |
To Zubr:
Вы меня не поняли, видимо. Суть такая: установил я какой-то компонент программы, пользовался им некоторое время, затем мне понадобилось установить какой-то другой компонент вдобавок из того же install.exe. А вопрос в следующем: как сделать так, чтобы при повторном запуске install'a и затем нажатии кнопки Отмена не удалялись компоненты, установленные и использовавшиеся мной после первой инсталляции... |
|
Сообщение
#85
|
|
|
Гость_Guest_Юрий_*_*
|
14:07:2005, 06:08
|
|
Инопланетный гость |
замену значения "This installation was built with Inno Setup: http://www.innosetup.com" в поле "Комментарий" можно произвести без всяких ухищрений программой-редактором ресурсов Restorator.
|
|
Сообщение
#86
|
|
|
Гость_Guest_Юрий_*_*
|
14:07:2005, 06:44
|
|
Инопланетный гость |
и вновь вопрос: как отменить деинсталяцию в случае, если один из установленных файлов используется?
|
|
Сообщение
#87
|
|
|
Гость_Kindly_*
|
14:07:2005, 07:21
|
|
Инопланетный гость |
Guest_Юрий_*
Цитата замену значения "This installation was built with Inno Setup: http://www.innosetup.com" в поле "Комментарий" можно произвести без всяких ухищрений программой-редактором ресурсов Restorator. Я не знаю, какую версию вы используете, но в версии 5.14 внесение любых изменений чревато сообщением о поврежденном инсталляторе, и в FAQ ясно написано, что сам инсталлятор имеет проверку изменения собственной CRC суммы |
|
Сообщение
#88
|
|
|
Гость_Kindly_*
|
14:07:2005, 07:26
|
|
Инопланетный гость |
Guest_Юрий_*
Цитата После создания посредством Inno Setup, в свойствах файла инсталлятора на закладке "Версия" поле "Авторские права" остаётся незаполненным. Каким образом его можно заполнить? Насчет авторских прав не знаю но версию можно изменить так: [Setup] VersionInfoVersion=1.5.0.0 |
|
Сообщение
#89
|
|
|
Гость_Guest_Юрий_*_*
|
14:07:2005, 09:11
|
|
Инопланетный гость |
To Kindly:
5.14 (ISSP 5.1.2.0)... доверяй, но проверяй VersionInfoVersion эт да, имына так и делается... А комменты и авторское право отключены автором... |
|
Сообщение
#90
|
|
![]() |