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
27-07-2011, 16:04
nik1967, ты не знаешь как мне исправить вот это »
Знаю var
PageNameLabel,PageDescriptionLabel: TLabel;

//***************************************** [ начало 497 58 изображения ] *********************************************//

PageNameLabel:= TLabel.Create(WizardForm);
with PageNameLabel do begin
Left:= WizardForm.PageNameLabel.Left;
Top:= WizardForm.PageNameLabel.Top;
Width:= WizardForm.PageNameLabel.Width;
Height:= WizardForm.PageNameLabel.Height;
AutoSize:= False;
WordWrap:= True;
Font.Name:= WizardForm.PageNameLabel.Font.Name;
Font.Style:= [fsBold];
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;

PageDescriptionLabel:= TLabel.Create(WizardForm);
with PageDescriptionLabel do begin
Left:= WizardForm.PageDescriptionLabel.Left-12;
Top:= WizardForm.PageDescriptionLabel.Top;
Height:= WizardForm.PageDescriptionLabel.Height;
Width:= ScaleX(260);
AutoSize:= False;
WordWrap:= True;
Font.Name:= WizardForm.PageDescriptionLabel.Font.Name;
Transparent:= True;
Parent:= WizardForm.MainPanel;
end;

with WizardForm do begin
PageNameLabel.Hide;
PageDescriptionLabel.Hide;
with MainPanel do begin
with WizardSmallBitmapImage do begin
Left:= ScaleX(0);
Top:= ScaleY(0);
Width:= Mainpanel.Width;
Height:= MainPanel.Height;
end;
end;
end;

//****************************************** [конец 497 58 изображения ] **********************************************//

Procedure CurPageChanged(CurPageID: Integer);
Begin
PageNameLabel.Caption:= WizardForm.PageNameLabel.Caption;
PageDescriptionLabel.Caption:= WizardForm.PageDescriptionLabel.Caption;
end;

insombia
27-07-2011, 16:09
nik1967 а на мой вопрос ответ знаешь?

LinkOFF
27-07-2011, 16:12
nik1967, я че-то в свой скрипт вставить не могу.Не поможешь?

Gnom_aka_Lexander
27-07-2011, 16:31
А как сделать чтобы не писалось распаковывается там какой то файл а просто распаковка файлов а какие именно чтобы не указывалось? »
Можно так:
procedure CurPageChanged(CurPageID: Integer);
begin
WizardForm.FilenameLabel.Caption := WizardForm.StatusLabel.Caption;
end;

insombia
27-07-2011, 16:31
подскажите как сделать если есть 2 одинаковых кода CurPageChanged (CurPageID: Integer);
как сделать чтобы можно было с ним как и с procedure InitializeWizard(); делать типа
procedure InitializeWizard();
begin
InitializeWizard1(); а то уже давно этим занимался

LinkOFF
27-07-2011, 16:33
А как через Inno Setup AutoRun делать?

insombia
27-07-2011, 16:34
LinkOFF Need for Speed™ Undercover.iss v 2.2 скачай там есть пример

Gnom_aka_Lexander
27-07-2011, 16:36
подскажите как сделать если есть 2 одинаковых кода CurPageChanged (CurPageID: Integer); »
CurPageChanged (CurPageID: Integer);
begin
CurPageChanged1 (CurPageID);
CurPageChanged2 (CurPageID);
end; Но лучше сразу в общей процедуре писать, в плане производительности и исключения ошибок. При объединении процедур, почти неизбежна ситуация, когда одни и те-же условия обрабатываются по нескульку раз, что приводит к тормозам. А если эти условия используют одинаковые глобальные переменные, то ошибки просто неизбежны.

insombia
27-07-2011, 16:44
как сделать чтобы лого было тоже прозрачный а не таким http://images.bcm.net.ua/images/34556850958331245628.jpg использую iswin7

