ISDone

DLL ISDone 0.6 final

Нет прав для скачивания
У меня при установки любой запакованной игры выходит ошибка ISDone.dll.
произошла ошибка при распаковке Архив поврежден! unarc.dll вернул код ошибки: -7 error archive data corrupted (decompression fails)

система 7-ка 64 битная, ставил несколько систем, в том числе и 32-х битную, все равно выходит одна и та же ошибка!
память тестил 4 раза, ошибок нету, бук новый, недели ещё нету...
может кто подскажет, что нибудь))

P.S. Админы, если не туда написал, сорри)
 
MiniPyt может образ битый/не докачанный?
Попробуйте перехешировать.
 
kampaster, мож он пакует так, что архив распаковаться не может.. да и запаковать он мог с прекинсайдом или срепинсайдом и не указать распаковку нужных длл в скрипте.. или версия прекомпа не совпадает.. тут прям надо мысли читать уметь

MiniPyt, с какими парамтерами пакуешь?
 
Последнее редактирование:
MiniPyt может образ битый/не докачанный?
Попробуйте перехешировать.

я сам не паковал, просто качаю любой рип на торрентах, из 12, установился только один, и то который весит всего 3гига...где только инфу не искал, говорят железо, но у меня другое все устанавливается, и адобе мастер который тоже не мало весит встал....осталось только жесткий потестить, а так все уже тестил...просто комплекс для теста жесткого занят до вторника...

на буке все лицуха кроме адоба, обновления все стоят))

Добавлено через 3 минуты
kampaster, мож он пакует так, что архив распаковаться не может.. да и запаковать он мог с прекинсайдом или срепинсайдом и не указать распаковку нужных длл в скрипте.. или версия прекомпа не совпадает.. тут прям надо мысли читать уметь

MiniPyt, с какими парамтерами пакуешь?


я не паковал, но у друзей у всех нормально устанавливается, максимум антивирь отключают...

ещё заметил, при установке, память почти на 100% забивается, виртуальную расшарил до 8гигов, оперативы 4гига...

завтра будет неделя, как я бьюсь с этой ошибкой...
 
MiniPyt, FAT32 не станут лепить на ноут с лицензионной виндой, а на "левую" - легко. А так, отчетливо просматривается нестабильность ноута. При установке всяких адобов и других официальных программ нагрузка на проц, память, мать и т.д. гораздо меньше, чем при использовании репаков. Это получается своеобразный общий тест системы. Конечно в магазине при словах "у меня на нем игры не ставятся" менять ноут не станут, так что надо отыскать нормальную тестилку, которая бы нашла, что все-таки собака где-то в ноуте порылась.
 
Доброго времени суток, возникла такая вот проблема
Метод сжатия
Код:
SrepInside0.30 / ISDone 0.6f
-msrep:m3f:a1:l256+lzma:a1:mfbt4:d200m:fb128:mc1000:lc8
-----------------
Проблему решил. ;)
 
Последнее редактирование:
Ne0N
Возможно в следующей версии сделать функцию "копирование файлов" с плавным баром?
 
Edison007, ну эт наверное в следующем году в 0.7 версии) Щас мне влом что-то доделывать)
 
