ISDone

DLL ISDone 0.6 final

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

Sergei1981

Мимокрокодил
Гуру. Помогите на примере оригинального скрипта isdone, убрать прогресс бары, оставить только проценты и время.
 

Timick

Старожил
Гуру. Помогите на примере оригинального скрипта isdone, убрать прогресс бары, оставить только проценты и время.
Ищи поиском строку "ISDoneCancel:=0;" и после вставляй это:
Код:
    ISDoneProgressBar1.Hide();
    #ifdef SecondProgressBar
      ISDoneProgressBar2.Hide();
    #endif
 

stas2503

Мимокрокодил
Доброго времени суток, у меня вопрос по коду в inno setup с библиотекой IsDone.
Пишу такой код:
Код:
if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\Data\Data.bin'), ExpandConstant('{app}\mods'), false, '') then break;
if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\mods\Mod1\*'), ExpandConstant('{app}\TempArc\001.zip'), 9, true ) then break;
Архив создается, тут все в порядке, но мне нужно сделать так, чтобы созданный архив распаковался в папку {app}\Data
пробовал и IS7ZipExtract включать и ISRarExtract - выдает ошибку открытия и инсталлятор закрывается.
 

vint56

Ветеран
Проверенный
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Data.bin'), ExpandConstant('{app}\Data\mods'), false, '') then break;
 

stas2503

Мимокрокодил
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Data.bin'), ExpandConstant('{app}\Data\mods'), false, '') then break;
Обьясню по другому
В 7-zip архивеData.bin есть 3 папки -mod1, mod2, mod2
Я его распаковываю строкой
Код:
if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\Data\Data.bin'), ExpandConstant('{app}\mods'), false, '') then break;
И вот теперь мне содержимое папок
Код:
{app}\mods\mod1
{app}\mods\mod2
{app}\mods\mod3
надо перенести в папку
Код:
{app}\Data
Далее я пишу строки
Код:
if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\mods\Mod1\*'), ExpandConstant('{app}\TempArc\001.zip'), 2, true ) then break;
if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\mods\Mod2\*'), ExpandConstant('{app}\TempArc\002.zip'), 2, true ) then break;
if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\mods\Mod3\*'), ExpandConstant('{app}\TempArc\003.zip'), 2, true ) then break;
Все три архива успешно создаются. Мне нужно чтобы они распаковались в папку {app}\Data
Функции IS7ZipExtract и ISRarExtract не хотят открывать эти архивы.
 

vint56

Ветеран
Проверенный
if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\Data\Data.bin'), ExpandConstant('{app}'), false, '') then break;
if not ISPackZIP ( 0, 0, ExpandConstant('{app}\Data\mod1\*'), ExpandConstant('{app}\Data\001.zip'), 2, True ) then break;
if not ISPackZIP ( 0, 0, ExpandConstant('{app}\Data\mod2\*'), ExpandConstant('{app}\Data\002.zip'), 2, True ) then break;
if not ISPackZIP ( 0, 0, ExpandConstant('{app}\Data\mod3\*'), ExpandConstant('{app}\Data\003.zip'), 2, True ) then break;
 

stas2503

Мимокрокодил
@vint56,Ладно... Еще раз
Задача такова
Надо из папок "{app}\mods\mod1", "{app}\mods\mod2", "{app}\mods\mod3"и т.д. переместить данные в папку "{app}\Data", при необходимости перезаписывая данные.
пишу такой код
Код:
        if not IS7ZipExtract   ( 0, 0, ExpandConstant('{src}\SKYGS4\Data.bin'), ExpandConstant('{app}\mods'), false, '') then break;
        if not ISPackZIP       ( 0, 0, ExpandConstant('{app}\mods\mod1\*'), ExpandConstant('{app}\TempArc\001.zip'), 2, true ) then break;
        if not IS7ZipExtract   ( 0, 0, ExpandConstant('{app}\TempArc\001.zip'), ExpandConstant('{app}\Data'), true, '') then break;
3-я строка не работает
Меняю в третьей строке IS7ZipExtract на ISRarExtract, все равно не работает.
Я уже и через консоль пробовал перемещение, и библиотеку ISCopyFile - ничто не помогает.
 

