Форум программистов CODEBY.NET Хостинг в Беларуси — Active Technologies

Разработка бизнес сайтов

Нужны клиенты? Тогда сюда быстрее...
X   Сообщение сайта
(Сообщение закроется через 2 секунды)

Здравствуйте, гость ( Вход | Регистрация )




> Написание скрипта для инсталлятора
Гость_Kindly_*
сообщение 17:03:2005, 16:05
Цитата Ответить 





Инопланетный гость






(Вопрос по Inno Setup 5) Я извиняюсь за вопрос немножко не в тему. Меня интереcует написание скрипта на Pascal следующего характера: Перед запуском инсталлятора нужна проверка реестра на определённый ключ, и если он существует - должен запускаться мастер инсталляции, а если ключ не существует, то должна вылетать мессага, что прога не найдена - жмите OK чтобы покинуть мастер (ну или другой текст). Вобщем вы программеры - для вас скриптик или только секцию кода написать не составит труда. Поможете такому как мне?
mailto:gubei_vadim@list.ru
Подняться вверх 
 
Сообщение #1
10 страниц V  < 1 2 3 4 5 > »   
Новая тема 
Ответов (60 - 89)
zubr
Вставить ник
сообщение 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
Цитата Ответить 





Инопланетный гость






Вот вылез сегодня под утро на форум, почитал, что вы мне посоветовали. Еще раз ОГРОМНОЕ спасибо! biggrin.gif
Подняться вверх 
 
Сообщение #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
zubr
Вставить ник
сообщение 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
zubr
Вставить ник
сообщение 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:

спасибо. будем думать и делать smile.gif

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

2. Как убить на той же закладке в поле "Комментарий" значение "This installation was built with Inno Setup: http://www.innosetup.com"?
Подняться вверх 
 
Сообщение #72
zubr
Вставить ник
сообщение 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
zubr
Вставить ник
сообщение 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
zubr
Вставить ник
сообщение 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 суммы dry.gif .
Подняться вверх 
 
Сообщение #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)...
доверяй, но проверяй smile.gif раз на раз не приходится... иногда и вылезает нечто типа "The setup files are corrupted. Please obtain a new copy of the program"..

VersionInfoVersion эт да, имына так и делается... А комменты и авторское право отключены автором...
Подняться вверх 
 
Сообщение #90


10 страниц V  < 1 2 3 4 5 > » 
Быстрый ответ  Ответить  Новая тема 

> Быстрый ответ
Полужирный
Курсив