Написание скрипта для инсталлятора

  • Автор темы Kindly
  • Дата начала
Статус
Закрыто для дальнейших ответов.
Z

zubr

Хотелось бы вообще удалить титульную надпись и не вспоминать о ней.
Код:
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
После компиляции инсталлятор зашифрован.
 
S

Sn

Вот вылез сегодня под утро на форум, почитал, что вы мне посоветовали. Еще раз ОГРОМНОЕ спасибо! :lol:
 
S

Sn

Попробовал эти скрипты, почти все нормально. Почти потому, что я наверное плохо объяснил и вы не так меня поняли. Под титульной надписью я имел в виду надпись, которая отображается в фоновом окне шрифтом ARIAL белого цвета, размер 29 (вроде) и курсивом. Но все равно благодарен - нашел несколько другое применение тому скрипту. Еще раз спасибо за скрипт с серийником, просто класс, осталось мне только придумать свой keygen и готово. А не получится его сделать, наплевать, сам буду придумывать серийники к своим дистрибутивам.
Все же Inno Setup крутейшая программка, окончательный выбор сделал на ней, хотя делал инсталляторы и в InstallShield Developer, и в Wise. Но Inno Setup - это рулез.
 
G

Guest

А вот для этой темы следующие обучающие документы на русском.
Статья для начинающих:

Русский хелп для версии 5:
 
G

Guest_

Здравствуйте!

Папка на диске c:\ содержит некоторое количество текстовых файлов (изначально неизвестно сколько их). Часть файлов имеет внутри себя некий одинаковый ключ, а часть не имеет. Задача состоит в создании инсталятора, позволяющего выборочную установку. При этом число пунктов выбора должно соответствовать количеству файлов с одинаковым ключом, а названия этих пунктов должны быть считаны из 20-ых строк соответствующих текстовиков.

Кто-нибудь решал подобную задачу? Поделитесь возможными вариантами решения. Спасибо.
 
Z

zubr

Папка на диске c:\ содержит некоторое количество текстовых файлов (изначально неизвестно сколько их).
Не понял, на компьютере где будет запускаться ваш инсталлятор, диск c:\ содержит некоторое количество текстовых файлов?
Задача состоит в создании инсталятора, позволяющего выборочную установку. При этом число пунктов выбора должно соответствовать количеству файлов с одинаковым ключом
Опять непонятно, ведь каждый пункт выбора в инсталляторе, должен быть связан с одним или несколькими файлами дистрибутива. Как же вы будете создавать дистрибутив не зная даже сколько будет пунктов выбора.
Или я не понимаю, или у вас непривильно поставлена задача.
 
K

Kindly

У меня вопросы следующего содержания:
Требуется поместить CheckBox на панель выбора директории для установки, допустим под строкой отображаемого пути и задать ему выполнение, например, включение/отключение функции MyProgCheck.
Конечно, у меня получалось это сделать, создавая новую страницу мастера, но там уже другие проблемы, да и гиморно очень (задать выполнение функции не получалось). Вообще реально поместить CheckBox на панель выбора директории для установки по умолчанию без создания дополнительной страницы мастера?
И сразу второй вопрос: Как задать выполнение какой-нибудь функции через CheckBox на чистой странице?
 
G

Guest_

To Zubr:

>Опять непонятно, ведь каждый пункт выбора в инсталляторе, должен быть связан с одним или несколькими файлами дистрибутива. Как же вы будете создавать дистрибутив не зная даже сколько будет пунктов выбора.
Или я не понимаю, или у вас непривильно поставлена задача.

Необходимо создать инсталлятор. При написании скрипта известно, что текстовые файлы (которые должны войти в setup.exe) находяться на диске по конкретному пути (допустим, c:\CreateInstall), но ни имена, ни количество этих *.txt неизвестны. Таким образом, не знаю, как можно заранее знать количество пунктов выборочной установки, а задача стоит именно такая.
 
G

Guest_

Ещё интересует такая задача: как из конкретного файла по пути "C:\CreateIntall\ReadMe.txt" выцепить 20-ую строку для того, чтобы использовать её для названия пункта выборочной установки?
 
G

Guest_

Ещё интересует такая задача: как из конкретного файла по пути "C:\CreateIntall\ReadMe.txt" выцепить 20-ую строку для того, чтобы использовать её в качестве названия пункта выборочной установки?
 
Z

zubr

Guest_Юрий_*
Необходимо создать инсталлятор. При написании скрипта известно, что текстовые файлы (которые должны войти в setup.exe) находяться на диске по конкретному пути (допустим, c:\CreateInstall), но ни имена, ни количество этих *.txt неизвестны. Таким образом, не знаю, как можно заранее знать количество пунктов выборочной установки, а задача стоит именно такая.
Средствами InnoSetup такое не получится. Надо написать программу, которая обработает эти текстовые файлы (произведет необходимый поиск), сгенерит файл скрипта InnoSetup .iss, запустит сам InnoSetup в командном режиме, и после компиляции может даже запустить готовый инсталляционный файл на установку.
Ещё интересует такая задача: как из конкретного файла по пути "C:\CreateIntall\ReadMe.txt" выцепить 20-ую строку для того, чтобы использовать её в качестве названия пункта выборочной установки?
Смотрите выше, в вашем случае это должна будет делать сторонняя программа.

