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

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;

LinkOFF
31-07-2011, 14:54
Доброго времени суток.Как мне сделать так чтоб во время установки выплыло сообщение "Вставьте диск 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. блин одно даже до выбора папки куда установить не пускает

Rikill
31-07-2011, 17:44
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)

Rikill
31-07-2011, 22:19
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

VinTagE
31-07-2011, 23:18
VASYAKRN,
Вот держи (http://rghost.ru/16459961)

VASYAKRN
31-07-2011, 23:50
VinTagE
Спасибо работает!!!!!!

пожалста прикрутите к етому скрипту текстурирувание кнопки http://inno.at.ua/12.7z

Gugle
01-08-2011, 10:58
Доброго времени суток!
Сделал страничку с 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;

MrLOLs
01-08-2011, 14:11
Кто-нибудь знает как ярлыку или 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