Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
actavir,
это вот installshield (http://www.flexerasoftware.com/products/installshield.htm)
Vitek 07
10-02-2011, 19:33
actavir, http://www.oszone.net/2766
Вот думаю полезно будет:
/SP-
Отключает страницу "Эта программа установит... Вы хотите продолжить?" инсталятора.
Выполнится только если DisableStartupPrompt секции [Setup] равна yes.
/SILENT, /VERYSILENT
Установка в ускоренном или очень ускоренном режиме. При установке в ускоренном режиме
окно мастера и фоновое окно мастера не отображаются, отображается только окно прогресса.
При очень ускоренной установке окно прогресса тоже не отображается. Остальная установка
проходит как обычно - отображаются сообщения об ошибках в ходе установки, страница
приветствия (если ее отображение не отменено директивой DisableStartupPrompt или
параметром '/SP-' командной строки).
Если после установки необходима перезагрузка, команды '/NORESTART' не дано и установка
проходит в ускоренном режиме, появится сообщение "Перезагрузить компьютер?". Если режим
установки очень ускоренный, система перезагрузится не спрашивая.
/LOG
Указывает инсталятору создать log-файл в папке TEMP для подробного отчета о действиях
и событиях в секции [Run], предпринятых в ходе установки. Применяется при отслеживании
ошибок. Например, если вы подозреваете, что файл не был удален, хотя должен был,
log-файл сообщит, что файл былдействительно пропущен и почему.
log-файлу присваивается уникальное имя на базе текущей даты. (Существующие файлы не
перезаписываются и не дополняются).
Информация, содержащаяся в log-файле, техническая и поэтому не может быть понята
пользователем.
/LOG="filename"
Параметр похож на /LOG, но в отличие от него позволяет указать фиксированный
путь/имя файла для log-файла. Если файл с указанным именем уже существует, он будет
заменен. Если файл не может быть создан, установка прервется и выдаст сообщение
об ошибке.
/NOCANCEL
Не дает пользователю прервать установку, отключая кнопку Отменить и игнорируя клики на
кнопке Закрыть. Используется в комбинации с '/SILENT' или '/VERYSILENT'.
/NORESTART
Указывает инсталятору не перезагружать компьютер даже если это необходимо.
/RESTARTEXITCODE=exit code
Задает инсталятору код, который он должен возвратить, если необходима перезагрузка.
Используется с '/NORESTART'.
См. также Коды выхода инсталятора. (кому интерестно, могу выложить или же доступно в хелпе)
/LOADINF="filename"
Указывает инсталятору загрузить параметры установки из указанного файла после проверки
командной строки. Этот файл может быть подготовлен с помощью '/SAVEINF='command.
Не забудьте ставить кавычки при использовании имен, содержащих пробелы.
/SAVEINF="filename"
Указывает инсталятору сохранять параметры установки в указанный файл.
Не забудьте ставить кавычки при использовании имен, содержащих пробелы.
/LANG=language
Задает используемый язык. language задает имя языка, заданного в параметре секции
[Languages]. При использовании параметра /LANG появляется диалог Выбор языка установки.
/DIR="x:\dirname"
Меняет имя папки, заданное по умолчанию, на странице Выбор папки назначения.
Должен быть задан полный путь.
/GROUP="folder name"
Меняет имя папки на странице Выбор папки меню Пуск. Если директива
DisableProgramGroupPage секции [Setup] равна yes, этот параметр командной строки
игнорируется.
/NOICONS
Указывает инсталятору проверять, выбрана ли команда Не создавать значков на странице
Выбор папки меню Пуск.
/COMPONENTS="comma separated list of component names"
Меняет выбраные по умолчанию компоненты. В этом случае параметр командной строки
указывает инсталятору менять тип установки на Выборочный.
/PASSWORD=password Задает пароль. Если не указана директива Password секции [Setup],
этот параметр игнорируется. Если введен неправильный пароль, параметр
также игнорируется.
А лучше нужное приложение запустить с параметром помощь (справка) и посмотреть какие параметры она поддерживает)
Влад2012
11-02-2011, 11:43
Подскажите, пожалуйста, что делают константы {hwnd} и {wizardhwnd}?
Gnom_aka_Lexander
11-02-2011, 12:30
Влад2012,
Из справки:
{hwnd}
(Special-purpose) Translates to the window handle of the Setup program's background window.
{wizardhwnd}
(Special-purpose) Translates to the window handle of the Setup wizard window. This handle is set to '0' if the window handle isn't available at the time the translation is done.
Кидаем в гугл и видим это:
{HWND}
(специального назначения) переводит в окно ручкой фоновом окне программы установки.
{} wizardhwnd
(специального назначения) переводится как дескриптор окна в окно мастера установки. Эта ручка установлена в "0", если дескриптор окна не доступны на момент перевода делается.
duxa,
То, что ты дал, актуально только для Инно и есть в шапке (http://forum.oszone.net/post-452192-33.html), и более честно направить человека туда, а про то, как выцепить команды я тоже говорил (http://forum.oszone.net/post-1609574-785.html) уже.
Вообще в шапке мнего полезной информации, которую нужно изучить, прежде, чем задать вопрос.
Отсюда просьба к модераторам - добавьте в шапку строчку с рекомендацией прежде, чем задать вопрос, почитать шапку и родной хелп к Инно Сетап - многие вопросы либо отпадают либо становятся более осмысленными и понятными.
Лександер,
Ну тогда проще из русской справки:
{hwnd}
Дескриптор фонового окна инсталлятора.
{wizardhwnd}
Дескриптор окна мастера инсталлятора. Равен '0', если на момент обращения не существует.
Пример: функция SendMessage(const Wnd: HWND; const Msg, WParam, LParam: Longint): Longint;
Gnom_aka_Lexander
11-02-2011, 14:38
nik1967, Согласен, почаще нужно в русскую заглядывать, просто както пару раз не нашел там чего искал, и перестал ей пользоваться :)
ЗЫ Сегодня отдыхаеш еще? мой скрипт не глянеш? по поводу кнопок громкости?
http://s001.radikal.ru/i195/1102/41/f61c1352460f.jpg вот такая ошибка возникает при переходе от процесса установки к странице завершения, ранее на этой странице находились "cheatbox"ы, на запуск программы после нажатия кнопки завершить. Они не нужны , так как теперь на завершающей странице картинка, я убираю в секции [RUN] и происходит ошибка, если оставить то все нормально заканчивается... Подскажите где искать решение или как прописать в коде, чтобы страница завершения не несла ничего кроме картинки? Заранее благодарен.
Народ, можете помочь сделать в моём (http://forum.oszone.net/attachment.php?attachmentid=59679&stc=1&d=1297622806) скрипте все операции по распаковке и т.д. (всего 4400%) поместить на один тулбар?
Помогите плиз!!!!
Gnom_aka_Lexander
14-02-2011, 10:08
actavir, Тебе поможет спаравка к ИсДрне :) , которая к най прилагается, там четко написано - первая установка - тестовый прогон, проценты зашкаливают - так и должно быть, потом возле сетапа появляется файлик records.inf, который нужно включить в инсталл, а в шапке скрипта дописать #define records
В твоем случае - records.inf кладеш рядом со скриптом, а в шапке скрипта убираеш точку с запятой перед #define records и компилируеш заново.
И я точно помню, что уже отвечал здесь на подобный вопрос.
Leka_651
14-02-2011, 16:32
Добрый день!
Делаю сетап для установки программы, при этом можно выбрать какие компоненты установить. Этот сетап также можно использовать как и апдейт. Проблема в следующем: нужно проанализировать каталог, куда будет поставлена программа, и в окошке выбора компонент автоматом проставить галочки, рядом с теми компонентами, которые уже установлены у клиента.
Подскажите, пожалуйста, как это можно сделать.
Версия Inno Setup 5.1.14 (ISPP 5.1.10.0)
Gnom_aka_Lexander
14-02-2011, 16:48
Leka_651, Если прога уже ставилась с помощью Инно и присвоенный тобой либо взятый оригинальный GuID не изменен то выбор компонентов автоматом будет выставлен тот, который был при первой установке.
Важно только, чтоб названия (не описания) компонентов совпадали с предидущей установкой.
Leka_651
14-02-2011, 16:53
Лександер, это так. Но мне нужно чтобы поставились галочки только у тех компонент, которые уже находятся в выбранном пользователем каталоге для установки, не зависимо от того при прошлой установке выбирались они или нет.
Gnom_aka_Lexander
14-02-2011, 17:43
Leka_651, тогда вот:
Function isHLPinstalled : boolean;
var
VersionMS0, VersionLS0 : Cardinal; b1, b2 ,b3, b4 : boolean;
begin
b1 := False; b2 := False; b3 := False; b4 := False;
GetVersionNumbers(ExpandConstant('{win}\winhlp32.exe'), VersionMS0, VersionLS0);
if (VersionLS0 >= 498089986) then b1 := True;
if (FileExists(ExpandConstant('{sys}\ftlx041e.dll'))) then b2 := True;
if (FileExists(ExpandConstant('{sys}\ftlx0411.dll'))) then b3 := True;
if (FileExists(ExpandConstant('{sys}\fftsrch.dll'))) then b4 := True;
if (b1 or b2 or b3 or b4) then Result := True else Result := False
end;
Смысл общий, думаю, понятен, поправить под себя и дописать процедуру, чтото вроде:
if isHLPinstalled then компонент выбран, полностью код расписать помогут, думаю, более сведущие знатоки. :)
Но если файлов очень много, то незнаю, не знаю... :)
Нужно смотреть, если компонента - отдельная прога, то проще выловить ее из реестра.
Leka_651
14-02-2011, 18:00
Лександер, спасибо. пойду попробую.
R.i.m.s.k.y.
15-02-2011, 09:41
if isHLPinstalled »
Ну раз вставил то хоть бы написал, что код проверяет установлено ли обновление для Win7 для чтения hlp файлов.
Но мне нужно чтобы поставились галочки только у тех компонент, которые уже находятся в выбранном пользователем каталоге для установки »
Примерно так:
[Components]
# define app01 "прога 1"
Name: app\app-01; Description: {#app01}; Flags: checkablealone dontinheritcheck
[_Code]
function appexist(path:string): Boolean;
begin
if (FileExists(path)) then result := true else Result := false;
end;
procedure InitializeWizard();
Begin
if appexist(путь к файлу проги) then WizardForm.ComponentsList.Checked[WizardForm.ComponentsList.Items.IndexOf('{#app01}')]:=True;
end;
Можно усложнить процедуру проверки на проверку всех файлов в каталоге, но я думаю можно ограничиться экзешником.
Gnom_aka_Lexander
15-02-2011, 10:22
R.i.m.s.k.y., А я и написал, что нужно под свои нужды править :) А знатококв последнее время нету...
Может подскажеш - действие наведения мышки на кнопку, чекбокс или активный лейбл - как называется?
Чтобы привязать к етому действию еще одно действие :)
R.i.m.s.k.y.
15-02-2011, 10:31
Может подскажеш - действие наведения мышки на кнопку, чекбокс или активный лейбл - как называется? »
наведения - не знаю, знаю клик
[_Code]
procedure ComponentOnClick(Sender: TObject);
begin
if WizardSelectedComponents(False) = '' then WizardForm.NextButton.Enabled:= False else WizardForm.NextButton.Enabled:= True;
end;
procedure InitializeWizard();
begin
WizardForm.ComponentsList.OnClick := @ComponentOnClick
end;
Лександер,
Если просто, то:
OnClick:=
OnMouseDown:=
OnMouseUp:=
OnMouseMove:=
OnMouseLeave:=Если через botva2.dll, то:
procedure BtnSetEvent(h :HWND; EventID :integer; Event :Longword); external 'BtnSetEvent@{tmp}\botva2.dll stdcall delayload';
//устанавливает событие для кнопки
//h - хэндл кнопки (результат возвращенный BtnCreate)
//EventID - идентификатор события, заданный константами BtnClickEventID, BtnMouseEnterEventID, BtnMouseLeaveEventID, BtnMouseMoveEventID
//Event - адрес процедуры выполняемой при наступлении указанного события
//пример использования - BtnSetEvent(hBtn, BtnMouseMoveEventID, WrapBtnCallback(@BtnClick,1));
Leka_651
15-02-2011, 17:37
R.i.m.s.k.y., а в какой момент будет выполняться InitializeWizard??
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.