Edison007,
Возможно в следующей версии сделать функцию "копирование файлов" с плавным баром?
У меня есть пример для delphi, вот сам
procedure CopyFile(const sSourceName, sDestinationName: String;
ProgressControl: TProgressBar);
const
nChunkSize = 8192;
var
uCopyBuffer: Pointer;
FSource,
FDestination: Integer;
nFileSize,
nBytesCopied,
nTotalCopied: LongInt;
function GetFileSize(const sFileName: String): LongInt;
var
SearchRec: TSearchRec;
begin
if (FindFirst(ExpandFileName(sFileName), faAnyFile, SearchRec) = 0)
then Result := SearchRec.Size
else Result := -1;
FindClose(SearchRec);
end;
begin
GetMem(uCopyBuffer, nChunkSize);
try
nFileSize := GetFileSize(sSourceName);
nTotalCopied := 0;
FSource := FileOpen(sSourceName, fmShareDenyNone);
try
if (ProgressControl <> nil) then begin
with ProgressControl do begin
Max := nFileSize;
Min := 0;
Position := 0;
end;
end;
ForceDirectories(ExtractFilePath(sDestinationName));
FDestination := FileCreate(sDestinationName);
try
repeat
nBytesCopied := FileRead(FSource, uCopyBuffer^, nChunkSize);
nTotalCopied := nTotalCopied + nBytesCopied;
FileWrite(FDestination, uCopyBuffer^, nBytesCopied);
if (ProgressControl <> nil)
then ProgressControl.Position := nTotalCopied;
until (nBytesCopied < nChunkSize);
FileSetDate(FDestination, FileGetDate(FSource));
finally
FileClose(FDestination);
end;
finally
FileClose(FSource);
end;
finally
FreeMem(uCopyBuffer, nChunkSize);
if (ProgressControl <> nil)
then ProgressControl.Position := 0;
end;
end;

