Ru-Board.club
← Вернуться в раздел «Программы»

» Inno Setup (создание инсталяционных пакетов)

Автор: Sergey_Demchuk
Дата сообщения: 26.07.2011 11:50
Gnom3
Это я ошибся тут, насамом деле так и писал, ImgApplyChanges(WizardForm.SelectComponentsPage.Handle)
Но изображение все равно на заднем фоне от 3.bmp, которое загрузил ранее. Может есть какой то элемент, который имеет этот самый Handle и который можно сделать прозрачным?
Автор: Shegorat
Дата сообщения: 26.07.2011 11:55
Sergey_Demchuk 21:51 25-07-2011
Цитата:
Изображения mspaint.png нету, она на заднем фоне, сферху картинка 3.bmp.    
Как быть в этом случае?


Код: img:=ImgLoad(WizardForm.SelectComponentsPage.Handle,ExpandConstant('{tmp}\mspaint.png'),0,0,100,100,True,False);
Автор: demon1232010
Дата сообщения: 26.07.2011 12:01
Sergey_Demchuk 21:51 25-07-2011
Цитата:
  img:=ImgLoad(WizardForm.SelectComponentsPage.Handle,ExpandConstant('{tmp}\mspaint.png'),0,0,100,100,True,True);

Попробуй так

Код: img:=ImgLoad(WizardForm.SelectComponentsPage.Handle,ExpandConstant('{tmp}\mspaint.png'),0,0,100,100,True,False);
Автор: NinjaTurtles100500
Дата сообщения: 26.07.2011 16:26
Есть список компонентов, в списке 2 компонента - переключаемые и один "флажковый". Как мне сделать так, чтобы тот компонент, который "флажковый" можно было включить только при условии выбора определенного переключаемого компонента?
Автор: troyan90
Дата сообщения: 26.07.2011 18:47
NinjaTurtles100500
[more]
Код: [Components]
Name: "main"; Description: "Main Files"; Flags: exclusive
Name: "help"; Description: "Help Files"; Flags: exclusive
Name: "help\add"; Description: "Add Help Files";
Автор: NinjaTurtles100500
Дата сообщения: 26.07.2011 18:55
troyan90
благодарю)
Автор: ssv14
Дата сообщения: 26.07.2011 21:57
есть код декодирования OGG. Добавил такой же, что бы еще и WV декодировалось. Объединяю оба один за другим, но беда в том, что oни получаются идентичны (кроме переменных) и при компиляции ругается на SetArrayLength(Result, 0), inno говорит, что Result неизвестный идетнификатор, хотя в первом куске все нормально было. Помогите вылечить.

[more]

[code]
Function StringToArray(Text, Cut: String): array of String;

var
i1, k1: Integer;

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

procedure FindFiles(FromDir: String; Mask: String);

var
FindResult: Boolean;
FSR, DSR: TFindRec;
S1: String;

begin
FindResult:= FindFirst(AddBackslash(FromDir)+Mask, FSR)
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S1:= S1 + 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;
Files1: Array of String;
CurFile: String;
S1: String;
n1: Integer;

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

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



//-------распаковка WV ------------------------------------------------



var
i2, k2: Integer;

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

procedure FindFiles(FromDir: String; Mask: String);

var FSR, DSR: TFindRec;
FindResult: Boolean;
S2: String;

begin
FindResult:= FindFirst(AddBackslash(FromDir)+Mask, FSR)
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S2:= S2 + 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 RecodeWV;
var
Files2: Array of String;
CurFile: String;
ResultCode: integer;
S2: String;
n2: Integer;

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

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

[/more]
Автор: crysis1830
Дата сообщения: 26.07.2011 23:01
подскажите что обозначают эти две строчки

#define IconFile "NFSHP.ico"
#define icon "Include\1.ico"
Автор: Kasoi
Дата сообщения: 27.07.2011 00:50
crysis1830

Присваивают 2-м переменным
Цитата:
IconFile

Цитата:
icon


значения
Цитата:
"NFSHP.ico"

