PDA

Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 [40] 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188

nik1967
10-02-2011, 19:32
actavir,
это вот installshield (http://www.flexerasoftware.com/products/installshield.htm)

Vitek 07
10-02-2011, 19:33
actavir, http://www.oszone.net/2766

duxa
11-02-2011, 06:29
Вот думаю полезно будет:

/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) уже.

Вообще в шапке мнего полезной информации, которую нужно изучить, прежде, чем задать вопрос.
Отсюда просьба к модераторам - добавьте в шапку строчку с рекомендацией прежде, чем задать вопрос, почитать шапку и родной хелп к Инно Сетап - многие вопросы либо отпадают либо становятся более осмысленными и понятными.

nik1967
11-02-2011, 13:44
Лександер,
Ну тогда проще из русской справки:
{hwnd}
Дескриптор фонового окна инсталлятора.
{wizardhwnd}
Дескриптор окна мастера инсталлятора. Равен '0', если на момент обращения не существует.
Пример: функция SendMessage(const Wnd: HWND; const Msg, WParam, LParam: Longint): Longint;

Gnom_aka_Lexander
11-02-2011, 14:38
nik1967, Согласен, почаще нужно в русскую заглядывать, просто както пару раз не нашел там чего искал, и перестал ей пользоваться :)
ЗЫ Сегодня отдыхаеш еще? мой скрипт не глянеш? по поводу кнопок громкости?

SsSsL
11-02-2011, 23:11
http://s001.radikal.ru/i195/1102/41/f61c1352460f.jpg вот такая ошибка возникает при переходе от процесса установки к странице завершения, ранее на этой странице находились "cheatbox"ы, на запуск программы после нажатия кнопки завершить. Они не нужны , так как теперь на завершающей странице картинка, я убираю в секции [RUN] и происходит ошибка, если оставить то все нормально заканчивается... Подскажите где искать решение или как прописать в коде, чтобы страница завершения не несла ничего кроме картинки? Заранее благодарен.

actavir
13-02-2011, 21:47
Народ, можете помочь сделать в моём (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;

nik1967
15-02-2011, 11:32
Лександер,
Если просто, то:
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