Kindly
Потерпите немного, будет время, постараюсь ответить на ваши вопросы.
 
G

Guest_

To Zubr:

спасибо. будем думать и делать :blink:

Появилась ещё пара вопросов.
1. После создания посредством Inno Setup, в свойствах файла инсталлятора на закладке "Версия" поле "Авторские права" остаётся незаполненным. Каким образом его можно заполнить?

2. Как убить на той же закладке в поле "Комментарий" значение "This installation was built with Inno Setup: ?
 
Z

zubr

Появилась ещё пара вопросов.
1. После создания посредством Inno Setup, в свойствах файла инсталлятора на закладке "Версия" поле "Авторские права" остаётся незаполненным. Каким образом его можно заполнить?

2. Как убить на той же закладке в поле "Комментарий" значение "This installation was built with Inno Setup: ?
Эти вопросы можно решить пропатчив скомпилированный 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;
 
G

Guest_

To Zubr:
благодарю Вас.

Вопросов мало не бывает, поэтому ещё возник один:
В процессе установки какого либо приложения Мастер показывает строку прогресса (прогресс-бар). Над ним пишутся пути, куда устанавливаются те или иные файлы. Можно ли:
1. отключить отображение путей для всей установки (всех файлов)?
2. отключить отображение путей для конкретных файлов?
3. заменить строку отображения путей на нечто типа "Идёт процесс установки" для всех файлов?
4. заменить строку отображения путей на "Устанавливается компонент" для группы файлов или одного конкретного?
 
K

Kindly

Вновь спасибо Вам, zubr, за оказанную помощь, сейчас в отъезде, так что сполна опробую Ваш совет позже.

Guest_Юрий_*
В процессе установки какого либо приложения Мастер показывает строку прогресса (прогресс-бар). Над ним пишутся пути, куда устанавливаются те или иные файлы. Можно ли:
1. отключить отображение путей для всей установки (всех файлов)?
2. отключить отображение путей для конкретных файлов?
3. заменить строку отображения путей на нечто типа "Идёт процесс установки" для всех файлов?
4. заменить строку отображения путей на "Устанавливается компонент" для группы файлов или одного конкретного?
Но ведь можно изменить это, заменив/изменив строки в файле локализации (языкового файла) тем же Inno Setup.

zubr
Как убить на той же закладке в поле "Комментарий" значение "This installation was built with Inno Setup: ?

Эти вопросы можно решить пропатчив скомпилированный InnoSetup файл, так как все эти данные находятся в ресурсе в Unicode. Могу сделать программку-патчер, не бесплатно конечно.
А разве пропатчивание инсталлятора не снимет защиту проверки CRC суммы?
 
G

Guest_

2 Kindly:

>Но ведь можно изменить это, заменив/изменив строки в файле локализации
>(языкового файла) тем же Inno Setup.

Насколько я помню, в языковом файле (*.isl) действительно можно изменить строки, выводимые в окнах Мастера, однако, опциональную возможность отображения или сокрытия пути установки файлов, там не настроить...
 
G

Guest_

2 Kindly:

...Также редактирование языкового файла не даст возможности применения конкретной строки в момент установки конкретного файла... Поэтому, эта задача несколько сложней той, о которой Вы сказали...
Благодарю Вас за совет!
 
G

Guest_

>А разве пропатчивание инсталлятора не снимет защиту проверки CRC суммы?

Что-то мне подсказывает, что пропатчивание автоматически снимает легальность использования Inno Setup для создания инсталляторов коммерческих продуктов...
 
Z

zubr

В процессе установки какого либо приложения Мастер показывает строку прогресса (прогресс-бар). Над ним пишутся пути, куда устанавливаются те или иные файлы. Можно ли:
1. отключить отображение путей для всей установки (всех файлов)?
2. отключить отображение путей для конкретных файлов?
3. заменить строку отображения путей на нечто типа "Идёт процесс установки" для всех файлов?
4. заменить строку отображения путей на "Устанавливается компонент" для группы файлов или одного конкретного?
Честно говоря юзая настроечный файл это сделать не пробовал, но тут можно пойти тем же путем как и у Kindly c CheckBox, перехватывать окна и менять надписи, будет время может поюзаю, тогда чего нить выложу.
А разве пропатчивание инсталлятора не снимет защиту проверки CRC суммы?
Ну у скомпилированного файла InnoSetup нет защиты на проверку целостности. Короче патчится он без проблем.
 
G

Guest_

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

Код:
procedure InitializeWizard;
begin
WizardForm.ProgressGauge.Visible := False;
end;
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!