Цитата:
"Include\1.ico"


Автор: crysis1830
Дата сообщения: 27.07.2011 01:33

Цитата:
Присваивают 2-м переменным


если бы я еще знал что это такое
по понятней если можно
Автор: Krinkels
Дата сообщения: 27.07.2011 07:38
crysis1830

Цитата:
Присваивают 2-м переменным


Цитата:
если бы я еще знал что это такое

Это же элементарные вещи. Читай
Автор: demon1232010
Дата сообщения: 27.07.2011 10:36
crysis1830 00:01 27-07-2011
Цитата:
подскажите что обозначают эти две строчки

Попробуй почитать насчёт препроцессора.


ssv14 22:57 26-07-2011
Цитата:
есть код декодирования OGG. Добавил такой же, что бы еще и WV декодировалось. Объединяю оба один за другим, но беда в том, что oни получаются идентичны (кроме переменных) и при компиляции ругается на SetArrayLength(Result, 0), inno говорит, что Result неизвестный идетнификатор, хотя в первом куске все нормально было. Помогите вылечить.

[more=Скрипт]
Код: [no][Setup]
AppName=Test
AppVerName=Test 1.0
DefaultDirName={pf}\Test

[Code]
function StringToArray(Text, Cut: String): array of String;
var i1, k1: Integer;
begin
SetArrayLength(Result, 0);
if Cut = '' then Cut:= #1310; //если шаблон пуст, считаем переводы строк

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

