Скрипты Inno Setup. Помощь и советы [часть 3]

Ответить
 • Просмотры: 19
Аватара пользователя
insombia

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение insombia »

valyok666 через inno setup gamescript generator по моему
Аватара пользователя
valyok666

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение valyok666 »

txt.Font.Name= 'georgia';

на эту строчку ругается
Аватара пользователя
No4noylis

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение No4noylis »

VinTagE

Спасибо работает!!!!!!



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

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение insombia »

No4noylis в Need for Speed™ Undercover.iss v 2.2 есть кажись



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

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение insombia »

Мне помогли добавить к скрипту распаковки 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]

Сообщение Rikill »

insombia, в сборке Inno Ultra от Лександера и в рестулзовской версиях уже встроен дизайнер



зы с шрифтом ошибся, прошу прощения
Аватара пользователя
ssv14

Re: Скрипты Inno Setup. Помощь и советы [часть 3]

Сообщение ssv14 »

Все, получилось. Теперь есть распаковка и 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]

Сообщение No4noylis »

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;
Ответить

Вернуться в «Автоматическая установка приложений»