ISDone

DLL ISDone 0.6 final

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

Spider

Новичок
Edison007,ошибка вылазиет почти как у miko,вот...
IsDone.dll
Произошла ошибка при распаковке!
Unarc.dll вернул код ошибки:-1
ERROR:archive data corrupted (decompression fails)
 

Snoopak96

Старожил
Spider,
Рядом с архивом положи
1. unarc.exe
2. Cls-srep.dll
3. Создай батник содержанием (тоже рядом с архивом): unarc.exe x ТвойАрхив.bin
4. и запусти
Если в конце увидишь "All ok" - выпрямляй руки.
 

ProFrager

Знаток
Проверенный
Еще при упаковке этого архива в arc.ini в секции [Srep] должна быть строка Header=0, иначе ничего не распакуется потом.
 

Spider

Новичок
Всё работает,но только как всё это осущевствить в Inno Setup?
 

ProFrager

Знаток
Проверенный
Edison007, она внутри isdone.dll. Загружается в память напрямую.
 

Лёха

Участник
Доброго времени суток всем.
Народ, только не ругайтесь, но может кто обновит скрипт "Закос под IPhone Shepards" просто скрипт очень функционален и оформление отличное, только ему не хватает последней ISDone.
Заранее спасибо.
 

Krinkels

Он где то тут
Администратор
а на то как ISDone прикручивать нет, пора бы уже написать.
И как ты себе это представляешь? За распаковку через ISDone отвечает код который скопировал и вставил. А вот чтоб отображался процесс распаковки, тут нужно поработать ручками.
 

LexBell

Борода
Супер модератор
тут нужно поработать ручками.
там уже поработано ручками :) просто, если брать оригинал шепы - криво это дело сделано. Так что все сводится к тупой замене функций исдона и внутри процедуры CurStep - сама распаковка.
 
Последнее редактирование:

Inknorth

Мимокрокодил
Здравствуйте!
Использую ISDone 0.6f, возникла необходимость распаковывать определенные arc-архивы в зависимости от выбранных компонентов. Делал все так, как написано в readme.chm в примере 2 и столкнулся с тем, что инсталлятор при любой расстановке галочек в чекбоксах распаковывает ВСЕ архивы. Кому не сложно, можете сделать работающий пример и залить на rghost, чтоб я сравнил и разобрался где у меня ошибки.
Заранее благодарен!
 

LexBell

Борода
Супер модератор
Inknorth, Справку еще раз прочитай. В следующий раз именно за этот вопрос будет бан сразу.
 

sergey3695

Ветеран
Модератор
Здравствуйте!
Использую ISDone 0.6f, возникла необходимость распаковывать определенные arc-архивы в зависимости от выбранных компонентов. Делал все так, как написано в readme.chm в примере 2 и столкнулся с тем, что инсталлятор при любой расстановке галочек в чекбоксах распаковывает ВСЕ архивы. Кому не сложно, можете сделать работающий пример и залить на rghost, чтоб я сравнил и разобрался где у меня ошибки.
Заранее благодарен!
[Types]
Name: full; Description: Full installation; Flags: iscustom

[Components]
Name: text; Description: Язык субтитров; Types: full; Flags: fixed
Name: text\rus; Description: Русский; Flags: exclusive;
Name: text\eng; Description: Английский; Flags: exclusive;
Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
Name: voice\rus; Description: Русский; Flags: exclusive;
Name: voice\eng; Description: Английский; Flags: exclusive;

....

Comps1:=0; Comps2:=0; Comps3:=0;
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

