ISDone

DLL ISDone 0.6 final

Нет прав для скачивания
Все прив, может кто объяснить чего это за беда и где копать?
4ddf90e7aedb.png
 
Все прив, может кто объяснить чего это за беда и где копать?
Может быть для начала извлечь библиотеку в темп через 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';

Ну либо ее просто не запаковало в инсталлятор.

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

Releas\setup.exe
Include\records.inf

Заранее спасибо!
 
EvilAlex, добавь перемещение файла в нужную папку после isdone.
 
EvilAlex, создает, а не перемещает. пусть создает, а потом перекидываешь в нужную папку если файл найден.Что там, FileExists, FileCopy, DeleteFile. Ну и что непонятно именно? Это лишь как вариант. Чтобы именно создавался, я не знаю, да и незачем по мне так-то.
 
Может быть для начала извлечь библиотеку в темп через 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
 
Последнее редактирование:
Приветствую всех!

Использую 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 не найден"

Подскажите как реализовать. Спасибо заранее!
 
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
...
 
Я проверил, вроде бы работает, спасибо большое. Но теперь, после того как я поменял на 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
 
Последнее редактирование:
Как это можно предотвратить?
кинуть в лс или сюды если все равно. я изменю и будет норм. а то я ж не знаю как там. или до завтра - будет пример на основе исдона. в любом случае до завтра. мне влом. я искупался :lol:
 
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 удалить.
 
sergey3695, спасибо за помощь, это то что нужно)
я пробовал копировать и с {tmp}. Делал так в ISDone.iss:
Код:
if CurStep = ssInstall then begin
ExtractTemporaryFile('Pkzip.exe');
FileCopy(ExpandConstant("{tmp}\Pkzip.exe"), ExpandConstant("{app}\Pkzip.exe"));
end;

но он почему то не копировался

nik1967, спасибо, тоже не плохая идея, приму на вооружение)
 
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;
 
Приветствую уважаемые форумчане!
Подскажите насчет ISDone, как реализовать смену надписи в поле "Извлекается файл:" на тот который указан в ISExec?

Cv91gYd.png

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

Так вот чтобы когда придет время выполнения данного кода, вместо "Извлекается файл:" отображалось: 'Удаление временной папки...' (ISExec)

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