Menu

innounp 0.46 cannot unpack GIMP v2.10.2 - unsupported Inno Setup version 5.6.0

VictorVG
2018-05-24
2018-06-20
  • VictorVG

    VictorVG - 2018-05-24

    Выложили [GIMP 2.10.2]https://download.gimp.org/mirror/pub/gimp/v2.10/windows/gimp-2.10.2-setup.exe) и на данный момент версия 0.46 его не может распаковать неправильно сообщая об ошибке:

    ; Version detected: 5507 (Unicode)
    Critical error: The setup files are corrupted. Please obtain a new copy of the program.

    поскольку там судя по записи деинсталляции использована новая версия 5.6.0 Beta которую текущая версия унпакера ещё не знает:

    Windows Registry Editor Version 5.00

    [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GIMP-2_is1]
    "Inno Setup: Setup Version"="5.6.0 (u)"
    ......
    "DisplayVersion"="2.10.2"
    "Publisher"="The GIMP Team"
    "URLInfoAbout"="https://www.gimp.org/"
    "HelpLink"="https://www.gimp.org/docs/"
    "URLUpdateInfo"="https://www.gimp.org/"
    .....
    "Inno Setup CodeFile: 32BitMode"="False"

    так что нам есть повод к обновлению. Не ясно только зачем этой бетой воспользовались?

     

    Last edit: VictorVG 2018-05-24
  • Ariman

    Ariman - 2018-05-24

    Не получится пока обновиться. Версию автор поднял, а сигнатура старая осталась - 5.5.7 (можно в Фаре открыть и посмотреть, если интересно).

     
  • VictorVG

    VictorVG - 2018-05-25

    Понял, вывод видел. Я собственно и распаковать хотел из-за вопроса на борде в теме по GIMP-у:

    dynamo86

    Установил на свою Win7 (x86) версию 2.10.2. Ни одна иконка в программе не отображается, вместо иконок одни точки. Что не так?

    думаю " v2.10.0 только в х64 была, как он её на 32-х битную ось установил? надо начинку инсталлера глянуть" ан, не получилось...

     
  • VictorVG

    VictorVG - 2018-06-08

    Н-н-да, вышла стабильная Inno Setup 5.6.0 а прицепится к игнатуре для распаковки пока не выходит:

    $ innounp innosetup-qsp-5.6.0-unicode.exe
    ; Version detected: 5507 (Unicode)
    Critical error: The setup files are corrupted. Please obtain a new copy of the program.

    и идей как обойти затык нет...:(

     
  • Ariman

    Ariman - 2018-06-08

    Как-то вот это меня заинтриговало, и посравнивал я сорцы новой и старой версии. Оказывается, там структуры не поменялись, поэтому, наверное, и сигнатуру автор не сменил.
    После тыкания отладчиком и воскурения сорцов, выяснилось, что в новой версии вместо традиционной одной картинки в визарде, теперь их может быть много. И там, где раньше сразу шла распаковка данных, теперь надо читать количество картинок ,а потом их по очереди распаковывать.
    Проблема решаемая, только теперь вопрос как узнать одна у нас картинка или несколько. С неизменной сигнатурой подстава конечно.

     
  • VictorVG

    VictorVG - 2018-06-10

    Н-да. Не было печали - черти накачали.:) По идее раз картинок несколько, то где-то нужен счётчик чтобы стаб мог их вывести. По крайней мере в OS/360 указание на вершину стека ресурсов без указания его глубины воспринималось как неуважение разработчика к коллегам, и за это мигом лишали премии, а могли и уволить за профнепригодностью - "Вы не один над проектом работаете! Никто не будет разбираться в ваших каракулях!".

    Потому мне думается где-то должен сидеть указатель на вершину цепочки и счётчик её текущей глубины, а данные должны сидеть по смещению статовый адрес цепочки + её длинна. (?) - я бы так сделал что типа такой вставки на ассемблере (S/360):

    la *,* // инициализируем счётчик адреса адресом загрузки (хотя по совести это и не надо - загрузчик уже это сделал, но ...)
    br *+4 // установим счётчик адреса *+4
    dd 0x00000000 // определим размер блока ресурсов в байтах как Int(4)
    lr r1,*-2 // прочитаем размер блока ресурсов в r1
    la r2,*+2 // прочитаем адрес блока ресурсов в r2
    br *+r1 // обойдём блок ресурсов
    dd ... // начало блока ресурсов
    .....
    dd  ... // конец блока ресурсов
    // первая команда исполняемого кода
    

    для обхода расположенного в области точки входа блока внедрённых ресурсов и передачи управления на первую исполняемую команду в коде, при этом в r1 останется длинна блока ресурсов, а его адрес будет в r2

     

    Last edit: VictorVG 2018-06-10
  • Ariman

    Ariman - 2018-06-12

    Ну счетчик то там есть. Инсталяха же должна знать сама сколько там картинок. Тут некоторая сложность в том, что мы не знаем, что у нас первое число в распакованом потоке: счетчик на много картинок или это уже сама картинка пошла. Версия то не поменялась, а формат да.
    Задача вполне решаемая, но туповато получится.

     
  • VictorVG

    VictorVG - 2018-06-12

    А давай смиотреть от формата картинок - мы их по хидеру можем распознать, и посмотреть что за ней у нас идёт - картинка или что-то похожее на данные. Не айс,но я иной идеи с ходу не вижу....

     
  • Ariman

    Ariman - 2018-06-12

    Та не, там попроще система нужна. В инсталяхе все данные идут непрерывным потоком сжатым lzma. И чтобы понять размер картинки перед данными идет размер файла. А теперь ещё и счетчик идет. Т.е. по сути надо прочитать число из потока (и счетчик и размер по 4 байта) и прикинуть на что это значение больше похоже. На количество картинок или на размер файла. Туповатый алгоритм, но должно работать.

     
  • VictorVG

    VictorVG - 2018-06-16

    По идее давай посмотрим благо у нас есть на чём проверить - сам дистрибутив не велик, значит коли что распракуется быстро и GIMP, но он довольно велик и содержит много файлов, но там вроде могут быть переменные картинки. Ну а нет - сами сотворим какой тест набор. Было бы что в качестве тест-кучи.

     

    Last edit: VictorVG 2018-06-16
  • VictorVG

    VictorVG - 2018-06-20

    Пока на сайте инки какие-то работы положил в архиве QuickStart Pack v5.6.1 от 17.06.2018 - https://www.upload.ee/files/8580363/Inno_Setup.7z.html там ANSI, UNICODE варианты и история в CHM (делал для удобства чтения).

     

Log in to post a comment.