....

ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
if not FileSearchInit(false) then break;
if not ISArcExtract ( 0, 0, ExpandConstant('{src}\BasicData.arc'), ExpandConstant('{app}\'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{src}\rustext.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\engtext.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\rusvoice.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 4, 0, ExpandConstant('{src}\engvoice.arc'), ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
ISDoneError:=false;
until true;
ISDoneStop;
end;
 

Snoopak96

Старожил
Inknorth,
в справке (читать по слогам):
ISDone\Работа с библиотекой\Автоматическая расстановка процентных соотношений в операциях.
 

Inknorth

Мимокрокодил
Да, спасибо, уже разобрался.
Тут возник другой вопрос...
Хочу чтобы arc-архивы были не внешними, а копировались сначала из инсталлятора в tmp, потом уже распаковывались в app, и по завершению удалялись. При этом в tmp должны копироваться только те arc, которые относятся к выбранным компонентам. Вот что я пытался сделать на примере ISDone_Example

Добавляю архивы:

[Files]
Source: rustext.arc; DestDir: {tmp}; Flags: dontcopy;
Source: rusvoice.arc; DestDir: {tmp}; Flags: dontcopy;
Source: engtext.arc; DestDir: {tmp}; Flags: dontcopy;
Source: engvoice.arc; DestDir: {tmp}; Flags: dontcopy;
....

Добавляю копирование arc при выборе компонентов :

#ifdef Components

TmpValue:=1;

if IsComponentSelected('text\rus') then
begin
Comps1:=Comps1+TmpValue;
ExtractTemporaryFile('rustext.arc');
end;

TmpValue:=TmpValue*2;

if IsComponentSelected('text\eng') then
begin
Comps1:=Comps1+TmpValue;
ExtractTemporaryFile('engtext.arc');
end;

TmpValue:=TmpValue*2;
-
if IsComponentSelected('voice\rus') then
begin
Comps1:=Comps1+TmpValue;
ExtractTemporaryFile('rusvoice.arc');
end;

TmpValue:=TmpValue*2;

if IsComponentSelected('voice\eng') then
begin
Comps1:=Comps1+TmpValue;
ExtractTemporaryFile('engvoice.arc');
end;

// .....
// см. справку
#endif

....

Собственно, сама распаковка архивов:

ISDoneError:=true;
if ISDoneInit(ExpandConstant('{src}\records.inf'), $F777, Comps1,Comps2,Comps3, MainForm.Handle, {#NeedMem}, @ProgressCallback) then begin
repeat
if not FileSearchInit(true) then break;
ExpandConstant('{app}'), '', false, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 1, 0, ExpandConstant('{tmp}\rustext.arc'), ExpandConstant('{app}\RUTEXT'), '', true, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{tmp}\engtext.arc'), ExpandConstant('{app}\ENGTEXT'), '', true, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{tmp}\rusvoice.arc'), ExpandConstant('{app}\RUVOICE'), '', true, '', '', '', notPCFonFLY) then break;
if not ISArcExtract ( 4, 0, ExpandConstant('{tmp}\engvoice.arc'), ExpandConstant('{app}\ENGVOICE'), '', true, '', '', '', notPCFonFLY) then break;

И при тестовом прогоне выдает ошибку функции "не найдено ни одного файла для функции ISArcExtract".
Пробовал делать так, чтобы вначале абсолютно все arc-архивы в tmp копировались, вне зависимости от выбора компонентов , а уже потом какие были отмечены распаковывались - все работает отлично. Но это очень неудачный вариант, так как это требует лишнего времени и свободного места.
Подскажите, что надо исправить.
 

Edison007

Ветеран
Модератор
Inknorth
скажем так, что и твои телодвижения требуют лишнего, а воовще:
1. Прочитай, что написано выше
2. Читай справку к исдону
3. Читай справку к Инно Сетуп
 

deus_ex

Новичок
Проверенный
В общем-то столкнулся с такой вот проблемой:
Мне нужно через исдон распаковать архив, но только если выбраны два компонента одновременно.

Допустим у меня есть:
компонент 1 - русский текст
компонент 2 - русская озвучка
три архива - А, Б, В

если я выбрал ком1, то распаковывается архивА
если выбрал ком2, то распаковывается архивБ
если получилось так, что выбрали одновременно ком1 и ком2, то распаковывается архивВ

вот как прописать распаковку архиваВ?

Я как понял силами именно исдона этого не сделать?
Можно сделать по-другому, т.е. прописать мол
иф компонент1 селектед энд компонент2 селектед зен бегин и дальше действие, но это уже без плавного прогресс бара от исдона будет..

Добавлено через 5 минут
Inknorth, попробуй конкретную папку в темпе указать для копирования. к примеру:
[Files]
Source: rustext.arc; DestDir: {tmp}\rustext; Flags: dontcopy;

ну и распаковку прописать тоже с конкретной папкой:
if not ISArcExtract ( 1, 0, ExpandConstant('{tmp}\rustext\rustext.arc'), ExpandConstant('{app}\RUTEXT'), '', true, '', '', '', notPCFonFLY) then break;

а вообще конечно зря все эти ухищрения..
 

ProFrager

Знаток
Проверенный
deus_ex,

#ifdef Components
TmpValue:=1;
if IsComponentSelected('ком1') then Comps1:=Comps1+TmpValue; //компонент 1
TmpValue:=TmpValue*2;
if IsComponentSelected('ком2') then Comps1:=Comps1+TmpValue; //компонент 2
TmpValue:=TmpValue*2;
if IsComponentSelected('ком1') and IsComponentSelected('ком2') then Comps1:=Comps1+TmpValue; //компонент 3
// .....

if not ISArcExtract ( 1, 0, ExpandConstant('{src}\arc1.arc'), ExpandConstant('{app}\'), '', false, '', '', ExpandConstant('{app}\'), notPCFonFLY) then break;
if not ISArcExtract ( 2, 0, ExpandConstant('{src}\arc2.arc'), ExpandConstant('{app}\'), '', false, '', '', ExpandConstant('{app}\'), notPCFonFLY) then break;
if not ISArcExtract ( 3, 0, ExpandConstant('{src}\arc3.arc'), ExpandConstant('{app}\'), '', false, '', '', ExpandConstant('{app}\'), notPCFonFLY) then break;
 
Сверху