valyok666
27-07-2011, 17:48
доброго времени суток=)кто подскажет код на создание такого лого скриншот (http://s51.radikal.ru/i131/1107/31/5c2dec9660b7.jpg)

No4noylis
27-07-2011, 18:28
insombia, вот что нашел http://rghost.ru/8029941

insombia
27-07-2011, 20:08
valyok666 через inno setup gamescript generator по моему

Rikill
27-07-2011, 21:22
valyok666, лого картинка (http://forum.ru-board.com/topic.cgi?forum=5&topic=35146&start=1299&limit=1&m=3#1) и текстовое лого

procedure InitializeWizard();
var
txt: tlabel;
begin
txt:=TLabel.Create(WizardForm)
txt.Left:=10;
txt.Top:=330;
txt.Font.Color:=clgray;
txt.Caption:='Forum OSZone';
txt.Font.Style:= [fsBold];
txt.Font.Name= 'georgia';
txt.Parent:=WizardForm;
end;

valyok666
27-07-2011, 21:29
txt.Font.Name= 'georgia';
на эту строчку ругается

LinkOFF
27-07-2011, 21:36
txt.Font.Name= 'georgia';
на эту строчку ругается »
это шрифт, поставь например Times New Roman

No4noylis
27-07-2011, 22:30
txt.Font.Name= 'georgia'; »
Ошибочка,
Вот как нужно, а от имени шрифта не зависит:

txt.Font.Name:= 'georgia';



Народ!!!! У кого есть кнопочки (желательно .Png), MusucButton.Png, чекбоксы, панели ну еще какие другие картиночки, можете скинуть???? Плиз :)

insombia
27-07-2011, 23:10
No4noylis в Need for Speed™ Undercover.iss v 2.2 есть кажись

У кого то есть Inno Setup Form Designer а то здесь ссылка битая

ssv14
27-07-2011, 23:16
Мне помогли добавить к скрипту распаковки OGG еще и распаковку WV.


[Code]
function StringToArray(Text, Cut: String): array of String;

var i, k: Integer;
begin
SetArrayLength(Result, 0);
if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк

Repeat k:=Pos(Cut,Text);
if k = 1 then begin Delete(Text, 1, Length(Cut)); CONTINUE
end;
SetArrayLength(Result, GetArrayLength(Result) +1);
i:=GetArrayLength(Result)-1;
if k = 0 then
Result[i]:=Text
else begin
Result[i]:= Copy(Text, 1, k -1);
Delete(Text, 1, Length(Result[i]) + Length(Cut));
end;
Until Length(Text) * k = 0;
end;

procedure FindFiles(FromDir: String; Mask: String);
var FindResult: Boolean;
FSR, DSR: TFindRec;
S: String;
begin
FindResult:=FindFirst(AddBackslash(FromDir)+Mask, FSR);
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S:= S + AddBackslash(fromDir) + FSR.Name +'|';
end;
FindResult:= FindNext(FSR);
end;

FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR);
while FindResult do begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin
FindFiles(AddBackSlash(FromDir)+ DSR.Name, Mask);
end;
FindResult:= FindNext(DSR);
end;

FindClose(FSR);
FindClose(DSR);
end;


