Показать полную графическую версию : Скрипты Inno Setup. Помощь и советы [часть 3]
Bit of perfect
31-07-2011, 14:27
insombia,
Спс
Я его вставил в скрипт
все комилится без ошибок
но
в установке ничего не почему то((
R.i.m.s.k.y.
31-07-2011, 14:41
Как сделать чтобы установку нельзя было продолжить пока не выберется компонент? »
function NextButtonClick(CurPageID: Integer): Boolean;
begin
Result:= True;
if WizardSelectedComponents(False) = '' then
begin
//MsgBox('Ни один из компонентов не выбран!', mbInformation, MB_OK);
Result:= False;
end;
end;
Доброго времени суток.Как мне сделать так чтоб во время установки выплыло сообщение "Вставьте диск 2, содержащий файл Data2.bin и дождитесь его инициализации" вместо обычного окна с выбором папки со 2-ым диском.Скрипт Isdone
И как отключить кнопку "Отмена" в процессе установки?
Bit of perfect
31-07-2011, 15:17
Спс
Я его вставил в скрипт
все комилится без ошибок
но
в установке ничего не почему то(( »
R.i.m.s.k.y.
31-07-2011, 15:46
как отключить кнопку "Отмена" в процессе установки »
[Setup]
AllowCancelDuringInstall=false
по первому вопросу
Открываем нужный языковой файл в формате .isl* и находим там интересующий нас текст, перед текстом будет переменная, которая и отвечает за отображаемый текст. Заносим эту переменную в свой скрипт в секцию [Messages]. В итоге попробуй:
[Messages]
SelectDiskLabel2=Твой текст
* - этот файл находится в папке установки инно\Languages\
ilyhakz001
31-07-2011, 15:50
Как прописать в скрипте чтобы дерекст устанавливался, а не обнавлялся!!
ilyhakz001 »
Извеняюсь уже нашел!!!!!
insombia
31-07-2011, 16:29
R.i.m.s.k.y. блин одно даже до выбора папки куда установить не пускает
VASYAKRN, ты и тут срать будешь?! хватит уже!
No4noylis
31-07-2011, 18:26
insombia, попробуй это условие if WizardSelectedComponents(False) = '' then заменить на это
if (CurPageID = wpSelectComponents) and WizardSelectedComponents(False) = '' then
VASYAKRN
31-07-2011, 19:19
скачать (http://inno.at.ua/load/utility/game_stripts/assasins_creed_bratherhood_1_1_1_0_isdone0_6_by_vasyakrn/9-1-0-160) http://inno.at.ua/_ld/1/160.jpg
VASYAKRN
31-07-2011, 21:45
http://inno.at.ua/_fr/0/9941474.jpg
как в isdone 0.6 на кнопку "отмена" нанести изображение
єсли можна сделайте ето в етом скрипте
Скрипт (http://inno.at.ua/images/Assasins_Creed_Bratherhood_1.1_ISDone_0.6.iss)
архив (http://inno.at.ua/_ld/1/160_Assasins_Creed_.7z)
VASYAKRN, так же как и остальные кнопки текстурировал, кнопка отмены в исдоне называется "MyCancelButton"
VASYAKRN
31-07-2011, 22:49
Rikill ти не мог би сделать ето в етом скрипте
http://www.oszone.net/go.php?url=http://inno.at.ua/images/Assasins_Creed_Bratherhood_1.1_ISDone_0.6.iss
VASYAKRN,
Вот держи (http://rghost.ru/16459961)
VASYAKRN
31-07-2011, 23:50
VinTagE
Спасибо работает!!!!!!
пожалста прикрутите к етому скрипту текстурирувание кнопки http://inno.at.ua/12.7z
Доброго времени суток!
Сделал страничку с combobox:
PageLevel := CreateCustomPage(wpWelcome, 'Уровень сложности', 'Выберите уровень сложности установки');
ComboBoxLevel := TNewComboBox.Create(PageLevel);
ComboBoxLevel.Width := PageLevel.SurfaceWidth;
ComboBoxLevel.Parent := PageLevel.Surface;
ComboBoxLevel.Style := csDropDownList;
ComboBoxLevel.Items.Add('Стандарт');
ComboBoxLevel.Items.Add('Эксперт');
ComboBoxLevel.ItemIndex := 0;
Хочу, что бы при выборе "Стандарт" появлялось одно окно, а при выборе "Эксперт" другое окно. Как понял из help надо делать "пропусками отображения окон" (Если правильно понял) используя следующую функцию
function ShouldSkipPage(PageID: Integer): Boolean;
begin
if (PageID = PageTest_0.ID) and ({значение combobox} == 0) then
Result := True
else if (PageID = PageTest_1.ID) and ({значение combobox} == 1) then
Result := True
else
Result := False;
end;
, но как выудить значение из Combobox нигде не нашел.
Подскажите правильно ли я выбрал функцию для отображения разных вариантов развития событий и как можно вытащить выбранное значение в comboBox?
Как вытащить данные из comboBox нашел.
Остался вопрос с правильностью подхода к различным вариантам развития событий.
No4noylis
01-08-2011, 12:31
Neutron,
Дело в том что когда ты добавил панель, ты скрыл OuterNotebook и InnerNotebook на которых находились все компоненты всех страниц. Ты можешь вернуть все это удалив из скрипта OuterNotebook.Hide, InnerNotebook.Hide, Bevel.Hide, но тогда не будет видна панель т.к. она на WizardForm, и тебе нужно будет создавать ее на каждой странице указывая для лейбов parent:=WizardForm.*****Page. Или ты можешь вернуть все стандартные компоненты указав для них parent:=WizardForm, а затем в процедуру CurPageChanged добавить процедуры HideComponents, и ShowComponents. в HideComponents ты специально скрываешь все лейбы которые установил на WizardForm, а затем в процедуре ShowComponents ты снова вернешь их для каждой страници. Именно так сделали в скрипте NFS Undercover, который в шапке.
No4noylis
01-08-2011, 13:46
Neutron,
На самом деле можно не писать:
WizardForm.InnerNotebook.Show;
WizardForm.OuterNotebook.Show;
А достаточно удалить:
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
Просто по умалчиванию InnerNotebook и OuterNotebook УЖЕ включены и писать для них .Show не нужно, просто убери их скрытие .Hide
А вот небольшие примеры:)
у тебя создана панель:
procedure CreateStatusPanel;
begin
Welcome := TLabel.Create(WizardForm);
with Welcome do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(100), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Welcome}');
Parent := WizardForm;
end;
Catalogue := TLabel.Create(WizardForm);
with Catalogue do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(130), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Catalogue}');
Parent := WizardForm;
end;
StartMenu := TLabel.Create(WizardForm);
with StartMenu do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(160), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:StartMenu}');
Parent := WizardForm;
end;
Tasks := TLabel.Create(WizardForm);
with Tasks do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(190), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Task}');
Parent := WizardForm;
end;
Installing := TLabel.Create(WizardForm);
with Installing do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(220), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Installing}');
Parent := WizardForm;
end;
Finish := TLabel.Create(WizardForm);
with Finish do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(250), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Finish}');
Parent := WizardForm;
end;
end;
Для нее указано расположение Parent := WizardForm, НО сверху WizardForm у тебя есть InnerNotebook и OuterNotebook со всеми стандартными надписями поэтому панели не видно. Чтобы панель была видно у тебя в скрипте добавлено
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
Чтоб вернуть стандартные надписи можно:
1). InnerNotebook и OuterNotebook скрыты и стандартных надписей не видно. Тут можно сделать так:
удалить
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
А потом чтоб была видна панель сделать нужно все ее лейбы перенести на каждую страницу (Parent := WizardForm.WelcomePage; Parent := WizardForm.SelectDirPage; и так далее)
Вот пример для первых двух страниц:
////////////////// welcomepage ///////////////////////////////////
procedure CreateStatusPanel;
begin
Welcome := TLabel.Create(WizardForm);
with Welcome do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(100), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Welcome}');
Parent := WizardForm.welcomepage;
end;
Catalogue := TLabel.Create(WizardForm);
with Catalogue do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(130), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Catalogue}');
Parent := WizardForm.welcomepage;
end;
StartMenu := TLabel.Create(WizardForm);
with StartMenu do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(160), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:StartMenu}');
Parent := WizardForm.welcomepage;
end;
Tasks := TLabel.Create(WizardForm);
with Tasks do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(190), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Task}');
Parent := WizardForm.welcomepage;
end;
Installing := TLabel.Create(WizardForm);
with Installing do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(220), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Installing}');
Parent := WizardForm.welcomepage;
end;
Finish := TLabel.Create(WizardForm);
with Finish do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(250), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Finish}');
Parent := WizardForm.welcomepage;
end;
///////////////////// welcome page /////////////////////////////////
/////////////////// selectdirpage /////////////////////////////////////
Welcome := TLabel.Create(WizardForm);
with Welcome do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(100), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Welcome}');
Parent := WizardForm.selectdirpage ;
end;
Catalogue := TLabel.Create(WizardForm);
with Catalogue do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(130), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Catalogue}');
Parent := WizardForm.selectdirpage ;
end;
StartMenu := TLabel.Create(WizardForm);
with StartMenu do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(160), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:StartMenu}');
Parent := WizardForm.selectdirpage ;
end;
Tasks := TLabel.Create(WizardForm);
with Tasks do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(190), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Task}');
Parent := WizardForm.selectdirpage ;
end;
Installing := TLabel.Create(WizardForm);
with Installing do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(220), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Installing}');
Parent := WizardForm.selectdirpage ;
end;
Finish := TLabel.Create(WizardForm);
with Finish do begin
AutoSize:=False;
SetBounds(ScaleX(13), ScaleY(250), ScaleX(114), ScaleY(20));
Transparent:=True;
Font.Size:= 10;
Font.Style:=[fsBold];
Caption := ExpandConstant('{cm:Finish}');
Parent := WizardForm.selectdirpage ;
end;
end;
/////////////////// selectdiepage //////////////////////////////////
Как видишь сильно увеличиваеться размер кода, но так проще (Соответственно для каждой страници нужному лейбу делаешь нужный цвет).
2. А можно сделать по другому (Я так делаю):
оставляешь:
WizardForm.InnerNotebook.Hide;
WizardForm.OuterNotebook.Hide;
А потом для всех стандартных надписей пишешь
with WizardForm do begin
WizardForm.WelcomeLabel1.Parent:=WizardForm;
WizardForm.WelcomeLabel2.Parent:=WizardForm;
WizardForm.SelectDirLabel.Parent:=WizardForm;
******
end;
ну и так дальше. Теперь они ВСЕ ВСМЕСТЕ будут у тебя на ВСЕХ страницах.
Чтоб это исправить мы сначала их скрываем:
procedure HideCocmponents:
WizardForm.WelcomeLabel1:=Hide;
WizardForm.WelcomeLabel2:=Hide;
WizardForm.SelectDirLabel:=Hide;
********
а потом для КАЖДОЙ страници возобноволяем:
procedure ShowComponents(CurPageID: Integer);
begin
case CurPageID of
wpWelcome:
begin
WizardForm.WelcomeLabel1:=Show;
WizardForm.WelcomeLabel2:=Show;
end;
wpSelectDir:
begin
WizardForm.SelectDirLabel:=Show;
end;
end;
end;
...ну и так далее, я думаю смысл понятен.
И наконец мы добавляем наши процедуры в CurPageChanged:
procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
ShowComponents(CurPageID);
end;
Кто-нибудь знает как ярлыку или exe файлу в Windows 7 поставить атрибут "Выполнять эту программу от имени администратора".
http://i26.fastpic.ru/big/2011/0801/c9/71d2f58efc86dc67fbeaa37ad63cd4c9.png
Решение:
[Registry]
Root: HKCU; SubKey: Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers; ValueType: string; ValueName: {app}\Compil32Ex.exe; ValueData: RUNASADMIN; Flags: uninsdeletevalue uninsdeletekeyifempty
No4noylis
01-08-2011, 17:08
Neutron,
Да, для нужна InitializeWizard:
procedure InitializeWizard:
begin
with WizardForm do begin
WizardForm.WelcomeLabel1.Parent:=WizardForm;
WizardForm.WelcomeLabel2.Parent:=WizardForm;
WizardForm.SelectDirLabel.Parent:=WizardForm;
******
end;
end;
А процедуры HideCocmponents и ShowComponents просто добавляются в код, и прописываются в процедуре CurPageChanged (на всякий случай поясняю, для них НЕ нужна InitializeWizard, они пишутся в коде добавляються в CurPageChanged)
procedure CurPageChanged(CurPageID: Integer);
begin
HideComponents;
ShowComponents(CurPageID);
end;
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.
Available in ZeroNet 1osznRoVratMCN3bFoFpR2pSV5c9z6sTC