ffmla

Участник
@vint56,Ладно... Еще раз

Задача такова

Надо из папок "{app}\mods\mod1", "{app}\mods\mod2", "{app}\mods\mod3"и т.д. переместить данные в папку "{app}\Data", при необходимости перезаписывая данные.

пишу такой код

Код:
        if not IS7ZipExtract ( 0, 0, ExpandConstant('{src}\SKYGS4\Data.bin'), ExpandConstant('{app}\mods'), false, '') then break;

        if not ISPackZIP ( 0, 0, ExpandConstant('{app}\mods\mod1\*'), ExpandConstant('{app}\TempArc\001.zip'), 2, true ) then break;

        if not IS7ZipExtract ( 0, 0, ExpandConstant('{app}\TempArc\001.zip'), ExpandConstant('{app}\Data'), true, '') then break;
3-я строка не работает

Меняю в третьей строке IS7ZipExtract на ISRarExtract, все равно не работает.

Я уже и через консоль пробовал перемещение, и библиотеку ISCopyFile - ничто не помогает.
Whats the reason behind the ISPACKZIP to again compressing the archive.?

You may simply use the SHFileoperation.iss to use the respective CopyDir or MoveDir to do your desire things.

Why main unpack-> zipping-> again unpacking.....?
 

Shegorat

Lord of Madness
Администратор
@stas2503,
ISDone не умеет распаковывать ZIP архивы. Это первое.
Второе - зачем такие сложности? Почему нельзя распаковывать сразу в {app}\data?
Ну либо почему нельзя потом переместить нужные файлы с перезаписью?
 

stas2503

Мимокрокодил
Второе - зачем такие сложности? Почему нельзя распаковывать сразу в {app}\data?
Я делаю установку с 700 модами для игры, которая весит 84 Гб (при этом самый маленький мод 5Кб, самый большой - 10 Гб)
И вот чтобы не удваивать и без того большую установку. Я делаю 2-й инсталлятор
1-й инсталлятор распаковывает все в папку mods - при этом каждый мод в отдельной папке
А вот второй инсталлятор я пытаюсь сделать так, чтобы он хватал ресурсы первого инсталлятора и и помещал каждый из 700 модов в папку Data.
Очевидно, что не хочется иметь 168 Гб данных и 700 разных архивов

UPD: Ммм... Кажется придумал решение.
Попробую создать отдельные инсталляторы на ISCopyFile, затем поместить их в основной инсталлятор. и вызывать их тихий запуск после установки комендной строкой.
По крайней мере у меня так вызывается установщик нужной программы в первом инсталляторе
Протестирую.
 
Последнее редактирование:

tihiy_don

Новичок
Я делаю установку с 700 модами для игры, которая весит 84 Гб (при этом самый маленький мод 5Кб, самый большой - 10 Гб)
И вот чтобы не удваивать и без того большую установку. Я делаю 2-й инсталлятор
1-й инсталлятор распаковывает все в папку mods - при этом каждый мод в отдельной папке
А вот второй инсталлятор я пытаюсь сделать так, чтобы он хватал ресурсы первого инсталлятора и и помещал каждый из 700 модов в папку Data.
Очевидно, что не хочется иметь 168 Гб данных и 700 разных архивов

UPD: Ммм... Кажется придумал решение.
Попробую создать отдельные инсталляторы на ISCopyFile, затем поместить их в основной инсталлятор. и вызывать их тихий запуск после установки комендной строкой.
По крайней мере у меня так вызывается установщик нужной программы в первом инсталляторе
Протестирую.
А что за игра, если не секрет?
 

Crachlow

Новичок
Как вариант, можно поместить все моды в отдельный архив, добавить в установщик unarc.exe, и извлекать необходимый мод с помощью команды unarc.exe -ap{Path}.
 

stas2503

Мимокрокодил
В общем спасибо всем за отклик... Нашел решение с помощью запуска командной строки...
Код:
robocopy "mods\[Папка с модом]" Data /E /MOVE
Прописал в батник нужное количество строк с именами папок, а батник указал как приложение, которое должно запуститься после инсталляции.
 
Сверху