PDA

Показать полную графическую версию : Модифицированный SFX модуль 7-Zip'а для установок


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [52] 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101

shao
12-05-2010, 00:08
А Вы пробовали их запустить из указанного у Вас пути? »
Пробовал.А смысл ? Они же удалятся.

Так путь в кавычки не заключают »
Да , но работает..


Как я понимаю механиз работы модуля такой :
Происходит распаковка в указанную директорию - %TMP%
Оттуда из папки 7z происходит запуск батника , указанного в конфигурации.
Удаляются все файлы и папки , по путям, указанным в батнике.
Но почему после отработки батника не удаляется папка 7z ??!!
Ведь в конфиге указано
И ещё непонятно - в конфиге к модулю указано
Delete="%TMP%\\7z"

И ещё : Всё работает с батника install.cmd , если:
start "" hidcon.exe run.cmd

но после замены его же на
start /b run.cmd
начинается вышеуказанное
"второй пакетник.cmd" не является внутренней или внешней командой , исполняемой программой или пакетным файлом

???????

Habetdin
12-05-2010, 00:23
shao, START ["заголовок"] [путь] ...
start "<заголовок>" "%TMP%\7z\run.cmd" /b
<заголовок> можно оставить пустым, а можно и что-нибудь написать :)

Oleg_Sch
12-05-2010, 02:26
shao, проблема дочерних процессов и раннего удаления папки.
Попробуйте start /wait для run.cmd

shao
12-05-2010, 13:33
Спасибо всем, но я теперь вообще запутался :)

Если я указываю в install.cmd
start /wait %TMP%\7z\run.cmd" /b
или просто
start %TMP%\7z\run.cmd" /b

то вот , что происходит (и окно не закрывается, висит...)
http://s59.radikal.ru/i164/1005/28/d258e91a1347.jpg (http://www.radikal.ru)

gora
12-05-2010, 13:56
shao, Вы видимо меня не поняли. Вы же "рубите сук на котором сидите". Файл install.cmd запускает файл run.cmd и ждет пока тот не завершит свою работу и не возвратит управление командой Exit. Теперь смотрите что делает Ваш файл run.cmd (кавычки расставил для корректности файла)@echo off

del "%userprofile%\Recent\*.*" /Q
del "%windir%\Prefetch\*.*" /Q
del "%userprofile%\Local Settings\Temp\*.*" /Q
pushd "%userprofile%\Local Settings\Temp"
rd /s /q .
popd
exit Когда файл дойдет до выделенной красным команды, то он уничтожит ВСЕ в папке Temp в том числе и оба батника. Файл run.cmd перестает существовать и после красной команды более ни чего не совершает и до команды Exit не дойдет, а следовательно и не вернет управление первому файлу install.cmd, который так и будет ждать ответа от, несуществующего уже, файла run.cmd. Теперь понятнее?
Не распаковывайте скрипты в директорию, которую Вы собираетесь ими же уничтожить!

Для удаления в модуле есть команды Delete="file_or_folder_name", которых вполне достаточно для вашей задачи и никаких батников при этом не потребуется.

shao
12-05-2010, 23:53
gora, спасибо, очень доступно и доходчиво объяснили всё.

Вы же "рубите сук на котором сидите" » Я согласен - ситуация нестандартная. Модуль распаковывает батники в ту же папку
для того , чтобы удалить всё из этой же папки :o


Не распаковывайте скрипты в директорию, которую Вы собираетесь ими же уничтожить!
»
- Я пробовал изменить путь распаковки. Проблема та же. Консольное окно висит и папка "7z" не удаляется (хотя в конфиге к модулю указано удалить её.)
- Я пробовал делать всё, как мне советовали, но проблема та же.



Что интересно - у меня всё работало при таких условиях:

-скрипт run.cmd - тот же

-скрипт install.cmd был
start "" hidcon.exe run.cmd
И ВСЁ РАБОТАЛО !!! Вот только во временной директории папка 7z с hidcon.exe оставалась и не удалялась...



В результате два вопроса:

1. Почему при смене команды start "" hidcon.exe XXXXX
на
start /b XXXXXX начинаются проблемы в виде незакрытия и зависания консольного окна ?
2. Почему не удаляется папка 7z из временной директории, хотя в конфиге к модулю это обусловлено. Ведь удаляются же из папки 7z батники которые распаковывает модуль ! ?


И ещё gora, к Вам вопрос :

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

