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)?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
- 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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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).
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Спасибо.
Теперь "хотелки".
Модуль сильно ограничен в возможностях ввиду отсутствия файла конфигурации. Хотелось бы расширить его функционал за счет использования батника. Т.е., дополнить последовательность поиска и запуска исполняемого файла пунктом:
- или файл setup.bat (имя и расширение фиксированное), если не найдено ни одного *.exe файла
Можно и сконвертировать батник в ехе файл, но это усложняет процесс и увеличивает размер, что делает нецелесообразным применение маленького модуля.
Теперь о скрытии консольного окна, если такой вариант Вами будет принят. Окно при работе sfx лучше скрыть, но при отладке его желательно видеть. Можно для упрощения предусмотреть запуск setup.bat в скрытом виде, а для не скрытого запуска предусмотреть еще одно фиксированное имя, например, show_setup.bat (тут на Ваше усмотрение).
Возможно ли это сделать и целесообразно ли это, как Вы считаете?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
1
- Для решения несложных задач: внесения твиков, регистрации/дерегистрации библиотек, удаление ненужных ярлыков, папок, файлов и прочих задач, где достаточно простого батника, но консольное окно будет скрыто и небольшие reg, inf файлы будут находиться в ОДНОМ SFX.
- Более сложные задачи по "тихой" установке программ, хотя здесь уже выигрыш за счет маленького модуля будет менее ощутим.
- Можно использовать как простой конвертор bat2exe. :)
2 Сейчас использую модифицированные модули от Олега Щербакова. http://7zsfx.info
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Я использую практически все параметры, префиксы и ключи, которые имеются в модифицированных модулях. В каждом sfx их набор разный и зависит от поставленной задачи, но не нужных мне параметров там практически нет. Модули 7-Zip имеют значительно меньше параметров, что не позволяет мне реализовывать задуманное при их использовании.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Несколько вопросов по версии 9.18 маленьких модулей:
1 Сказано про три уровня приоритетов при запуске файла из SFX.
1.1 Не перечислено расширение .txt, но в третьем примере запускается именно .txt файл. Хотелось бы разъяснений по этому поводу.
1.2 Запуск .cab файлов будет только под Windows CE, а в остальных случаях это расширение будет игнорироваться?
1.3 Не очень понятно про приоритет поиска в корне и в папках. Если у меня будет в корне файл setup.exe, а во вложенной папке файл setup.bat, то какой будет запущен и почему?
2 Файлы .bat не скрываются, можно предусмотреть вариант (специальное имя или еще что-то) для их скрытого запуска?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Is it simpler if script file will be included to .7z archive, like ".txt", than approach from 7zS.sfx?
Видимо я не достаточно ясно выразился.
Мне нужен запуск батника со скрытым окном консоли, т.е., что бы консольного окна работы этого батника не было видно.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Может быть достаточно будет маркерного файла для включения hide режима консольного окна?
Например, в архиве имеется исполняемый файл setup.bat. Такой sfx запускается с консольным окном батника. Добавляем в архив маркерный файл setup.bat.txtрядом с setup.bat (имя идентично запускаемому файлу с расширением + добавлено расширение .txt) и в этом случае консольное окно будет скрываться модулем (hide режим). Расширение .txt в данном случае можно сделать и другим, например, .hide для большей информативности. Содержание и размер маркерного файла значения не имеет и обрабатывается модулем только его имя.
Как Вам такой вариант?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Спасибо, это работает. Правда нужно будет иметь под рукой два комплекта модулей и не запутаться в них, но это не является большой проблемой.
Еще одна хотелка:
Модули являются х86 приложениями (мне именно такие и нужны они универсальнее) и при запуске из них батника на х64 системе запускается х86 cmd.exe. Это меня не устраивает, т.к., доступ из батника к некоторым системным папкам будет затруднен. Хотелось бы, что бы батник запускался в cmd.exe, который бы соответствовал разрядности системы. Т.е., при запуске sfx на х64 системе батник бы запускался в х64 cmd.exe и имел переменные среды из х64 системы.
Можно это реализовать?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Модифицированные модули от Олега Щербакова имеют такую возможность. Модули создаются на основе исходников 7-Zip, исходники мод. модулей постоянно выкладываются здесь: http://7zsfx.info/ru/download.html
Может быть найдете время и глянете его исходники?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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;
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Здравствуйте, Игорь
Посмотрел описание маленьких модулей и не обнаружил ни каких нововведений в последней (9.19) версии.
1 Значит ли это, что hide режим запуска батника и режим х64 не реализованы?
2 Собираетесь ли Вы их реализовывать?
Спасибо.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
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)?
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.
You must put some exe file to archive for sfx.
I'll fix that incorrect error message, when it can't find exe file.
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?
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).
Спасибо.
Теперь "хотелки".
Модуль сильно ограничен в возможностях ввиду отсутствия файла конфигурации. Хотелось бы расширить его функционал за счет использования батника. Т.е., дополнить последовательность поиска и запуска исполняемого файла пунктом:
- или файл setup.bat (имя и расширение фиксированное), если не найдено ни одного *.exe файла
Можно и сконвертировать батник в ехе файл, но это усложняет процесс и увеличивает размер, что делает нецелесообразным применение маленького модуля.
Теперь о скрытии консольного окна, если такой вариант Вами будет принят. Окно при работе sfx лучше скрыть, но при отладке его желательно видеть. Можно для упрощения предусмотреть запуск setup.bat в скрытом виде, а для не скрытого запуска предусмотреть еще одно фиксированное имя, например, show_setup.bat (тут на Ваше усмотрение).
Возможно ли это сделать и целесообразно ли это, как Вы считаете?
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?
1
- Для решения несложных задач: внесения твиков, регистрации/дерегистрации библиотек, удаление ненужных ярлыков, папок, файлов и прочих задач, где достаточно простого батника, но консольное окно будет скрыто и небольшие reg, inf файлы будут находиться в ОДНОМ SFX.
- Более сложные задачи по "тихой" установке программ, хотя здесь уже выигрыш за счет маленького модуля будет менее ощутим.
- Можно использовать как простой конвертор bat2exe. :)
2 Сейчас использую модифицированные модули от Олега Щербакова. http://7zsfx.info
What features of 7zsfx.info SFX do you use that are not supported in 7-zip's SFX?
Я использую практически все параметры, префиксы и ключи, которые имеются в модифицированных модулях. В каждом sfx их набор разный и зависит от поставленной задачи, но не нужных мне параметров там практически нет. Модули 7-Zip имеют значительно меньше параметров, что не позволяет мне реализовывать задуманное при их использовании.
Здравствуйте, Игорь.
Несколько вопросов по версии 9.18 маленьких модулей:
1 Сказано про три уровня приоритетов при запуске файла из SFX.
1.1 Не перечислено расширение .txt, но в третьем примере запускается именно .txt файл. Хотелось бы разъяснений по этому поводу.
1.2 Запуск .cab файлов будет только под Windows CE, а в остальных случаях это расширение будет игнорироваться?
1.3 Не очень понятно про приоритет поиска в корне и в папках. Если у меня будет в корне файл setup.exe, а во вложенной папке файл setup.bat, то какой будет запущен и почему?
2 Файлы .bat не скрываются, можно предусмотреть вариант (специальное имя или еще что-то) для их скрытого запуска?
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?
Видимо я не достаточно ясно выразился.
Мне нужен запуск батника со скрытым окном консоли, т.е., что бы консольного окна работы этого батника не было видно.
Yes, I understand.
I just want to say, that maybe such additional options must me specified in config file.
Но его же нет в маленьких модулях!? Можете привести пример, для доходчивости.
Yes, I'm not sure that I want to encode .bat execution options in file name.
That is why I think about config file.
Может быть достаточно будет маркерного файла для включения hide режима консольного окна?
Например, в архиве имеется исполняемый файл setup.bat. Такой sfx запускается с консольным окном батника. Добавляем в архив маркерный файл setup.bat.txt рядом с setup.bat (имя идентично запускаемому файлу с расширением + добавлено расширение .txt) и в этом случае консольное окно будет скрываться модулем (hide режим). Расширение .txt в данном случае можно сделать и другим, например, .hide для большей информативности. Содержание и размер маркерного файла значения не имеет и обрабатывается модулем только его имя.
Как Вам такой вариант?
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.
Спасибо, это работает. Правда нужно будет иметь под рукой два комплекта модулей и не запутаться в них, но это не является большой проблемой.
Еще одна хотелка:
Модули являются х86 приложениями (мне именно такие и нужны они универсальнее) и при запуске из них батника на х64 системе запускается х86 cmd.exe. Это меня не устраивает, т.к., доступ из батника к некоторым системным папкам будет затруднен. Хотелось бы, что бы батник запускался в cmd.exe, который бы соответствовал разрядности системы. Т.е., при запуске sfx на х64 системе батник бы запускался в х64 cmd.exe и имел переменные среды из х64 системы.
Можно это реализовать?
gora2:
At least now I don't know how to implement such feature of .bat under x64 .
Модифицированные модули от Олега Щербакова имеют такую возможность. Модули создаются на основе исходников 7-Zip, исходники мод. модулей постоянно выкладываются здесь: http://7zsfx.info/ru/download.html
Может быть найдете время и глянете его исходники?
I'm just correct gora2.
The best place to view lastest sources of the modified module is http://svn.7zsfx.info
Main job of switching to x64 is done in Helpers.cpp in function SfxDisableWow64FsRedirection (see SDK for functions Wow64DisableWow64FsRedirection/Wow64RevertWow64FsRedirection)
http://svn.7zsfx.info/filedetails.php?repname=7zSfxMod&path=%2Fbranches%2F1.5.0-alpha%2F7zSfxMod%2Fsources%2FHelpers.cpp
And for addition
I'm don't know how to set x64 environment variables from x86 parent to x64 child.
In my module also:
Здравствуйте, Игорь
Посмотрел описание маленьких модулей и не обнаружил ни каких нововведений в последней (9.19) версии.
1 Значит ли это, что hide режим запуска батника и режим х64 не реализованы?
2 Собираетесь ли Вы их реализовывать?
Спасибо.