Menu

New 7z-SFX module (27 KB) for installers

2010-10-08
2022-12-03
1 2 > >> (Page 1 of 2)
  • Igor Pavlov

    Igor Pavlov - 2010-10-08

    Small 7z-SFX module for installers was released.
    ver: 9.17 alpha 1

    Download:
    http://dl.7-zip.org/7z917a1_sfx.7z

    It's test version. Use it only for test purposes.
    The code was not tested enough !!!

    7zS2.sfx     - SFX module (GUI version)
    7zS2con.sfx  - SFX module (Console version, but shows errors to GUI)

    SFX module supports LZMA, LZMA2, BCJ, BCJ2, COPY

    That SFX module is similar to SFX module for installers from 7-Zip Extra.
    The difference (what's new in small version):
    - Smaller size (27 KB vs 100 KB)
    - C source code instead of С++
    - No installer Configuration file
    - No extracting progress window
    - It decompresses solid 7z blocks (it can be whole 7z archive) to RAM.
       So user that calls SFX installer must have free RAM of size of largest
       solid 7z block (size of 7z archive at simplest case).

    How to use

    copy /b 7zS2.sfx + archive.7z sfx.exe

    When you run installer sfx module (sfx.exe)
    1) It creates "7zNNNNNNNN" temp folder in system temp folder.
    2) It extracts .7z archive to that folder
    3) It runs executable from "7zNNNNNNNN" temp folder:
          - setup.exe
          or  
          - first *.exe file, if there is no setup.exe.
    4) It removes "7zNNNNNNNN" temp folder

    You can send parameters to installer, and installer will transfer them to extracted .exe file.

    Examples

    1) To create compressed console 7-Zip:

    7z a c.7z 7z.exe 7z.dll -m0=lzma2 -mx
    copy /b 7zS2con.sfx + c.7z 7zCompr.exe
    7zCompr.exe b -md22

    2) To create compressed GUI 7-Zip:

    7z a g.7z 7zg.exe 7z.dll -mx
    copy /b 7zS2.sfx + g.7z 7zgCompr.exe
    7zgCompr.exe b -md22

    Notes:

    7zS2con.sfx is same executable as 7zS2.sfx, but subsystem field was changed with these commands:
    copy /b 7zS2.sfx 7zS2con.sfx
    editbin 7zS2con.sfx /SUBSYSTEM:CONSOLE

    --
    Please write here your comments.
    Do you need it?
    How do you want to use it?
    What version do you need (console of GUI)?

     
  • Anonymous

    Anonymous - 2010-10-08

    Both gui and cli  end up with "can not allocate memory" dialog, even with archive you provided. Not sure if this my windows screwed up or something else goes wrong.

     
  • Igor Pavlov

    Igor Pavlov - 2010-10-09

    You must put some exe file to archive for sfx.

    I'll fix that incorrect error message, when it can't find exe file.

     
  • gora2

    gora2 - 2010-10-11

    - It decompresses solid 7z blocks (it can be whole 7z archive) to RAM.
       So user that calls SFX installer must have free RAM of size of largest
       solid 7z block (size of 7z archive at simplest case).

    Hello, Igor.
    Whether correctly I have understood your words? If I have packed 2 GB data to solid archive in the size of 256 MB, for unpacking will be RAM=256 MB enough?

     
  • Igor Pavlov

    Igor Pavlov - 2010-10-11

    s1 - solid block size specified by user
    s2 - size of largest file that you compress
    real_solid_block_size <= max(s1, s2)
    ANSI-C .7z decoder in that Setup SFX needs size RAM = real_solid_block_size  <=  max(s1, s2).

     
  • gora2

    gora2 - 2010-10-11

    Спасибо.
    Теперь "хотелки".
    Модуль сильно ограничен в возможностях ввиду отсутствия файла конфигурации. Хотелось бы расширить его функционал за счет использования батника. Т.е., дополнить последовательность поиска и запуска исполняемого файла пунктом:
    - или файл setup.bat (имя и расширение фиксированное), если не найдено ни одного *.exe файла
    Можно и сконвертировать батник в ехе файл, но это усложняет процесс и увеличивает размер, что делает нецелесообразным применение маленького модуля.
    Теперь о скрытии консольного окна, если такой вариант Вами будет принят. Окно при работе sfx лучше скрыть, но при отладке его желательно видеть. Можно для упрощения предусмотреть запуск setup.bat в скрытом виде, а для не скрытого запуска предусмотреть еще одно фиксированное имя, например, show_setup.bat (тут на Ваше усмотрение).
    Возможно ли это сделать и целесообразно ли это, как Вы считаете?

     
  • Igor Pavlov

    Igor Pavlov - 2010-10-11

    gora2:
    I'll think about these .bat file things.
    Describe how do you want  to use that sfx?
    What solution do you use now for these tasks?

     
  • gora2

    gora2 - 2010-10-11

    1
    - Для решения несложных задач: внесения твиков, регистрации/дерегистрации библиотек, удаление ненужных ярлыков, папок, файлов и прочих задач, где достаточно простого батника, но консольное окно будет скрыто и небольшие reg, inf  файлы будут находиться в ОДНОМ SFX.
    - Более сложные задачи по "тихой" установке программ, хотя здесь уже выигрыш за счет маленького модуля будет менее ощутим.
    - Можно использовать как простой конвертор bat2exe. :)
    2 Сейчас использую модифицированные модули от Олега Щербакова. http://7zsfx.info

     
  • Igor Pavlov

    Igor Pavlov - 2010-10-11

    What features of 7zsfx.info SFX do you use that are not supported in 7-zip's SFX?

     
  • gora2

    gora2 - 2010-10-11

    Я использую практически все параметры, префиксы и ключи, которые имеются в модифицированных модулях. В каждом sfx их набор разный и зависит от поставленной задачи, но не нужных мне параметров там практически нет. Модули 7-Zip имеют значительно меньше параметров, что не позволяет мне реализовывать задуманное при их использовании.

     
  • gora2

    gora2 - 2010-11-03

    Здравствуйте, Игорь.

    Несколько вопросов по версии 9.18 маленьких модулей:
    1 Сказано про три уровня приоритетов при запуске файла из SFX.
    1.1 Не перечислено расширение .txt, но в третьем примере запускается именно .txt файл. Хотелось бы разъяснений по этому поводу.
    1.2 Запуск .cab файлов будет только под Windows CE, а в остальных случаях это расширение будет игнорироваться?
    1.3 Не очень понятно про приоритет поиска в корне и в папках. Если у меня будет в корне файл setup.exe, а во вложенной папке файл setup.bat, то какой будет запущен и почему?
    2 Файлы .bat не скрываются, можно предусмотреть вариант (специальное имя или еще что-то) для их скрытого запуска?

     
  • Igor Pavlov

    Igor Pavlov - 2010-11-03

    1.1. 7zS2.sfx  always select one file to execute. If there is only one file in archive, it will execute that file.
    1.2. cab is included in list of prority extensions only for Windows CE.
      Do you think that there is any reason to run .CAB archives in desktop Windows?
    1.3 Any Root files have higher priority then any non-Root files. I just use simple rules for priority now.
    2. Maybe later.

    Also maybe I'll add support for some script there.
    Is it simpler if script file will be included to .7z archive, like ".txt",  than approach from 7zS.sfx?

     
  • gora2

    gora2 - 2010-11-03

    Is it simpler if script file will be included to .7z archive, like ".txt",  than approach from 7zS.sfx?

    Видимо я не достаточно ясно выразился.
    Мне нужен запуск батника со скрытым окном консоли, т.е., что бы консольного окна работы этого батника не было видно.

     
  • Igor Pavlov

    Igor Pavlov - 2010-11-03

    Yes, I understand.
    I just want to say, that maybe such additional options must me specified in config file.

     
  • gora2

    gora2 - 2010-11-03

    in config file

    Но его же нет в маленьких модулях!? Можете привести пример, для доходчивости.

     
  • Igor Pavlov

    Igor Pavlov - 2010-11-03

    Yes, I'm not sure that I want to encode .bat execution options in file name.
    That is why I think about config file.

     
  • gora2

    gora2 - 2010-11-03

    Может быть достаточно будет маркерного файла для включения hide режима консольного окна?
    Например, в архиве имеется исполняемый файл setup.bat. Такой sfx запускается с консольным окном батника. Добавляем в архив маркерный файл setup.bat.txt рядом с setup.bat (имя идентично запускаемому файлу с расширением + добавлено расширение .txt) и в этом случае консольное окно будет скрываться модулем (hide режим). Расширение .txt в данном случае можно сделать и другим, например, .hide для большей информативности. Содержание и размер маркерного файла значения не имеет и обрабатывается модулем только его имя.
    Как Вам такой вариант?

     
  • Igor Pavlov

    Igor Pavlov - 2010-11-03

    I've just compiled test version to check that these things can work:
    http://dl.7-zip.org/7zSfxHide918.7z
    Check it (no need bat..txt file there).

    Changed line in source code:
    ei.nShow = SW_HIDE; // SW_SHOWNORMAL;
    Maybe there is another ways to hide window?
    As I can see It hides only GUI version of SFX.

     
  • gora2

    gora2 - 2010-11-03

    Спасибо, это работает. Правда нужно будет иметь под рукой два комплекта модулей и не запутаться в них, но это не является большой проблемой.
    Еще одна хотелка:
    Модули являются х86 приложениями (мне именно такие и нужны они универсальнее) и при запуске из них батника на х64 системе запускается х86 cmd.exe. Это меня не устраивает, т.к., доступ из батника к некоторым системным папкам будет затруднен. Хотелось бы, что бы батник запускался в cmd.exe, который бы соответствовал разрядности системы. Т.е., при запуске sfx на х64 системе батник бы запускался в х64 cmd.exe и имел переменные среды из х64 системы.
    Можно это реализовать?

     
  • Igor Pavlov

    Igor Pavlov - 2010-11-03

    gora2:
    At least now I don't know how to implement such feature of .bat under x64 .

     
  • gora2

    gora2 - 2010-11-03

    Модифицированные модули от Олега Щербакова имеют такую возможность. Модули создаются на основе исходников 7-Zip, исходники мод. модулей постоянно выкладываются здесь: http://7zsfx.info/ru/download.html
    Может быть найдете время и глянете его исходники?

     
  • Oleg_Sch

    Oleg_Sch - 2010-11-03

    And for addition
    I'm don't know how to set x64 environment variables from x86 parent to x64 child.

     
  • Oleg_Sch

    Oleg_Sch - 2010-11-04

    Changed line in source code: ei.nShow = SW_HIDE; // SW_SHOWNORMAL; Maybe there is another ways to hide window? As I can see It hides only GUI version of SFX.

    In my module also:

    execInfo.fMask |= SEE_MASK_NO_CONSOLE;
    
     
  • gora2

    gora2 - 2010-11-12

    Здравствуйте, Игорь
    Посмотрел описание маленьких модулей и не обнаружил ни каких нововведений в последней (9.19) версии.
    1 Значит ли это, что hide режим запуска батника и режим х64 не реализованы?
    2 Собираетесь ли Вы их реализовывать?
    Спасибо.

     
1 2 > >> (Page 1 of 2)

Log in to post a comment.