gora
13-05-2010, 09:31
как воспользоваться модулем в данной ситуации. »
На счет команды Delete, я дал маху, она не поддерживает подстановочных знаков.
Для Вашего случаю можно использовать такой файл конфигурации:;!@Install@!UTF-8!
InstallPath="%SystemDrive%\\1234567890"
RunProgram="hidcon:cmd /c Del /Q /F \"%windir%\\Prefetch\\*.*\""
RunProgram="hidcon:cmd /c Del /Q /F \"%userprofile%\\Recent\\*.*\""
RunProgram="hidcon:cmd /c Pushd \"%userprofile%\\Local Settings\\Temp\"& RD /S /Q . & Popd"
Delete="%%T"
GUIMode="2"
;!@InstallEnd@! Содержимое самого архива может быть любым.

mom1
13-05-2010, 20:49
Люди много читал данный форум но не увидел Можно ли выполнять какие либо действия например выполнять командную строку перед распаковкой файлов.
заранее спасибо.

shao
15-05-2010, 05:35
можно использовать такой файл конфигурации: »
Отлично, всё работает. Убеждаюсь , что у модуля большие возможности ,
а у Вас, gora, большой опыт и навыки . Спасибо!

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

END :)

Sonyа
26-05-2010, 08:54
Приветствую, уважаемые!

Помогите, пожалуйста, в решении следующего вопроса:

есть архив со множеством мелких программок (конкретно программы от nirsoft в количестве 130 шт). Хочу сделать sfx архив, чтобы его можно было запускать, указав имя или маску файлов. То есть, чтобы они не все извлекались, а только нужные, иначе очень долго получится. После извлечения - запускалась заданная программа. После отработки - удалялся временный каталог. Такое возможно с данным модулем?

PS: сейчас они лежат в uha архиве, извлекаются по одиночке, для каждой программы свой батник, что очень неудобно.

gek20080402
10-06-2010, 13:48
Добрый день уважаемые форумчане столкнулся с такой задачей в 7z проблема в том что мне нужно извлекать базы данных в определнную папку которая называетя law! оболочка для базы данных всегда устанвливается на диск с и тоже в папку law а вот базы данных в зависимости от размера жесткого диска (так как базы очень большие более 15 гигов) приходится их устанвливать на другие диски где больше места делается это с учетом того что базы постояно растут и обновляются!!!
Теперь собсвенно вопрос можно ли реализовать в 7 zip чтобы он искал путь автоматически папку law но извлекал архивы в ту папку где обьем больше 10гигов
Заранее спасибо за ваши ответы
Хотя бы подскажите где начать рыть а дальше я сам как нить разберусь

Bond01
10-06-2010, 18:33
gek20080402, вот здесь посмотрите http://forum.oszone.net/forum-102.html

gek20080402
11-06-2010, 08:18
Bond01,
Спасибо поищу там если не найду то создам там свою ветку

Oleg_Sch
15-06-2010, 13:29
Очередное обновление.

1.4 alpha (сборка 1774) 06.06.10
# Использован исходный код 7-Zip версии 9.14 beta от 4 июня 2010 г.
+ Проверка необходимого для процесса распаковки: свободного место на диске и размера физической памяти
+ Параметры 'WarningTitle', 'MiscFlags' в конфигурационном файле
+ Ключ '-mfX'


1.4 alpha (сборка 1704) 28.03.10
# Использован исходный код 7-Zip версии 9.12 beta от 24 марта 2010 г.


1.4 alpha (сборка 1698) 22.03.10
# Использован исходный код 7-Zip версии 9.11 beta от 15 марта 2010 г.
* Исключена привязка к msvcr80.dll, ее наличие в системе более модулю не требуется (DrGrechkin:forum.oszone.net)
* Изменена логика передачи параметра из командной строки в первую команду запуска программ. Параметр передается в первую команду, которая реально может быть выполнена с учетом разрядности системы и примененных префиксов 'x64', 'x86'. (gora:forum.oszone.net)

Пример тестовой wiki, показывает, что на соучастие не стоит особо надеяться, но все же может найдутся энтузиасты.
1. Повторюсь, есть wiki (http://7zsfx.info/ru/wiki/), можете наполнять ее, можете создать FAQ, примеры конфигураций и т.д. Сам я заниматься этим не буду, отвечу только на конкретные вопросы, подправлю баги сайта wiki, которые найдутся.
2. Создал SVN репозиторий (тоже пока в тестовом режиме). Те, кто "в теме", поймут о чем я.
Репозиторий модуля:
svn://svn.7zsfx.info/7zsfxmod/
http://svn.7zsfx.info/7zsfxmod/
Так же возможен websvn http://svn.7zsfx.info (http://svn.7zsfx.info/)
Анонимный доступ только для чтения, если кто изъявит желание создать собственную ветку или добавить свою модификацию в основную, пишите мне в почту или ПМ и я предоставлю доступ на запись.

jentoso
16-06-2010, 10:56
Пример тестовой wiki, показывает, что на соучастие не стоит особо надеяться, но все же может найдутся энтузиасты. »
НИчего не смыслю в wiki, но пару страниц все таки сделал (но с ошибками)

Oleg_Sch
16-06-2010, 12:12
НИчего не смыслю в wiki, но пару страниц все таки сделал (но с ошибками) »
Спасибо, я заметил еще вчера. Хоть я и стал уделять модулю гораздо меньше времени, его развитие мне небезразлично.
Таких бы еще "человек несколько" ;)

