ISDone

DLL ISDone 0.6 final

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

Shegorat

Lord of Madness
Администратор
Все прив, может кто объяснить чего это за беда и где копать?
Может быть для начала извлечь библиотеку в темп через ExtractTemporaryFile('ISDone.dll');? Если вызовы происходят по типу
Код:
function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@{tmp}\ISDone.dll stdcall delayload';
Ну либо ее просто не запаковало в инсталлятор.

Ну либо вызываются функции, которых просто уже/еще нет в библиотеке.
 

EvilAlex

Старожил
Всем бобров...
Как сделать. чтобы после тестового прогона isdone создавай файл records, не в папке с сетапом, а в другой ?
Чтобы выглядело так...

Releas\setup.exe
Include\records.inf

Заранее спасибо!
 

sergey3695

Ветеран
Модератор
EvilAlex, добавь перемещение файла в нужную папку после isdone.
 

sergey3695

Ветеран
Модератор
EvilAlex, создает, а не перемещает. пусть создает, а потом перекидываешь в нужную папку если файл найден.Что там, FileExists, FileCopy, DeleteFile. Ну и что непонятно именно? Это лишь как вариант. Чтобы именно создавался, я не знаю, да и незачем по мне так-то.
 

MogilShik

Новичок
Может быть для начала извлечь библиотеку в темп через ExtractTemporaryFile('ISDone.dll');? Если вызовы происходят по типу
Код:
function ISArcExtract(CurComponent:Cardinal; PctOfTotal:double; InName, OutPath, ExtractedPath: AnsiString; DeleteInFile:boolean; Password, CfgFile, WorkPath: AnsiString; ExtractPCF: boolean ):boolean; external 'ISArcExtract@{tmp}\ISDone.dll stdcall delayload';
Ну либо ее просто не запаковало в инсталлятор.

Ну либо вызываются функции, которых просто уже/еще нет в библиотеке.
Переделывал исдон 0.5 в 0.6, вроде все прописал, в инсталляторе библиотека есть, но блин не хочет зараза извлекаться и все тут.

Мож кто глянет, вроде все прописано - http://rghost.ru/8ZdbkzBdh
 
Последнее редактирование:

Alloc

Новичок
Приветствую всех!

Использую ISDone. Ломаю голову над тем как после удачной установки запаковать определенную папку в директории установки, используя программу которую добавил в ресурсы инсталлятора, ну и после чего удалить эту папку.

Программа которой буду паковать папку после установки:
Код:
Source: Include\Pkzip.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall;
Распаковываю архив так:
Код:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-1.bin'),  ExpandConstant('{app}'), '', false, '123456', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISExec       ( 1, 0, 0, ExpandConstant('{app}\Pkzip.exe'), ExpandConstant('-add -store -dir=relative -NoZipExtension "{app}\Modules\Ahkuilon.rvm" "{app}\Temp\Modules\Ahkuilon\*.*"'), ExpandConstant('{app}'), 'Ahkuilon.rvm',false) then break;
Проблема в том, что файлы из секции Files распаковываются в самом конце, т.е. сначала идет в данном случае ISArcExtract потом ISExec а уже потом распаковывается файл Pkzip.exe..

Естественно вылезет ошибка в функции ISExec "Файл Pkzip.exe не найден"

Подскажите как реализовать. Спасибо заранее!
 

sergey3695

Ветеран
Модератор
Alloc,
Код:
procedure IsDoneUnpack(CurStep: TSetupStep);
var
  Comps1,Comps2,Comps3:cardinal;
  TotalNeedSize: Cardinal;
  Str: string;
//  FindHandle1,ColFiles1,CurIndex1,tmp:integer;
//  ExecError:boolean;
//  InFilePath,OutFilePath,OutFileName:PAnsiChar;
begin
if CurStep = ssPostInstall then begin  //Если необходимо, можно поменять на ssInstall
...
 

Alloc

Новичок
Я проверил, вроде бы работает, спасибо большое. Но теперь, после того как я поменял на ssPostInstall появилась полоса копирования некоторых файлов включая Pkzip.exe, это шрифты которые устанавливаются.. она появляется на секунду после нажатия на кнопку установить. До этого сразу шла полоса распаковки архивов.. Как это можно предотвратить?

Вот то что у меня в секции Files
Код:
Source: Files\Fonts\Revenant.ttf; DestDir: {fonts}; FontInstall: Revenant; Flags: onlyifdoesntexist uninsneveruninstall
Source: Files\Fonts\RevenantBS.ttf; DestDir: {fonts}; FontInstall: RevenantBS; Flags: onlyifdoesntexist uninsneveruninstall
Source: Files\Fonts\RevenantDlg.ttf; DestDir: {fonts}; FontInstall: RevenantDlg; Flags: onlyifdoesntexist uninsneveruninstall

Source: Include\Pkzip.exe; DestDir: {app}; Flags: ignoreversion deleteafterinstall
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
Как это можно предотвратить?
кинуть в лс или сюды если все равно. я изменю и будет норм. а то я ж не знаю как там. или до завтра - будет пример на основе исдона. в любом случае до завтра. мне влом. я искупался :lol:
 

nik1967

Old Men
Проверенный
Alloc, запаковать Pkzip.exe в архив .arc/bin, затем
Код:
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Pkzip.bin'),  ExpandConstant('{app}'), '', false, '123456', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\Data-1.bin'),  ExpandConstant('{app}'), '', false, '123456', '', ExpandConstant('{app}'), notPCFonFLY {PCFonFLY}) then break;
if not ISExec  ( 1, 0, 0, ExpandConstant('{app}\Pkzip.exe'), ExpandConstant('-add -store -dir=relative -NoZipExtension "{app}\Modules\Ahkuilon.rvm" "{app}\Temp\Modules\Ahkuilon\*.*"'), ExpandConstant('{app}'), 'Ahkuilon.rvm',false) then break;
а из секции files удалить.
 

Alloc

Новичок
sergey3695, спасибо за помощь, это то что нужно)
я пробовал копировать и с {tmp}. Делал так в ISDone.iss:
Код:
if CurStep = ssInstall then begin
ExtractTemporaryFile('Pkzip.exe');
FileCopy(ExpandConstant("{tmp}\Pkzip.exe"), ExpandConstant("{app}\Pkzip.exe"));
end;
но он почему то не копировался

nik1967, спасибо, тоже не плохая идея, приму на вооружение)
 

sergey3695

Ветеран
Модератор
Alloc,
Код:
[Files]
Source: Include\Pkzip.exe; DestDir: {tmp}; Flags: ignoreversion
//...
  if CurStep = ssPostInstall then begin
  ExtractTemporaryFile('Pkzip.exe');
  FileCopy(ExpandConstant('{tmp}\Pkzip.exe'), ExpandConstant('{app}\Pkzip.exe'),False);
  end;
 

Alloc

Новичок
Приветствую уважаемые форумчане!
Подскажите насчет ISDone, как реализовать смену надписи в поле "Извлекается файл:" на тот который указан в ISExec?


Допустим функция:
Код:
if not ISExec       ( 1, 0, 0, ExpandConstant('{sys}\cmd.exe'), ExpandConstant('/c rmdir /s /q "{app}\Temp"'), ExpandConstant('{sys}'), 'Удаление временной папки...',false) then break;
Так вот чтобы когда придет время выполнения данного кода, вместо "Извлекается файл:" отображалось: 'Удаление временной папки...' (ISExec)

Такое возможно сделать?
 
Сверху