//-------Начало----распаковка OGG------------------------------------------------
procedure RecodeOgg;
var Files: Array of String;
CurFile, S: String;
ResultCode, n: integer;
begin
FindFiles(ExpandConstant('{app}\hl2\sound\'), '*.ogg'); //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|'); //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов

for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n];
StringChange(CurFile, AddBackslash(ExpandConstant('{app}\hl2\sound\')), '');
Exec(ExpandConstant('{app}\hl2\sound\oggdec.exe'), '-Q '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode); //Для каждого файла запускаем декодер
DeleteFile(Files[n]); //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;

DeleteFile(ExpandConstant('{app}\hl2\sound\oggdec.exe'));
end;
//-------Конец----распаковка OGG------------------------------------------------



//-------Начало----распаковка WV ------------------------------------------------
procedure RecodeWV;
var Files: Array of String;
CurFile, S: String;
ResultCode, n: integer;
begin
FindFiles(ExpandConstant('{app}\hl2\sound\'), '*.wv'); //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|'); //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов

for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n];
StringChange(CurFile, AddBackslash(ExpandConstant('{app}\hl2\sound\')), '');
Exec(ExpandConstant('{app}\hl2\sound\wvunpack.exe'), '-t -q -y '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode); //Для каждого файла запускаем декодер
DeleteFile(Files[n]); //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;

DeleteFile(ExpandConstant('{app}\hl2\sound\wvunpack.exe'))
end;
//-------Конец----распаковка WV ------------------------------------------------



procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
WizardForm.ProgressGauge.Position := 0;
WizardForm.StatusLabel.Caption := 'Decompressing audio files, please wait...';
RecodeOgg;
RecodeWV;
end;
end;


Компиляция проходит успешно, но не отрабатывает ни распаковку OGG ни WV. после распаковки файлов идет завершение установки . Успел заметить, после распаковки файлов, пишет: сохранение списка, Decompressing audio.. (в скрипте для OGG после этого шла распаковка файлов OGG).


[Setup]
AppName=RecodeOgg
AppVerName=RecodeOgg
OutputDir=.
OutputBaseFilename=RecodeOgg
DefaultDirName={pf}\RecodeOgg
AppendDefaultDirName=False
DisableDirPage=True

[files]
Source: oggdec.exe; DestDir: {app};
Source: oggs\*; DestDir: {app};
Source: oggs\*; DestDir: {app}\Data;

[code]
var
Files: Array of String;
S: String;
n: Integer;

Function StringToArray(Text, Cut: String): array of String; var i, k: Integer;
Begin
SetArrayLength(Result, 0); if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк
Repeat k:= Pos(Cut,Text);
if k = 1 then begin Delete(Text, 1, Length(Cut)); CONTINUE
end;
SetArrayLength(Result, GetArrayLength(Result) +1); i:= GetArrayLength(Result) -1;
if k = 0 then
Result[i]:=Text
else begin
Result[i]:= Copy(Text, 1, k -1); Delete(Text, 1, Length(Result[i]) + Length(Cut));
end;
Until Length(Text) * k = 0;
End;

procedure FindFiles(FromDir: String; Mask: String);
var FSR, DSR: TFindRec; FindResult: Boolean;
begin
FindResult:= FindFirst(AddBackslash(FromDir)+Mask, FSR)
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S:= S + AddBackslash(fromDir) + FSR.Name +'|';
end;
FindResult:= FindNext(FSR);
end;
FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR)
while FindResult do begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin
FindFiles(AddBackSlash(FromDir)+ DSR.Name, Mask)
end;
FindResult:= FindNext(DSR);
end;
FindClose(FSR); FindClose(DSR)
end;

procedure RecodeOgg;
var ResultCode: integer; CurFile: String;
begin
FindFiles(ExpandConstant('{app}'), '*.ogg') //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|') //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов
for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n]
StringChange(CurFile, AddBackslash(ExpandConstant('{app}')), '')
Exec(ExpandConstant('{app}\oggdec.exe'), '-Q '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode) //Для каждого файла запускаем декодер
DeleteFile(Files[n]) //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;
DeleteFile(ExpandConstant('{app}\oggdec.exe'))
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
WizardForm.ProgressGauge.Position := 0;
WizardForm.StatusLabel.Caption := 'Извлечение аудио файлов...';
RecodeOgg;
end;
end;


А тут завершение (файлы oggdec и wvunpack удаляются). Кажется список файлов не строится. Ребята, кто-то может помочь?

Rikill
28-07-2011, 00:01
insombia, в сборке Inno Ultra от Лександера и в рестулзовской версиях уже встроен дизайнер

зы с шрифтом ошибся, прошу прощения

ssv14
28-07-2011, 00:15
Все, получилось. Теперь есть распаковка и OGG и WV.


[Code]
var
Files: Array of String;
S: String;
n: Integer;

function StringToArray(Text, Cut: String): array of String;
var i, k: Integer;

begin
SetArrayLength(Result, 0);
if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк

Repeat k:=Pos(Cut,Text);
if k = 1 then begin Delete(Text, 1, Length(Cut)); CONTINUE
end;
SetArrayLength(Result, GetArrayLength(Result) +1);
i:=GetArrayLength(Result)-1;
if k = 0 then
Result[i]:=Text
else begin
Result[i]:= Copy(Text, 1, k -1);
Delete(Text, 1, Length(Result[i]) + Length(Cut));
end;
Until Length(Text) * k = 0;
end;

procedure FindFiles(FromDir: String; Mask: String);
var FindResult: Boolean;
FSR, DSR: TFindRec;

begin
FindResult:=FindFirst(AddBackslash(FromDir)+Mask, FSR);
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S:= S + AddBackslash(fromDir) + FSR.Name +'|';
end;
FindResult:= FindNext(FSR);
end;

FindResult:= FindFirst(AddBackslash(FromDir)+ '*.*', DSR);
while FindResult do begin
if ((DSR.Attributes and FILE_ATTRIBUTE_DIRECTORY) = FILE_ATTRIBUTE_DIRECTORY) and not ((DSR.Name = '.') or (DSR.Name = '..')) then begin
FindFiles(AddBackSlash(FromDir)+ DSR.Name, Mask);
end;
FindResult:= FindNext(DSR);
end;

FindClose(FSR);
FindClose(DSR);
end;


//-------Начало----распаковка OGG------------------------------------------------
procedure RecodeOgg;
var ResultCode: integer; CurFile: String;

begin
FindFiles(ExpandConstant('{app}\hl2\sound\'), '*.ogg'); //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|'); //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов

for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n];
StringChange(CurFile, AddBackslash(ExpandConstant('{app}\hl2\sound\')), '');
Exec(ExpandConstant('{app}\hl2\sound\oggdec.exe'), '-Q '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode); //Для каждого файла запускаем декодер
DeleteFile(Files[n]); //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;

DeleteFile(ExpandConstant('{app}\hl2\sound\oggdec.exe'));
end;
//-------Конец----распаковка OGG------------------------------------------------



//-------Начало----распаковка WV ------------------------------------------------
procedure RecodeWV;
var ResultCode: integer; CurFile: String;

begin
FindFiles(ExpandConstant('{app}\hl2\sound\'), '*.wv'); //Находим все файлы по маске, в выбранной папке
Files:= StringToArray(S, '|'); //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files)-1; //Получаем кол-во файлов

for n:=(GetArrayLength(Files)-1) downto 0 do begin
CurFile:= Files[n];
StringChange(CurFile, AddBackslash(ExpandConstant('{app}\hl2\sound\')), '');
Exec(ExpandConstant('{app}\hl2\sound\wvunpack.exe'), '-t -q -y '+ AddQuotes(CurFile), '', SW_Hide, EwWaitUntilTerminated, ResultCode); //Для каждого файла запускаем декодер
DeleteFile(Files[n]); //Удаляем ненужный файл
WizardForm.FilenameLabel.Caption:= Files[n]; //Двигаем прогрессбар
WizardForm.ProgressGauge.Position:= WizardForm.ProgressGauge.Position +1;
end;

DeleteFile(ExpandConstant('{app}\hl2\sound\wvunpack.exe'))
end;
//-------Конец----распаковка WV ------------------------------------------------



procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssPostInstall then
begin
WizardForm.ProgressGauge.Position := 0;
WizardForm.StatusLabel.Caption := 'Decompressing audio files, please wait...';
RecodeOgg;
RecodeWV;
end;
end;



просто надо было константы Files, S и n вынести в самое начало кода, сделать их общими для всех процедур. Теперь можно еще создать процедуру Recode... для распаковки чего-то.

Спасибо demon1232010 с forum.ru-board за оказанную помощь :) и спасибо всем остальным, за то что терпели мои топики




© OSzone.net 2001-2012