Скрипты Inno Setup. Помощь и советы [часть 3]
-
No4noylis
-
insombia
Re: Скрипты Inno Setup. Помощь и советы [часть 3]
valyok666 через inno setup gamescript generator по моему
-
valyok666
-
No4noylis
Re: Скрипты Inno Setup. Помощь и советы [часть 3]
VinTagE
Спасибо работает!!!!!!
пожалста прикрутите к етому скрипту текстурирувание кнопки
Спасибо работает!!!!!!
пожалста прикрутите к етому скрипту текстурирувание кнопки
http://inno.at.ua/12.7z
-
insombia
Re: Скрипты Inno Setup. Помощь и советы [часть 3]
No4noylis в Need for Speed™ Undercover.iss v 2.2 есть кажись
У кого то есть Inno Setup Form Designer а то здесь ссылка битая
У кого то есть Inno Setup Form Designer а то здесь ссылка битая
-
insombia
Re: Скрипты Inno Setup. Помощь и советы [часть 3]
Мне помогли добавить к скрипту распаковки OGG еще и распаковку WV.
читать дальше »
Код: Выделить всё
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).
[url=#]читать дальше »[/url]
[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
Re: Скрипты Inno Setup. Помощь и советы [часть 3]
insombia, в сборке Inno Ultra от Лександера и в рестулзовской версиях уже встроен дизайнер
зы с шрифтом ошибся, прошу прощения
зы с шрифтом ошибся, прошу прощения
-
ssv14
Re: Скрипты Inno Setup. Помощь и советы [часть 3]
Все, получилось. Теперь есть распаковка и OGG и WV.
читать дальше »
Код: Выделить всё
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;
просто надо было константы [b]Files[/b], [b]S[/b] и [b]n[/b] вынести в самое начало кода, сделать их общими для всех процедур. Теперь можно еще создать процедуру [b]Recode...[/b] для распаковки чего-то.
Спасибо [b]demon1232010[/b] с forum.ru-board за оказанную помощь [img]images/smilies/new/smile.gif[/img] и спасибо всем остальным, за то что терпели мои топики-
No4noylis
Re: Скрипты Inno Setup. Помощь и советы [часть 3]
Neutron,
Да, для нужна InitializeWizard:
Код:
А процедуры HideCocmponents и ShowComponents просто добавляются в код, и прописываются в процедуре CurPageChanged (на всякий случай поясняю, для них НЕ нужна InitializeWizard, они пишутся в коде добавляються в CurPageChanged)
Код:
читать дальше »
Да, для нужна 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;