Показать полную графическую версию : .: Файлы конфигурации 7z SFX. Помощь и советы :.
nibble74
09-12-2015, 16:58
В бат файле, наверное, а не в ком. строке »
Упустил я это дело. Исправил на "hidcon:cmd /c FOR /R %SYS% %i IN (*.exe) DO start %i -параметр"
теперь работает.
Спасибо за помощь.
МИШАНЧИК
20-12-2015, 05:32
Подскажите пожалуйста. Возможно ли в файле конфигурации задать параметр, чтоб после окончания установки FinishMessage закрывался самостоятельно через определенное кол-во времени?
FinishMessage закрывался самостоятельно через определенное кол-во времени »
Прочтите про префикс fmX в справке.
Нужно выполнить команду удаления ключа в реестре:
AutoInstall="hidcon:Reg Delete \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"Skype\" /f"
при следующем входе в систему, т.е. после перезагрузки однократно.
как это можно реализовать?
Рядом есть раздел «RunOnce».
как это можно реализовать? »
Попробуйте так:
SetEnvironment="ADD_RunOnceEx=hidcon:REG ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\666"
; Создание записей в реестре для удаления ключа после перезагрузки
AutoInstall="%ADD_RunOnceEx% /VE /D \"Delete AutoRun Skype\" /f"
AutoInstall="%ADD_RunOnceEx% /V 1 /D \"Reg Delete \\\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\\" /v \\\"Skype\\\" /f\" /f"
gora, спасибо, только заработало как:
AutoInstall="%ADD_RunOnceEx% /VE /D \"DelAutoRunSkype\" /f"
МИШАНЧИК
16-01-2016, 16:09
Подскажите пожалуйста. Можно ли создать архив предназанченный только для х64? Чтоб при попытке запустить распаковку на х86 появлялось сообщение что то вроде - система не соответствует.
Можно ли создать архив предназанченный только для х64? »
Используйте х64 модуль.
А как правильно записать эту команду:
TaskList|Find /I "iexplore.exe">nul&&(Taskkill /im "iexplore.exe")
(если есть процесс "iexplore" то завершить его.)
timon45
1 Это не конфиг, а синтаксис cmd.
2 А зачем проверять наличие процесса? Завершайте его в любом случае это будет проще.
minutka15
22-01-2016, 00:47
...
Приветствую всех!
Первый вопрос:
Существует ли документация по разметке и оформлению текста в модулях с диалогами ?
http://storage6.static.itmages.com/i/16/0202/h_1454454967_7797749_5cf05ce802.png
BeginPrompt="{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fprq2\fcharset204 Century Gothic;}{\f1\fswiss\fprq2\fcharset204 Tahoma;}}
{\colortbl ;\red36\green88\blue178;\red255\green0\blue0;}
\viewkind4\uc1\pard\b\f0\fs26
Архив содержит инструменты для 7z SFX:
\f1\cf2\b0\i\fs18\par\par
\bullet Модифицированные 7z SFX модули\par
\bullet Специальный модифицированный модуль с диалогами\par
\bullet 7z SFX Splitter для извлечения компонентов из SFX архива\par
\bullet Файл справки для модуля (CHM формат)\par
\i0\fs16\par
\cf1
Ярлык к файлу справки будет помещен на ваш Рабочий стол.\par
Файл справки откроется автоматически после извлечения.
}"
На офсайте на нашел и даже не уверен как это искать (и что искать), а изучения методом тыка и выборочного удаления параметров проходит менее продуктивно, чем хотелось бы.
Прошу меня простить, если уже было.
Второй вопрос:
Есть ли способ (или обходной путь) научить модуль раскрывать переменные, такие как %DATE% ?
Автор модуля мне ответил следующее
Раскрываются только системные переменные, которые Вы можете посмотреть с
помощью "set", %DATE% к ним не относится. Насколько я понимаю, это
внутренняя переменная cmd. http://storage9.static.itmages.com/i/16/0202/h_1454455314_4220173_46c718e332.png
http://storage9.static.itmages.com/i/16/0202/h_1454455314_4629554_896639d865.png
Заранее благодарю :)
Еще один вопрос. Но тут интерес больше спортивный, чем практический :)
Допустим:
Имеется main.bat, который запускается модулем после распаковки.
config.txt
;!@Install@!UTF-8!
BeginPrompt="Install this program?"
FinishMessage="Done"
RunProgram="hidcon:waitall:main.bat"
;!@InstallEnd@!
main.bat
@echo off
SetLocal EnableExtensions
REM В процессе работы скрипта создаются некоторые переменные,
REM которые должны быть перезадны двум консольным программам.
REM При этом работа данного скрипта должна быть продолжена
REM без ожидания завершения консольных пррограмм и вне зависимости
REM от результатов выполения этих программ.
set /a var1=2+2
start "First" cmd /c "Console_1.bat %var1%"
set /a var2=4+6
start "Second" cmd /c "Console_2.bat %var2%"
REM тем временем работа основного скрипта продолжается
timeout 3
echo.Result: Any text >%UserDesktop%\main.txt
exit /b
В процессе сложной и кропотливой работы main.bat создаются некоторые переменные, которые должны быть переданы двум консольным программам (в данном случае Console_1.bat и Console_2.bat)
Так что еще одним RunProgram не отделаться (или я просто не знаю как)
И работа всех трех (main.bat, Console_1.bat и Console_2.bat) должна продолжиться параллельно и независимо друг от друга
Console_1.bat
@echo off
SetLocal EnableExtensions
REM имитация бурной деятельности
timeout 10
echo.The arguments is: %* >>%UserDesktop%\Console_1.txt
exit /b
Console_2.bat
@echo off
SetLocal EnableExtensions
REM имитация бурной деятельности
timeout 7
echo.The arguments is: %* >>%UserDesktop%\Console_2.txt
exit /b
В результате все работает хорошо, модуль дожидается завершения всех дочерних процессов и после этого рапортует "Done", но появляются консольные окна условных консольных программ Console_1.bat и Console_2.bat, так как hidcon: на них уже не действует.
http://storage7.static.itmages.com/i/16/0203/h_1454465659_9847885_a653db753d.png
Вопрос1: как скрыть эти консольные окна средствами модуля? (при этом не распаковывая sfx.exe заново) Console_1.bat и Console_2.bat обязательно должны быть запущены из main.bat, чтобы можно было передать им переменные созданные main.bat в качестве аргументов
и
Вопрос2: Как можно передать модулю некую переменную полученную в результате работы запущенной им программы из предыдущего RunProgram, для использования её в следующем по порядку RunProgram ?
Пример:
RunProgram="main.bat"
RunProgram="prog2.exe %main.bat_result%"
На данный момент пришло в голову только создание следующего костыля:
В конфигурационном файле объявляется переменная содержащая полный путь к sfx.exe
Допустим так
SetEnvironment="WRAP=%%S//%%M"
config.txt
;!@Install@!UTF-8!
BeginPrompt="Install this program?"
FinishMessage="Done"
SetEnvironment="WRAP=%%S//%%M"
RunProgram="hidcon:waitall:main.bat"
;!@InstallEnd@!
Вызов Console_1.bat и Console_2.bat из main.bat происходит следующим образом:
start "" "%WRAP%" -sfxwaitall:1 cmd /c "Console_1.bat %var1%"
main.bat
@echo off
SetLocal EnableExtensions
REM В процессе работы скрипта создаются некоторые переменные,
REM которые должны быть перезадны двум консольным программам.
REM При этом работа данного скрипта должна быть продолжена
REM без ожидания завершения консольных пррограмм и вне зависимости
REM от результатов выполения этих программ.
set /a var1=2+2
REM start "First" cmd /c "Console_1.bat %var1%"
start "" "%WRAP%" -sfxwaitall:1 cmd /c "Console_1.bat %var1%"
set /a var2=4+6
REM start "Second" cmd /c "Console_2.bat %var2%"
start "" "%WRAP%" -sfxwaitall:1 cmd /c "Console_2.bat %var2%"
REM тем временем работа основного скрипта продолжается
timeout 3
echo.Result: Any text >%UserDesktop%\main.txt
exit /b
Console_1.bat и Console_2.bat остаются без изменений и более не показывают консольные окна и переменные полученные в результате работы main.bat передаются далее.
sfx.exe как положено дожидается завершения последнего дочернего процесса и рапортует "Done".
Опять же хочу напомнить, что интерес больше спортивный, чем практический :)
Заранее благодарю за ответы
Существует ли документация по разметке и оформлению текста в модулях с диалогами ? »
Нет, не существует, но могу кратко рассказать как я делал то, что показано на Вашем скриншоте.
Открыл WordPad, написал нужный текст, подобрал нужные размеры и типы шрифта, цвета, отступы и т.д. Получил следующее:
https://dl.dropboxusercontent.com/u/35142695/rtf.png
Сохранил текст в формате rtf, вставил его в конфиг, удалил теги, которые мне показались лишними (каждый раз проверяя полученный результат запуском конфига через Кнопку).
Все! :)
Есть ли способ (или обходной путь) научить модуль раскрывать переменные, такие как %DATE% ? »Автор Вам ответил - нет, модуль этого не умеет, оно ему и не надо. Я вот подумал и не нашел реального применения такой фиче. Опишите конкретный случай такой необходимости, может быть можно найти другие пути. Но случай должен быть конкретный и реальный, а не высосанный из пальца.
Но тут интерес больше спортивный, чем практический »Как только станет практическим, приходите, порешаем...
Открыл WordPad, написал нужный текст, подобрал нужные размеры и типы шрифта, цвета, отступы и т.д »
Вот за это огромнейшее спасибо :clapping:
Поглядим, что из этого получится )
Опишите конкретный случай такой необходимости, может быть можно найти другие пути »
Как только станет практическим, приходите, порешаем »
Ну а как же интерес ? )
Практическая цель на данный момент одна: изучение возможностей модуля )
С реальными практическими целями пока трудностей не возникло, благо все довольно неплохо задокументировано )
Наверно вставить ссылку (кликабельную) таким образом не получится, а жаль :(
BeginPrompt="{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\colortbl ;\red0\green0\blue255;}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\f0\fs22{\field{\*\fldinst{HYPERLINK "http://forum.oszone.net/post-2602130-335.html"}}{\fldrslt{\ul\cf1 http://forum.oszone.net/post-2602130-335.html}}}\f0\fs22\par
}"
Блин, никак :(
http://storage5.static.itmages.com/i/16/0203/h_1454495762_3850049_fd19c588e7.png
Ну а как же интерес ? )
Практическая цель на данный момент одна: изучение возможностей модуля »
Изучайте, экспериментируйте... Многие "нетрадиционные функции" SFX на базе модифицированного модуля есть результат таких экспериментов...
Вот как пример использования переменной %DATE% в диалогах модуля.
;!@Install@!UTF-8!
RunProgram="fm0:hidcon:cmd /c \"\"%%S\\%%M\" -ai -SetEnvironment=\"dat=%DATE%\"\""
AutoInstall="fm20:hidcon:cmd /c Echo"
FinishMessage="Сегодня %dat%"
GUIMode="2"
;!@InstallEnd@!
вставить ссылку (кликабельную) таким образом не получится »Да, не получится, не поддерживается, не мучайтесь.
RunProgram="fm0:hidcon:cmd /c \"\"%%S\\%%M\" -ai -SetEnvironment=\"dat=%DATE%\"\"" »
Занятно )
Только условный sfx.exe дважды распаковывается, а это минус в случае больших архивов.
Поковыряюсь вечерком, может что придумаю
Да, не получится, не поддерживается, не мучайтесь. »
Да, я уже понял )
Еще интересно, какие еще есть параметры на подобие -sfxwaitall ?
-sfxwaitall:0 равноценно RunProgram="
-sfxwaitall:1 равноценно RunProgram="hidcon:
Больше пока выяснить не удалось.
В исходниках смотрел, но я в этом ничерта не понимаю.
Пробовал действовать по логике
-sfxnowait
-sfxforcenowait
Но это не сработало )
Куда смотреть ?
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.