P.S. а ошибки могут увидеть другие и, при желании, подправить. Для того и ставил wiki

Oleg_Sch
27-06-2010, 12:05
Обновление:


1.4 beta (сборка 1795) 27.06.10
* Некорректная работа ключа '-mf'
* Некорректное сообщение об ошибке перезаписи файлов, если у пользователя недостаточно прав

1.4 beta (сборка 1794) 26.06.10
+ Копирайт (ключ '-sfxversion')

1.4 beta (сборка 1791) 23.06.10
# Использован исходный код 7-Zip версии 9.15 beta от 20 июня 2010 г.

1.4 alpha (сборка 1774) 06.06.10
# Использован исходный код 7-Zip версии 9.14 beta от 4 июня 2010 г.
+ Проверка необходимого для процесса распаковки: свободного место на диске и размера физической памяти
+ Параметры 'WarningTitle', 'MiscFlags' в конфигурационном файле
+ Ключ '-mfX'


Модуль версии 1.4.0 переведен в 'beta', в дальнейшем только исправление ошибок и обновление исходников архиватора.

Oleg_Sch
27-06-2010, 15:30
С учетом того, что ветку 1.4 я заморозил, начал новую 1.5
Для тех, кто хочет поучаствовать в тестировании, прямые ссылки

http://7zsfx.info/develop/7zsd_150_1798_x86.7z
http://7zsfx.info/develop/7zsd_150_1798_x64.7z

Новшеств 2:

1. Надеюсь, побеждена "проблема дочерних процессов"
Теперь модуль отслеживает ВСЕ процессы, которые являются потомками основного запущенного (или его потомков).
Для того, чтобы использовать эту возможность, добавлен новый префикс 'waitall', нпр
RunProgram="waitall:setup.exe"
будет ожидать завершения как самого setup.exe, так и порожденных им процессов.

2. Проблема "прав администратора", а с новыми ОС и еще UAC
Теперь модулю можно указать "для работы мне необходимы права администратора". Он проверит, и если прав недостаточно, выдаст диалог "Run As" или предупреждение UAC о "Разрешить внесение изменений...".
Если пользователь вводит логин администратора или соглашается с запросом UAC, модуль осуществляет всю дальнейшую деятельность с правами админа.

Включается данная функция с помощью нового значения параметра "MiscFlags" - 4 (или ключом командной строки "-mf")
MiscFlags="4"
sfx.exe -mf+4
Данная "фича" проверялась только на домашней машине Windows7 x64, поэтому дополнительное тестирование необходимо. Буду рад всем, кто отпишется. Как уже просил раньше, об успешных результатах писать в почту или ПМ, о проблема - в ветку форума, чтобы все знали. В обоих случаях желательно с конфигурационным файлом (если есть приватные данные - затереть).

p.s.
Скажу честно, я все время ожидал помощи. Ее как не было, так и нет. Справку делает один gora, призыв к правке wiki закончился разовой правкой одним jentoso. Мои личные потребности в модуле закончились более 2 лет назад, если он и нужен мне, то редакции трехлетней давности мне вполне достаточно. Сейчас он пишется для вас. Если так будет продолжаться и дальше - я его заброшу. Не буду расписывать свои финансовые расходы (и уж тем более промолчу о потраченном времени), доходов от него никогда не было. Был голый "энтузяазим", который держался на "моральном удовлетворении". К сожалению, он иссякает и версия 1.5 скорее всего станет последней. Пока я еще в деле, но обещать ничего не буду.

ArtXGroup
29-06-2010, 01:40
Пожалуйста, подскажите! Уже всю голову сломал.

"Помощник по совместимости программ" всегда выдаёт сообщение после завершения всех процессов в SFX-архиве.
Как от него избавиться?

Вот config:
;!@Install@!UTF-8!
Title="7-ZIP SFX Archive"
Progress="no"
GUIFlags=""
OverwriteMode="2"
InstallPath="%temp%"
ExtractPathText="Select extraction path"
ExtractPathTitle="7-ZIP SFX Archive"
ExtractCancelText="Cancel"
RunProgram="nowait:\"wscript\" %%T\\run.vbs"
;!@InstallEnd@!

Habetdin
29-06-2010, 01:47
Как от него избавиться? »
Отключить (http://winreview.ru/Poleznosti/457/Izbavlyaemsya-ot-soobsheniya-Eta-programma-vozmozhno-ustanovlena-nepravilno-v-Windows-7-i-Windows-Vista) его :happy:




© OSzone.net 2001-2012