|
Компьютерный форум OSzone.net » Автоматическая установка Windows » Автоматическая установка приложений » Скрипты Inno Setup. Помощь и советы [часть 3] |
|
Скрипты Inno Setup. Помощь и советы [часть 3]
|
Ветеран Сообщения: 1133 |
Профиль | Отправить PM | Цитировать
Внимание! Данная тема предназначена только для обсуждения написания скриптов !
Остальные вопросы, а также последние версии компилятора в теме Inno Setup. Прочие вопросы. Предыдущие ветки обсуждения по ссылкам ниже и в прикреплённых архивах: Inno Setup [все вопросы] часть 1 Inno Setup [все вопросы] часть 2 |
|
------- Отправлено: 00:28, 04-11-2010 |
Ветеран Сообщения: 978
|
Профиль | Сайт | Отправить PM | Цитировать Попал в засаду - у секции Languages нет возможности проверки(Check). оставить родной переключатель языка, который перед установкой - не получится, - при отмене установки из этого окошка, вылезает ошибка, поскольку он пытается завершить процессы, которые не были еще начаты.
Вопрос - можно-ли языки установки переключать из кода? Или завершить работу до InitializeSetup? Все, справился В общем, если нужно завершить инсталл до начала InitializeSetup чтобы не выбивало ошибку : |
------- Последний раз редактировалось Gnom_aka_Lexander, 20-04-2011 в 16:54. Отправлено: 15:18, 20-04-2011 | #1401 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Sotonisto, Как бы тебе его никто не даст. И он меньше напоминает инсталл нвидии. Вот что напоминает нвидию: http://i20.fastpic.ru/big/2011/0420/...a046a4db98.png
|
Отправлено: 19:41, 20-04-2011 | #1402 |
Ветеран Сообщения: 1133
|
Профиль | Отправить PM | Цитировать Цитата Лександер:
При закрытии вы должны проверять, были ли инициализированы ваши доп. функции и если да, то только после этого выполнять их уничтожение. Данный пример, применим только для вашего случая и никакого отношения не имеет к общи вариантам завершения инсталлятора. Суть всего выше изложенного, перед уничтожением чего-либо, чтоб не возникало ошибок, нужно проверить, было ли это создано. |
|
------- Отправлено: 20:45, 20-04-2011 | #1403 |
Пользователь Сообщения: 131
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Lunch927:
|
|
------- Отправлено: 10:52, 21-04-2011 | #1404 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Есть вот такой код
var kmp, gom, mpc, la, pot, pReg, aReg, kReg, gReg, mReg, lReg: Integer; procedure CorCheck; { корректируем отмеченность радиобатонов } var i: Integer; begin for i := pReg to mReg do if WizardForm.ComponentsList.ItemEnabled[i] then begin WizardForm.ComponentsList.ItemEnabled[aReg] := True; WizardForm.ComponentsList.Checked[i] := True; Break; end; end; procedure CheckComponents; var Correct: Boolean; xxx, ffdDesc, splittersDesc, AviSynthDesc : integer; begin Correct := True; xxx := 0; ffdDesc := WizardForm.ComponentsList.Items.IndexOf('{#ffdDesc}'); splittersDesc := WizardForm.ComponentsList.Items.IndexOf('{#splittersDesc}'); AviSynthDesc := WizardForm.ComponentsList.Items.IndexOf('{#AviSynthDesc}'); if (IsComponentSelected('pl\pot') and pot_in_rim) then begin if ( (not ffdexist) and (not IsComponentSelected('ffd')) ) then begin WizardForm.ComponentsList.Checked[ffdDesc]:=True; WizardForm.ComponentsList.ItemEnabled[ffdDesc]:=False; WizardForm.ComponentsList.Repaint; end; if ( (not haaliexists) and (not IsComponentSelected('splitters')) ) then begin WizardForm.ComponentsList.Checked[splittersDesc]:=True; WizardForm.ComponentsList.ItemEnabled[splittersDesc]:=False; WizardForm.ComponentsList.Repaint; end; end else begin WizardForm.ComponentsList.ItemEnabled[splittersDesc]:=True; if not IsComponentSelected('svp') then WizardForm.ComponentsList.ItemEnabled[ffdDesc]:=True; WizardForm.ComponentsList.Repaint; end; //pl/pot if IsComponentSelected('svp') then begin if ( (not ffdexist) and (not IsComponentSelected('ffd')) ) then begin WizardForm.ComponentsList.Checked[ffdDesc]:=True; WizardForm.ComponentsList.ItemEnabled[ffdDesc]:=False; WizardForm.ComponentsList.Repaint; end; if ( (not avs) and (not IsComponentSelected('AviSynth')) ) then begin WizardForm.ComponentsList.Checked[AviSynthDesc]:=True; WizardForm.ComponentsList.ItemEnabled[AviSynthDesc]:=False; WizardForm.ComponentsList.Repaint; end; end else begin WizardForm.ComponentsList.ItemEnabled[AviSynthDesc]:=True; if ((not IsComponentSelected('pl\pot')) and pot_in_rim) then WizardForm.ComponentsList.ItemEnabled[ffdDesc]:=True; WizardForm.ComponentsList.Repaint; end; //svp WizardForm.ComponentsList.Repaint; //#if Full == True { узнаем порядковые номера наших компонентов... } pot := WizardForm.ComponentsList.Items.IndexOf('{#potDesc}'); kmp := WizardForm.ComponentsList.Items.IndexOf('{#kmpDesc}'); gom := WizardForm.ComponentsList.Items.IndexOf('{#gomDesc}'); mpc := WizardForm.ComponentsList.Items.IndexOf('{#mpcDesc}'); la := WizardForm.ComponentsList.Items.IndexOf('{#laDesc}'); aReg := WizardForm.ComponentsList.Items.IndexOf('{#aDesc}'); if pot>=0 then begin pReg := WizardForm.ComponentsList.Items.IndexOf('{#pDesc}'); xxx := xxx + 1; end; if kmp>=0 then begin kReg := WizardForm.ComponentsList.Items.IndexOf('{#kDesc}'); xxx := xxx + 1; end; if gom>=0 then begin gReg := WizardForm.ComponentsList.Items.IndexOf('{#gDesc}'); xxx := xxx + 1; end; if mpc>=0 then begin mReg := WizardForm.ComponentsList.Items.IndexOf('{#mDesc}'); xxx := xxx + 1; end; if la>=0 then begin lReg := WizardForm.ComponentsList.Items.IndexOf('{#lDesc}'); xxx := xxx + 1; end; { сразу проверим, все ли интиресующие компоненты доступны... } //not WizardForm.ComponentsList.Checked[gom] and // if (not WizardForm.ComponentsList.Checked[kmp] and not WizardForm.ComponentsList.Checked[mpc] and not WizardForm.ComponentsList.Checked[gom] and not WizardForm.ComponentsList.Checked[la] and not WizardForm.ComponentsList.Checked[pot]) then begin //WizardForm.ComponentsList.Checked[kReg] := False; WizardForm.ComponentsList.ItemEnabled[kReg]:=False; //WizardForm.ComponentsList.Checked[mReg] := False; WizardForm.ComponentsList.ItemEnabled[mReg]:=False; //WizardForm.ComponentsList.Checked[gReg] := False; WizardForm.ComponentsList.ItemEnabled[gReg]:=False; //WizardForm.ComponentsList.Checked[lReg] := False; WizardForm.ComponentsList.ItemEnabled[lReg]:=False; if pot>=0 then begin if not WizardForm.ComponentsList.Checked[pot] then begin xxx := xxx - 1; end; end; if kmp>=0 then begin if not WizardForm.ComponentsList.Checked[kmp] then begin xxx := xxx - 1; end; end; if mpc>=0 then begin if not WizardForm.ComponentsList.Checked[mpc] then begin xxx := xxx - 1; end; end; if gom>=0 then begin if not WizardForm.ComponentsList.Checked[gom] then begin xxx := xxx - 1; end; end; if la>=0 then begin if not WizardForm.ComponentsList.Checked[la] then begin xxx := xxx - 1; end; end; if xxx = 0 then begin // MsgBox('xxx = ' + inttostr(xxx), mbInformation, MB_OK); WizardForm.ComponentsList.Checked[aReg] := False; WizardForm.ComponentsList.ItemEnabled[aReg] := False; end // end; { в зависимости от того на кого кликнули, производим действия } if pot>=0 then begin if WizardForm.ComponentsList.Checked[pot] then WizardForm.ComponentsList.ItemEnabled[pReg]:=True else WizardForm.ComponentsList.ItemEnabled[pReg]:=False; end; if kmp>=0 then begin if WizardForm.ComponentsList.Checked[kmp] then WizardForm.ComponentsList.ItemEnabled[kReg]:=True else WizardForm.ComponentsList.ItemEnabled[kReg]:=False; end; if mpc>=0 then begin if WizardForm.ComponentsList.Checked[mpc] then WizardForm.ComponentsList.ItemEnabled[mReg]:=True else WizardForm.ComponentsList.ItemEnabled[mReg]:=False; end; if gom>=0 then begin if WizardForm.ComponentsList.Checked[gom] then WizardForm.ComponentsList.ItemEnabled[gReg]:=True else WizardForm.ComponentsList.ItemEnabled[gReg]:=False; end; if la>=0 then begin if WizardForm.ComponentsList.Checked[la] then WizardForm.ComponentsList.ItemEnabled[lReg]:=True else WizardForm.ComponentsList.ItemEnabled[lReg]:=False; end; case WizardForm.ComponentsList.ItemIndex of kmp: ; gom: ; mpc: ; la: ; pot: ; else Correct := False; end; if Correct then CorCheck; { перерисуем лист компонентов } // #endif WizardForm.ComponentsList.Repaint; end; procedure ComponentOnClick(Sender: TObject); begin CheckComponents; if WizardSelectedComponents(False) = '' then WizardForm.NextButton.Enabled:= False else WizardForm.NextButton.Enabled:= True; WizardForm.ComponentsList.Repaint; end; procedure InitializeWizard(); WizardForm.ComponentsList.OnClick := @ComponentOnClick; 1. ставит галки на компоненты если компонент* нужен проге а в системе нету и засвечивает чтобы не сняли, если с компонента* снять выбор - нужные компоненты становятся для свободного выбора. 2. также делает доступным или недоступным пункт для регистрации файлов на плеер, если плеер не выбран пункт регистрации файлов на него просто засвечивается. Вторая часть робит (ну еще бы, Серега делал ), в вот первая сбоит - сразу при запуске {#AviSynthDesc} не засвечен но выбран, если щелкнуть по нему - он засвечивается, а вот {#ffdDesc} галка легко снимается и ставится, пока с четвертого щелчка не застветится. Где я накосячил? для svp нужен ffd и avisynth, для pot нужен ffd и splitters |
------- Последний раз редактировалось R.i.m.s.k.y., 21-04-2011 в 17:22. Отправлено: 17:16, 21-04-2011 | #1405 |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать Sotonisto, Конечно, за вами уже выехали...
|
Отправлено: 17:45, 21-04-2011 | #1406 |
Новый участник Сообщения: 8
|
Профиль | Отправить PM | Цитировать Извините за глупый вопрос как делать оформление на инсталятор*???
|
Отправлено: 18:03, 21-04-2011 | #1407 |
Ветеран Сообщения: 510
|
Профиль | Отправить PM | Цитировать |
Отправлено: 22:10, 21-04-2011 | #1408 |
Ветеран Сообщения: 1640
|
Профиль | Отправить PM | Цитировать Цитата R.i.m.s.k.y.:
|
|
------- Отправлено: 23:28, 21-04-2011 | #1409 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Утилиты - [addon] Inno Setup | CrOsP | Наборы обновлений для Windows XP/2003/Windows 7 | 33 | 11-05-2011 16:03 | |
[архив] Скрипты Inno Setup. Помощь и советы [часть 2] | Serega | Автоматическая установка приложений | 2651 | 08-11-2010 18:34 | |
Inno Setup 5.3.6 | OSZone Software | Новости программного обеспечения | 0 | 15-11-2009 17:30 | |
Скрипты Inno Setup Compiler | QAZAK | Автоматическая установка приложений | 7 | 15-01-2007 17:59 | |
Inno Setup | tradeukraine | Вебмастеру | 3 | 13-06-2006 20:39 |
|