ISDone

DLL ISDone 0.6 final

Нет прав для скачивания

LexBell

Борода
Супер модератор
Довольно трудоемкий, в плане заполнения, но достаточно надежный по моему мнению, пример:

Код:
procedure DeleteWav;
var
  i:integer;
  DelList:TStringList;
begin
  DelList:=TStringList.Create;

  DelList.Add('1.wav');
  DelList.Add('2.wav');
  DelList.Add('3.wav');
  DelList.Add('4.wav');
  DelList.Add('5.exe');
  DelList.Add('6.wav');
  DelList.Add('7.wav');
  DelList.Add('8.wav')
  DelList.Add('9.wav')
  DelList.Add('10.wav')
  DelList.Add('11.wav')
  DelList.Add('12.wav');
  DelList.Add('13.wav');
  DelList.Add('14.wav');
  DelList.Add('15.wav');
  DelList.Add('16.wav');
  DelList.Add('17.wav');
  for i:=0 to DelList.Count-1 do begin
    DelTree(ExpandConstant('{app}\')+DelList.Strings[i],False,True,False)
  end;
  DelList.Free;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then DeleteWav;
end;

Добавлено через 25 минут
Вариант с файл-листом:
Код:
procedure DeleteWav;
var
  i:integer;
  DelList:TStringList;
begin
  DelList:=TStringList.Create;
  if FileExists(ExpandConstant('{tmp}\FileList.txt')) then begin
  DelList.LoadFromFile(ExpandConstant('{tmp}\FileList.txt'));
  for i:=0 to DelList.Count-1 do 
    DelTree(DelList.Strings[i],False,True,False);
  end;
  DelList.Free;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then DeleteWav;
end;
пример файл-листа:
D:\Program Files\ISDone\main\video\ac130_load.wav
D:\Program Files\ISDone\main\video\Aftermath_load.wav
D:\Program Files\ISDone\main\video\Airlift_load.wav
D:\Program Files\ISDone\main\video\airplane_load.wav
D:\Program Files\ISDone\main\video\Ambush_load.wav
D:\Program Files\ISDone\main\video\Armada_load.wav
D:\Program Files\ISDone\main\video\Blackout_load.wav
D:\Program Files\ISDone\main\video\bog_a_load.wav
D:\Program Files\ISDone\main\video\bog_b_load.wav
D:\Program Files\ISDone\main\video\cargoship_load.wav
D:\Program Files\ISDone\main\video\coup_load.wav
D:\Program Files\ISDone\main\video\filelist.bat
D:\Program Files\ISDone\main\video\FileList.txt
D:\Program Files\ISDone\main\video\hunted_load.wav
D:\Program Files\ISDone\main\video\icbm_load.wav
D:\Program Files\ISDone\main\video\jeepride_load.wav
D:\Program Files\ISDone\main\video\killhouse_load.wav
D:\Program Files\ISDone\main\video\launchfacility_a_load.wav
D:\Program Files\ISDone\main\video\launchfacility_b_load.wav
D:\Program Files\ISDone\main\video\scoutsniper_load.wav
D:\Program Files\ISDone\main\video\sniperescape_load.wav
D:\Program Files\ISDone\main\video\village_assault_load.wav
D:\Program Files\ISDone\main\video\village_defend_load.wav
 

Winst@n

Участник
Проверенный
Gnom,
Думаю ты не против. Опять же пример от Gnom'a
Рабочий вариант поиска файлов по FileList'у и их удаления.

Код:
[Files]
Source: files\*; Flags: dontcopy

[_code]
function InitializeSetup:boolean;
begin
ExtractTemporaryFile('FileList.txt');
Result:=True;
end;

procedure DeleteWav;
var
  i:integer;
  DelList:TStringList;
begin
  DelList:=TStringList.Create;
  if FileExists(ExpandConstant('{tmp}\FileList.txt')) then begin
  
  DelList.LoadFromFile(ExpandConstant('{tmp}\FileList.txt'));
  
  for i:=0 to DelList.Count-1 do
    if FileExists(ExpandConstant('{app}\')+DelList.Strings[i]) then
     DelTree(ExpandConstant('{app}\')+DelList.Strings[i],False,True,False);
  end;
  DelList.Free;
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if CurStep = ssDone then DeleteWav;
end;
 

seregin-78

Мимокрокодил
Проблема ISPackZip

У меня такая проблема:После упаковки ISPackZip не удаляет файлы вот кусок скрипта
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\1.arc'), ExpandConstant('{app}\main'), '', false, '', ExpandConstant('{tmp}\arc.ini'), ExpandConstant('{app}\'), notPCFonFLY{PCFonFLY}) then break;
FindHandle1:=ISFindFiles(0,ExpandConstant('{app}\main\1\2\3\*.ogg'),ColFiles1);
ExecError:=false;
while not ExecError and ISPickFilename(FindHandle1,ExpandConstant('{app}\main\1\2\3'),CurIndex1,true) do begin
InFilePath:=ISGetName(0);
OutFilePath:=ISGetName(1);
OutFileName:=ISGetName(2);
ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w "'+OutFilePath+'"',ExpandConstant('{tmp}'),OutFileName,false);
end;
ISFindFree(FindHandle1);
if ExecError then break;
if not ISPackZIP( 0, 0, ExpandConstant('{app}\main\1\*'), ExpandConstant('{app}\main\1.iwd'), 0, true ) then break;
Кто нибудь может мне помочь?
 

ProFrager

Знаток
Проверенный
по всей видимости файлы заняты какой-то другой программой, поэтому не получается их удалить. Когда тестил эту функцию при создании все корректно удалялось, да и сейчас должно.
 

Snoopak96

Старожил
seregin-78,
Думаю дело в "кривых руках" =) недавно юзал такой же алгоритм распаковки и всё работало, в этой игре к стати 2 wav`а не кодятся oggenc2.

Вот думаю и причина не удаления:
Код:
ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w [B]"'+OutFilePath+'.wav"'[/B],ExpandConstant('{tmp}'),OutFileName,false);
 

seregin-78

Мимокрокодил
Snoopak96
Так вообще не работает после декодирования WAV файлы не воспроизводятся.
И все равно не удаляется. А у тебя случайно не осталось того скрипта если не трудно дай этот кусок, или что нибудь на подобие.
 

Snoopak96

Старожил
seregin-78,
[hide=пример]
Код:
     if not FileSearchInit(true) then break; //Поиск в под кталогах
      if not ISArcExtract ( 0, 0, ExpandConstant('{src}\audio.arc'), ExpandConstant('{app}\main'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;

        FindHandle1:=ISFindFiles(0,ExpandConstant('{app}\*.ogg'),ColFiles1);
        ExecError:=false;
        while not ExecError and ISPickFilename(FindHandle1,ExpandConstant('{app}\'),CurIndex1,true) do begin
          InFilePath:=ISGetName(0);
          OutFilePath:=ISGetName(1);
          OutFileName:=ISGetName(2);
          ExecError:=not ISExec(0, 0, 0, ExpandConstant('{tmp}\oggdec.exe'), '"'+InFilePath+'" -w "'+OutFilePath+'.wav"',ExpandConstant('{tmp}'),OutFileName,false);
        end;
        ISFindFree(FindHandle1);
        if ExecError then break;
        if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\main\iw_11\*'), ExpandConstant('{app}\main\iw_11.iwd'), 0, true) then break;
[/hide]

Добавлено через 1 минуту
Snoopak96
Так вообще не работает после декодирования WAV файлы не воспроизводятся.
Такого быть не должно, это уже ты чего-то намудрил.
 

seregin-78

Мимокрокодил
Snoopak96

Не чего я не мудрил, твой кусок точно так же после декодирования WAV не воспроизводятся, с моим воспроизводится, но ISPackZIP после упаковки файлы не удаляет. Может у меня Inno Setup или ISDone не той версии которой нужно? У тебя какие?
 

Snoopak96

Старожил
seregin-78,
Версии у меня обычные, ничего сверх естественного, дело в тебе.
 

seregin-78

Мимокрокодил
Snoopak96

С воспроизведением WAV разобрался. Дело не во мне, я беру чистый скрипт
ISDone 0.6f вставляю туда твой кусок: Распаковка ARC проходит нормально,
декодирование проходит нормально, упаковка тоже нормально да вообще все функции работают нормально кроме того что после упаковки файлы не удаляются.

Добавлено через 1 час 32 минуты
И Еще я не давно скачал MW3 Автор RePack'a: Ultra там тоже после установки эти файлы не удаляются, а остаются в папке с игрой поэтому я и спрашивал может дело с моими прогами.
 

Snoopak96

Старожил
seregin-78,
Ну тогда только остаётся одно - файлы заняты другим процессом, возможно антиварь их сканит или что нибудь ещё, последний параметр в функции ISPackZIP (true) - это удаление исходной папки после обработки.
 

seregin-78

Мимокрокодил
Snoopak96

Насчет ISPackZIP (true) мне известно я уже довольна давно использую ISDone. Прежде чем обратиться сюда я изучил документацию и перепробовал разные способы не чего не помогает. Насчет антивируса, дело не в нем только что удалил его вообще та же беда файлы не удаляются.
 

seregin-78

Мимокрокодил
Все спасибо за помощь разобрался нужно было отключить индексирование на диске.
 

Лёха

Участник
Всем доброго времени суток.
У меня 2 вопроса и они наверное уже разбирались не один раз.
1) что и где прописать в исдоне что бы он разбирал запароленные архивы.
2) У меня есть скрипт Shepards но там старый исдон, как прикрутить к нему новый.
Спасибо.
 
Последнее редактирование:

PUNISHER

Участник
как настроить isdone для использования английского и русского языка? т.е прикрепить russian.ini к русскому языку, а english.ini к английскому.
 

Snoopak96

Старожил
PUNISHER,
[hide=пример]
Код:
[Languages]
Name: russian; MessagesFile: compiler:Languages\Russian.isl
Name: [B]English[/B]; MessagesFile: compiler:Default.isl
 
[_code]
...
...
#ifdef Components
    TmpValue:=1;
    if IsComponentSelected('text\rus') then Comps1:=Comps1+TmpValue;     //компонент 1
    TmpValue:=TmpValue*2;
    if IsComponentSelected('text\eng') then Comps1:=Comps1+TmpValue;     //компонент 2
    TmpValue:=TmpValue*2;
    if IsComponentSelected('voice\rus') then Comps1:=Comps1+TmpValue;    //компонент 3
    TmpValue:=TmpValue*2;
    if IsComponentSelected('voice\eng') then Comps1:=Comps1+TmpValue;    //компонент 4
//    .....
// см. справку
#endif
#ifdef precomp
  PCFVer:={#precomp};
#else
  PCFVer:=0;
#endif
    ISDoneError:=true;
    if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, 0, @ProgressCallback) then begin
      repeat
        [B]if ActiveLanguage = 'English' then ChangeLanguage('English');[/B]
        if not SrepInit('',512,0) then break;
        if not PrecompInit('',128,PCFVer) then break;
        if not FileSearchInit(false) then break;     
...
...
[/hide]
 

PUNISHER

Участник
Snoopak96, тоже самое, я использовал до этого просто ChangeLanguage('English'); но думаю что файлы ini к языку привязывать надо? или же я ошибаюсь?
 

Snoopak96

Старожил
PUNISHER,
ошибаешься, привязку к формату из скрипта не требуется, и это не тоже самое, тут уже условие идёт.
 

PUNISHER

Участник
Snoopak96, под тоже самое имелось в виду что так же по русски отображаются ошибки библиотеки
 
Последнее редактирование:
Сверху