ISDone

DLL ISDone 0.6 final

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

MiniPyt

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

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

P.S. Админы, если не туда написал, сорри)
 

kampaster

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

deus_ex

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

MiniPyt, с какими парамтерами пакуешь?
 
Последнее редактирование:

MiniPyt

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

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

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

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

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

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

завтра будет неделя, как я бьюсь с этой ошибкой...
 

ProFrager

Знаток
Проверенный
MiniPyt, FAT32 не станут лепить на ноут с лицензионной виндой, а на "левую" - легко. А так, отчетливо просматривается нестабильность ноута. При установке всяких адобов и других официальных программ нагрузка на проц, память, мать и т.д. гораздо меньше, чем при использовании репаков. Это получается своеобразный общий тест системы. Конечно в магазине при словах "у меня на нем игры не ставятся" менять ноут не станут, так что надо отыскать нормальную тестилку, которая бы нашла, что все-таки собака где-то в ноуте порылась.
 

BaRS

Мимокрокодил
Доброго времени суток, возникла такая вот проблема
Метод сжатия
Код:
SrepInside0.30 / ISDone 0.6f
-msrep:m3f:a1:l256+lzma:a1:mfbt4:d200m:fb128:mc1000:lc8
-----------------
Проблему решил. ;)
 
Последнее редактирование:

Edison007

Ветеран
Модератор
Ne0N
Возможно в следующей версии сделать функцию "копирование файлов" с плавным баром?
 

ProFrager

Знаток
Проверенный
Edison007, ну эт наверное в следующем году в 0.7 версии) Щас мне влом что-то доделывать)
 

GVS276

Старожил
Проверенный
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`у)
 

LexBell

Борода
Супер модератор
 

Avangard

Участник
Вот на инно пример:
Код:
[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;
 

Edison007

Ветеран
Модератор
ну эт наверное в следующем году в 0.7 версии) Щас мне влом что-то доделывать)
Ну это уже хорошо ;) ну да я думаю перед НГ всем лень что-то делать
VinTagE, Сомневаюсь, что это поможет
dvd4el, Да можно сделать и в инно, причем в раза полтора короче, но мне надо это в одном баре

А еще у меня есть пример на ВинАпи, но я жадный. и потому не покажу
Жадина говядина :rofl:
 

GVS276

Старожил
Проверенный
dvd4el, Батюшки, ну нифига пример у тебя длинный =)
Gnom, хех =D
 

ProFrager

Знаток
Проверенный
Все эти примеры явно далеки от оптимальных. Эффективней будет юзать чистый винапи, увеличить размер буфера эдак до пары или пары десятков Мб, а так же если попадется кучка мелких файлов для копирования, то читать их все до заполнения буфера, а затем все разом писать. Размер кода в разы увеличится, но и эффективность во столько же раз и возрастет. Если делать, то делать не абы как.
 

Лёха

Участник
Народ подскажите почему у меня вылазит следующие
В главном скрипте поменял только во этот кусок
#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
 
Последнее редактирование:

LexBell

Борода
Супер модератор
if not ISPrecompExtract( 0, 0, ExpandConstant('{app}\*.pcf'), ExpandConstant('{app}\'), true ) then break;
Обрати внимание - ты вызываеш функцию ISPrecompExtract, в то-же время у тебя отключены файлы прекомпа.
Смотрим в мправку, хотя не глядя, по памяти скажу - для использования прекомпа, нужно раскоментировать строчку #define precomp "0.42" и вписать туда номер версии, которой проводилась предупаковочная обработка.

Добавлено через 59 секунд
Пользуюсь precomp0.38
А по скрину видно, что запускать пытаешься 0.40-й.
 

Vasul

Мимокрокодил
Помогите пожалуйста. Хочу чтобы скрипт добывал из архива папку 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'
что делать?
 
Сверху