procedure FindFiles(FromDir: String; Mask: String);
var FindResult: Boolean;
FSR, DSR: TFindRec;
S1: String;
begin
FindResult:=FindFirst(AddBackslash(FromDir)+Mask, FSR);
while FindResult do begin
if FSR.Attributes and FILE_ATTRIBUTE_DIRECTORY = 0 then begin
S1:= S1 + 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 Files1: Array of String;
CurFile, S1: String;
ResultCode, n1: integer;
begin
FindFiles(ExpandConstant('{app}\hl2\sound\'), '*.ogg'); //Находим все файлы по маске, в выбранной папке
Files1:= StringToArray(S1, '|'); //Переводим в массив
WizardForm.ProgressGauge.Max:= GetArrayLength(Files1)-1; //Получаем кол-во файлов

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

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



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

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

DeleteFile(ExpandConstant('{app}\WV\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;[/no]
Автор: Krinkels
Дата сообщения: 27.07.2011 12:11
demon1232010

Цитата:
Мне вот интересно что за формат WV? Никогда ранее не встречал.

Гугл уже отменили? Читай
И обрати внимание на строчку: WavPack-формат (расширение .WV)
Автор: demon1232010
Дата сообщения: 27.07.2011 13:57
Krinkels 13:11 27-07-2011
Цитата:
Гугл уже отменили?

Меня там забанили А так уже нашёл и почитал.
Автор: VicF1
Дата сообщения: 27.07.2011 18:53
Привет всем.
Есть скрипт, в котором кнопка "Установить" расположена на странице выбора папки для установки. Когда кнопкой "Обзор" меняешь путь установки, то он в строке не меняется, хотя установка идет правильно, т.е. по новому пути.
Страница создания ярлыков отключена, может из-за этого?
Спасибо.
Автор: ssv14
Дата сообщения: 27.07.2011 20:37
demon1232010

Цитата:
Скрипт
Вроде должно отрабатывать норм.

Спасибо большое за помощь.

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

Цитата:
Мне вот интересно что за формат WV? Никогда ранее не встречал.

формат сжатия WAV файлов без потерь, как FLAC, сжимает так же или лучше, но самое интересное, что в отличии от других таких же компрессоров, может сжимать и дополнительную битовую информацию (time stamp), которая часто используется в играх для синхронизации с мимикой персонажей.

Все, получилось.
[more]

[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;

[/more]

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

Спасибо demon1232010 за оказанную помощь
Автор: NinjaTurtles100500
Дата сообщения: 28.07.2011 02:34
На FinishedPage вот такая фигня:

YesRadio, NoRadio, Runlist и все заголовки захайдены. Не подскажете что это может быть?
Автор: sergey3695
Дата сообщения: 28.07.2011 08:44

Цитата:
На FinishedPage вот такая фигня:
YesRadio, NoRadio, Runlist и все заголовки захайдены. Не подскажете что это может быть?

Может скрипт покажешь?
Автор: troyan90
Дата сообщения: 28.07.2011 11:24
NinjaTurtles100500
LabelTime3 от isdone наверное...
Автор: NinjaTurtles100500
Дата сообщения: 28.07.2011 12:50
troyan90
Ага, он самый. И снова спасибо)
Автор: ssv14
Дата сообщения: 29.07.2011 10:37
еще вопрос по скрипту [more=декодирования OGG и WV в WAV]
[Setup]
AppName=Recode
AppVerName=Recode
OutputDir=.
OutputBaseFilename=Recode
DefaultDirName={pf}\Recode
AppendDefaultDirName=False
DisableDirPage=True


[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;
[/more]

Он работает прекрасно, но...
- при распаковке OGG создается список файлов, подставляется декодеру, все ОК.
- при распаковке WV тоже создается список файлов и подставляется WV декодеру.

Так вот, это самое НО...
Используется один список для обоих, т.е. создался для OGG - отработал, потом создался для WV, найденные файлы добавляются в тот же список, что и OGG, т.е. WV по мимо своих файлов еще и OGG обрабатывает. Оно конечно ничего, только время больше на обработку.

Вопрос: как прописать в процедуре Recode.. перед DeleteFile(Files[n]) строчку, что бы удалялась еще и строчка из списка файлов для OGG и WV ?
Автор: crysis1830
Дата сообщения: 29.07.2011 14:01
кто подскажет как эта строчка работает что прописать нужно

Автор: Kasoi
Дата сообщения: 29.07.2011 17:14
crysis1830

Ну я думаю справа от "Пуск" ярлык создается.
Автор: crysis1830
Дата сообщения: 29.07.2011 17:37

Цитата:
crysis1830

Ну я думаю справа от "Пуск" ярлык создается.



а задействовать софт можно на этой строчки или распаковку архива например?
Автор: Kasoi
Дата сообщения: 29.07.2011 18:14
crysis1830

Думаю можно, но я не знаю что это за скрипт и где что надо менять.
Автор: crysis1830
Дата сообщения: 29.07.2011 20:29

Цитата:
crysis1380
Думаю можно, но я не знаю что это за скрипт и где что надо менять.


это скрипт от YURSHAT Need for Speed™ Undercover v 2.2
Автор: Rhinosniper
Дата сообщения: 29.07.2011 23:12
Как сделать исталл как у рекодингов)) Ну хотя бы какие утилиты и библиотеки нужны?
Автор: crysis1830
Дата сообщения: 29.07.2011 23:13
разобрался практически совсем что мне нужно было, возникла еще одна проблема нужно, что бы DirectX устанавливался после установки всех архивов, кто может отредактировать скрипт

http://rghost.ru/16253131

буду очень признателен кто поможет
Автор: ssv14
Дата сообщения: 30.07.2011 00:02
а как в строчке вида

Код:
StringChange(CurFile, AddBackslash(ExpandConstant('{app}')), '');
Автор: NinjaTurtles100500
Дата сообщения: 30.07.2011 02:19
Скрипт IsDone использует вместо стандартной свою кнопку отмены распаковки, стандартная по умолчанию скрыта. Если ее открыть, то получится следующее:

Стандартная кнопка "отмена", включенная в прозрачную область при этом не работает.
Собственно вопрос. Как к стандартной кнопке привязать действия кнопки ISDone, т.е. как сделать так, чтобы она работала? Либо подскажите, как мне добавить кнопку ISDone в прозрачную область ISWin7. Заранее огромное спасибо, прям замаялся с этой кнопкой.
moonlight82
Благодарю.

Страницы: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177

Предыдущая тема: поиск


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.