(Может пригодится Ne0N`у)
 
 
Вот на инно пример:
Код:
[Setup]
AppName=My Program
AppVerName=My Program v.1.2
DefaultDirName={pf}\My Program

[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl

[_Code]
type
  TMsg = record
    hwnd: HWND;
    message: UINT;
    wParam: Longint;
    lParam: Longint;
    time: DWORD;
    pt: TPoint;
  end;

const
  BlockSize = 65536;
  PM_REMOVE = 1;
  WM_QUIT   = $0012;

var
  Page: TInputDirWizardPage;
  PB,PB2: TNewProgressBar;
  L1,L2,L3:TNewStaticText;
  DS,CS:Extended;
  CancelBtn:TButton;
  CancelOperation:boolean;

function PeekMessage(var lpMsg: TMsg; hWnd: HWND; wMsgFilterMin, wMsgFilterMax, wRemoveMsg: UINT): BOOL; external 'PeekMessageA@user32.dll stdcall';
function TranslateMessage(const lpMsg: TMsg): BOOL; external 'TranslateMessage@user32.dll stdcall';
function DispatchMessage(const lpMsg: TMsg): Longint; external 'DispatchMessageA@user32.dll stdcall';

procedure AppProcessMessage;
var
  Msg: TMsg;
begin
  while PeekMessage(Msg, WizardForm.Handle, 0, 0, PM_REMOVE) do
    begin
      TranslateMessage(Msg);
      DispatchMessage(Msg);
    end;
end;

procedure CopyFile_(Source,Target: string);
var
  FileSize,ElapsedSize,CopySize:LongWord;
  SourceStream,TargetStream:TFileStream;
  a:Extended;
begin
  SourceStream:=TFileStream.Create(Source,fmOpenRead);
  TargetStream:=TFileStream.Create(Target,fmCreate);
  ElapsedSize:=SourceStream.Size-SourceStream.Position;
  FileSize:=SourceStream.Size;
  PB.Max:=100;
  PB.Position:=0;
  L1.Caption:=ExtractFileName(Source);
  L2.Caption:='0 %';
  while ElapsedSize>0 do begin
    if ElapsedSize<BlockSize then CopySize:=ElapsedSize else CopySize:=BlockSize;
    TargetStream.CopyFrom(SourceStream,CopySize);
    ElapsedSize:=SourceStream.Size-SourceStream.Position;
    a:=(ElapsedSize div FileSize)*100;
    a:=100-a; //õç ÷å çäåñü çà ãëþêè, íî ïèñàòü ýòè äåéñòâèÿ â îäíó ñòðî÷êó íåëüçÿ
    PB.Position:=Round(a);//SourceStream.Position;
    L2.Caption:=IntToStr(PB.Position)+' %'
    L2.Invalidate;
    CS:=CS+BlockSize;//(1024*1024);
    a:=CS*100;   //òàêàÿ æå åðåñü, íàïèñàâ âñå
    a:=a/DS      //â îäíó ñòðîêó íè õðåíà íå ñ÷èòàåòñÿ
    PB2.Position:=Round(a);//Round(CS*100/DS);
    L3.Caption:=IntToStr(PB2.Position)+' %'
    AppProcessMessage;
    if CancelOperation then Break;
  end;
  //FileSetDate(TargetStream.Handle,FileGetDate(SourceStream.Handle));
  //äàòó ôàéëà íàäîáû ñìåíèòü íà ñòàðóþ, äà âîçèòüñÿ ëåíü
  TargetStream.Free;
  SourceStream.Free;
  if CancelOperation then DeleteFile(Target);
end;

procedure CopyDir(const FromDir,ToDir,FileMask:string;IncludeSubDirs:boolean);
var
  FindRec:TFindRec;
  sFileName,fd,td:string;
//  i,j:Int64;
  ii:integer;
begin
  fd:=AddBackslash(FromDir);
  td:=AddBackslash(ToDir);
  ForceDirectories(td);
  if FindFirst(fd+FileMask,FindRec) then begin
    try
      repeat
        sFileName:=fd+FindRec.Name;
        if ((FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY)=0) then CopyFile_(sFileName,td+FindRec.Name)
        else
          if IncludeSubDirs then
            if (FindRec.Name<>'') and (FindRec.Name<>'.') and (FindRec.Name<>'..') then
              CopyDir(sFileName,td+FindRec.Name,FileMask,IncludeSubDirs);
        AppProcessMessage;
      until not (FindNext(FindRec) and not CancelOperation);
    finally
      FindClose(FindRec);
    end;
  end;
end;

procedure GetDirSize(const Dir,FileMask:string;IncludeSubDirs:boolean);
var
  FindRec:TFindRec;
  sFileName,d:string;
//  i:Int64;
begin
  d:=AddBackslash(Dir);
  if FindFirst(d+FileMask,FindRec) then begin
    try
      repeat
        sFileName:=d+FindRec.Name;
        if ((FindRec.Attributes and FILE_ATTRIBUTE_DIRECTORY)=0) then DS:=DS+4294967295*FindRec.SizeHigh+FindRec.SizeLow
        else
          if IncludeSubDirs then
            if (FindRec.Name<>'') and (FindRec.Name<>'.') and (FindRec.Name<>'..') then GetDirSize(sFileName,FileMask,IncludeSubDirs);
        AppProcessMessage;
      until not (FindNext(FindRec) and not CancelOperation);
    finally
      FindClose(FindRec);
    end;
  end;
end;

procedure CancelBtnClick(Sender:TObject);
begin
  CancelOperation:=True;
end;

procedure InitializeWizard();
begin
  Page:=CreateInputDirPage(wpSelectTasks,'Ïðèìåð êîïèðîâàíèÿ ôàéëîâ', 'Óêàæèòå êàòàëîãè','',False,'NewFolder');
  Page.Add('Îòêóäà êîïèðîâàòü');
  Page.Values[0] := 'e:\1\1';//'c:\';//ExpandConstant('{userappdata}');
  Page.Add('Êóäà êîïèðîâàòü');
  Page.Values[1] := 'e:\1\2';//'c:\';
  PB:=TNewProgressBar.Create(WizardForm);
  with PB do begin
    Left:=0;
    Top:=130;
    Width:=Page.Surface.Width;
    Parent:=Page.Surface;
  end;
  L1:=TNewStaticText.Create(WizardForm);
  with L1 do begin
    Left:=0;
    Top:=115;
    AutoSize:=False;
    Width:=Page.Surface.Width-30;
    Parent:=Page.Surface;
  end;
  L2:=TNewStaticText.Create(WizardForm);
  with L2 do begin
    Left:=Page.Surface.Width-30;
    Top:=115;
    AutoSize:=False;
    Width:=30;
    //Alignment:=taRightJustify;
    Parent:=Page.Surface;
  end;
  PB2:=TNewProgressBar.Create(WizardForm);
  with PB2 do begin
    Left:=0;
    Top:=170;
    Width:=Page.Surface.Width;
    Parent:=Page.Surface;
  end;
  L3:=TNewStaticText.Create(WizardForm);
  with L3 do begin
    Left:=Page.Surface.Width-30;
    Top:=155;
    AutoSize:=False;
    Width:=30;
    //Alignment:=taRightJustify;
    Parent:=Page.Surface;
  end;
  CancelBtn:=TButton.Create(WizardForm);
  with CancelBtn do begin
    Left:=Page.Surface.Width-150;
    Top:=200;
    Width:=150;
    Parent:=Page.Surface;
    Caption:='Îòìåíèòü êîïèðîâàíèå';
    OnClick:=@CancelBtnClick;
  end;

end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result:=True;
  if CurPageID=Page.ID then begin
    L1.Caption:='Ïîäñ÷åò ðàçìåðà "'+Page.Values[0]+'"';
    L2.Caption:='';
    L3.Caption:='';
    DS:=0;
    PB.Position:=0;
    PB.Max:=100;
    PB2.Position:=0;
    PB2.Max:=100;
    CS:=0;
    CancelOperation:=False;
    WizardForm.NextButton.Enabled:=False;
    WizardForm.CancelButton.Enabled:=False;
    WizardForm.BackButton.Enabled:=False;
    GetDirSize(Page.Values[0],'*.*',True);
    CopyDir(Page.Values[0],Page.Values[1],'*.*',True);
    WizardForm.NextButton.Enabled:=True;
    WizardForm.CancelButton.Enabled:=True;
    WizardForm.BackButton.Enabled:=True;
  end;
end;
 
ну эт наверное в следующем году в 0.7 версии) Щас мне влом что-то доделывать)
Ну это уже хорошо ;) ну да я думаю перед НГ всем лень что-то делать
VinTagE, Сомневаюсь, что это поможет
dvd4el, Да можно сделать и в инно, причем в раза полтора короче, но мне надо это в одном баре

А еще у меня есть пример на ВинАпи, но я жадный. и потому не покажу
Жадина говядина :rolf:
 
dvd4el, Батюшки, ну нифига пример у тебя длинный =)
Gnom, хех =D
 
Все эти примеры явно далеки от оптимальных. Эффективней будет юзать чистый винапи, увеличить размер буфера эдак до пары или пары десятков Мб, а так же если попадется кучка мелких файлов для копирования, то читать их все до заполнения буфера, а затем все разом писать. Размер кода в разы увеличится, но и эффективность во столько же раз и возрастет. Если делать, то делать не абы как.
 
Народ подскажите почему у меня вылазит следующие
В главном скрипте поменял только во этот кусок
#define facompress
#define PrecompInside
#define SrepInside
;#define MSCInside
;#define precomp "0.42"
;#define unrar
;#define XDelta
#define PackZIP
В ISDone
if not SrepInit('',512,0) then break;
if not PrecompInit('',128,PCFVer) then break;
if not FileSearchInit(false) then break;

if not ISArcExtract ( 0, 0, ExpandConstant('{src}\*.tgg'), ExpandConstant('{app}\'), '', false, '', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISSRepExtract( 0, 0, ExpandConstant('{app}\*.vap'), ExpandConstant('{app}\*.pcf'), true ) then break;
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\*.pcf'), ExpandConstant('{app}\'), true ) then break;
Делал как в readme которая была в комплекте.
Пользуюсь precomp0.38
 
Последнее редактирование:
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\*.pcf'), ExpandConstant('{app}\'), true ) then break;
Обрати внимание - ты вызываеш функцию ISPrecompExtract, в то-же время у тебя отключены файлы прекомпа.
Смотрим в мправку, хотя не глядя, по памяти скажу - для использования прекомпа, нужно раскоментировать строчку #define precomp "0.42" и вписать туда номер версии, которой проводилась предупаковочная обработка.

Добавлено через 59 секунд
Пользуюсь precomp0.38
А по скрину видно, что запускать пытаешься 0.40-й.
 
Помогите пожалуйста. Хочу чтобы скрипт добывал из архива папку hl0, ввожу ее так:
Код:
function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath:hl0; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@files:ISDone.dll stdcall delayload';
и при компиляции вылезает ошибка
Код:
Compile Error!
Line: 163
Error: Column 96:
Unknown type 'hl0'
что делать?
 
Назад
Сверху