![]() |
.: Файлы конфигурации 7z SFX. Помощь и советы :.
Эта тема создается специально для вопросов по 7z SFX архивам на базе модифицированных модулей от Oleg_Sch. Перед тем, как задать вопрос, обратите внимание, на перечисленные ниже ссылки.
Домашняя страница модулей: Обсуждение модулей: http://forum.oszone.net/showthread.php?t=51547 В теме предполагается обсуждать вопросы написания файлов конфигурации для 7z SFX архивов, делится своими наработками, нестандартными и оригинальными решениями, расширяющими возможности использования модулей и т.п.. Лучшие варианты файлов конфигурации и оригинальные решения могут быть включены в справку по модифицированным модулям. Полезные ссылки: Список переменных, которые могут быть использованы в файле конфигурации модифицированного модуля. |
Раз эта тема вышла, тогда вопрос:
Есть ключ реестра, чтоб после импорта реестр, сам reg-файл удалился? (выделено жирным) Вот мой отрывок файла конфигурации: |
Цитата:
Код:
Delete=%%T\\reg.reg" Код:
;!@InstallEnd@! |
Не работает переменная %SYSTEMROOT%
Код:
;!@Install@!UTF-8! Код:
C:\>echo %SYSTEMROOT% |
KML, не пробовали использовать внутренние переменные?
или вместо %SYSTEMROOT% юзать %windir% ? или убрать последний ненужный сплеш в имени папки? например вот так всё стабильно работает: Цитата:
|
Цитата:
Не запускается он по причине использования параметра Directory, который устанавливает путь к файлам в команде RunProgram. По этому пути модуль обнаруживает msiexec, но вот файла SomeSoftware.msi там нет, ибо он распакован во временную директорию модуля. Модулю не требуется команда msiexec /i для запуска .msi файлов и ее можно упустить в строке запуска. Параметр Directory тоже не нужен, ибо файл SomeSoftware.msi находится в текущей папке модуля и весь файл конфигурации сводится к: Код:
;!@Install@!UTF-8! |
Цитата:
Попробовал так, не пашет: Код:
;!@Install@!UTF-8! Цитата:
Код:
%1 is not a valid Win32 application. |
Цитата:
2 Подозреваю, что Вы используете оригинальный модуль архиватора, а не модифицированный. Приведите строку Авторское право созданного SFX 3 Сообщите также: - где находится файл SomeSoftware.msi - систему и ее разрядность - название модуля, его версию и сборку, его разрядность - файл SomeSoftware.msi не является х64 приложением? |
Вложений: 1
Цитата:
Цитата:
Код:
del SomeSoftware.7z Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Да, с модифициованным работает нормально, единственное "но" используются русские ресурсы по умолчанию (диалоговые сообщения, заголовки окон и т.п.)
Всё ОК, если запускать с ключиком -sfxlang:1033, но хотелось бы чтобы это происходило автоматически... |
Цитата:
|
Цитата:
|
По какой причине может не удаляться временная папка и ее содержимое после установки?
Конфиг: Код:
;!@Install@!UTF-8! |
Цитата:
Можете попробовать использовать префикс waitall. |
gora, благодарю великодушно - помогло.
|
Мда, рано обрадовался - перестало работать. Стоит добавить waitall: перед именем файла и выдается ошибка "Не найден указанный файл".
Код:
;!@Install@!UTF-8! |
Цитата:
Для проверки сделал конфиг: Код:
;!@Install@!UTF-8! Код:
@Echo Off |
gora, а какие у вас версии модуля и кнопки? Кнопка у меня последння, но проблема присутствует. С батником тоже пробовал - то же самое. Может эта фича под ХР не работает? :(
P.S. Мне можно без "Вашем" - я русский. :) Да, с вашим тестовым батником и конфигом нет проблем. Буду разбираться. Еще раз спасибо. |
Доброго времени уважаемые!
Есть ли разница в команде для исполнения reg файла в х64 и х86 редакциях? Код:
regedit /s |
Цитата:
- о разных модулях (x86\x64) - о разных префиксах (x86\x64) - о разных утилитах regedit (x86\x64), присутствующих в x64 системах Хотелось бы увидеть и саму "команду" в синтаксисе файла конфигурации, т.к., в ветке речь идет о них, и от правильности этой записи тоже многое зависит. Ответ: Да, разница есть. (а может быть и нет, в зависимости от многих факторов о которых Вы умолчали) |
здравствуйте) Помогите пож-ста отредактировать строчку создания ярлыка
Код:
SetEnvironment="Name=USDownloader" ![]() |
Цитата:
Должно получится такое: Код:
Shortcut="P,{c:\\Windows\\System32\\rundll32.exe},{advpack,LaunchINFSection \"%PF%\\%ProgDir%\\%INF%\",Uninstall,0},{%Name%},{},{Удалить %Name%},{%WinDir%},{%PF%\\%ProgDir%\\uico.ico}" |
Подскажите пожалуйста.
Нужно чтобы в Windows х86 и х64 файл распаковался в %ProgramFiles%\\Программа. Если указать: InstallPath="%ProgramFiles%\\Программа"-то в х64 распаковывается в Program Files (x86). А как сделать чтоб и там и там распаковало в Program Files? |
Распаковать непосредственно в разные папки не получится. Причины:
- для х86 %ProgramFiles%\\Программа=c:\Program Files\\Программа - для x64 %ProgramFiles%\\Программа окажется = c:\Program Files (x86)\\Программа, а нужно указать %ProgramW6432%\\Программа=c:\Program Files\\Программа Но выход есть. Нужно убрать в конфиге параметр InstallPath - это вызовет распаковку во временную папку. Если распаковываемый набор един для обеих разрядностей, то далее так: Код:
SetEnvironment="PFx86=%ProgramFiles%\\Программа" Код:
SetEnvironment="PFx86=%ProgramFiles%\\Программа" |
возможно ли 2 варианта распаковки?
например: запаковано 4 файла: 1.txt, 2.txt, 3.txt и 4.txt в первом случае распакованы будут все файлы а во-втором только 3.txt и 4.txt вариант распаковки выбирает пользователь |
Цитата:
|
gora, подскажите пожалуйста.
А если нужно архив распаковать допустим в d:\GAMES, затем оттуда запустить setup.exe и потом оттуда же скопировать файл.ехе в ProgramFiles\Программа для Windows х86 и х64? Не в Program Files (x86). |
Цитата:
Код:
SetEnvironment="PFx86=%ProgramFiles%\\Программа" |
gora, большое Вам спасибо.
|
gora, прошу прощения, но у меня почему-то не копирует. Архив распаковывается, setup.exe устанавливается(в папку ProgramFiles\Программа), а файл.ехе из архива в ProgramFiles\Программа не копируется.
|
gora, а тут не прокатит %7zSfxFolder38% или, скажем "%systemdrive%\program files" ?
|
МИШАНЧИК, приведите конфиг и структуру архива (что-бы видеть где лежит файл.ехе). Существует ли папка %ProgramFiles%\Программа на момент копирования файла? Команда Copy не создает папку назначения, если она не существует в отличии от команды xCopy
Цитата:
Цитата:
|
gora,
Цитата:
Код:
SetEnvironment="PFx86=%ProgramFiles%\\Программа" |
Цитата:
Код:
RunProgram="x86:cmd /k Copy setup_rus.ехе \"%PFx86%\\setup_rus.ехе\" /y" |
Цитата:
|
Попробуйте так:
Код:
RunProgram="x86:cmd /k Copy \"%%T\\setup_rus.ехе\" \"%PFx86%\\setup_rus.ехе\" /y" |
|
МИШАНЧИК, залейте Ваш SFX и дайте на него ссылку.
|
gora, зачем нужна эта тема при наличии Модифицированный SFX модуль 7-Zip'а для установок? В ней все равно обсуждаются вопросы создания SFX и различные параметры модуля.
|
Цитата:
1 Сейчас вопросы по файлам конфигурации задаются в разных ветках форума и не только в ветке модуля. Уже бывает и не вспомнить в какой из веток отвечал на повторяющийся многократно вопрос. Искать эти ответы по всем веткам затруднительно, а так все будет сосредоточенно в одной ветке. 2 В ветке модуля лучше обсуждать фунционал модулей, баги модулей, запрашивать новые возможности, а обсуждение конкретных файлов конфигурации, иногда очень простых и описанных в справке, там не не устраивать. 3 Править шапку и добавлять в нее FAQ мне здесь можно самому не обращаясь к автору модулей или модераторам. (зачем дергать занятых людей по пустякам). Если Вы считаете, что она не нужна, то ее всегда можно закрыть (мне меньше забот). |
1. Неубедительно.
Цитата:
Цитата:
2. Частично согласен, но тогда из старой темы нужно вынести все вопросы по конфигам. Это вы с модераторами не согласовывали, очевидно. Что касается багов, то их может запостить 1-2 человека. Для остальных - "не работает" = "баг". 3. Ничто не мешает вести FAQ в отдельном посте или Wiki, а ссылку дать в шапке. Короче, в текущем виде я не вижу смысла в этой теме, ибо это дублирование уже существующей темы. |
gora, только что попробовал запустить на физической машине х86(до этого на х86 не пробовал). Всё установилось и скопировалось без проблем. Тут же на виртуальной машине х64 пробую этот же архив-выдаёт: не удаётся найти файл.
Попробовал как Вы писали раньше: Код:
SetEnvironment="PFx86=%ProgramFiles%\\Программа" |
gora, сделал почти так, как Вы писали тут http://forum.oszone.net/post-1908642-25.html:
в архиве создал папку rus и в неё поместил файл setup_rus.exe: Код:
SetEnvironment="PFx86=%ProgramFiles%\\Программа" Большое Вам спасибо за помощь. |
а что значат в этой строке
Код:
RunProgram="waitall:test_waitall.bat /VERYSILENT /LOADINF=\"progr.ini\"" Код:
/VERYSILENT /LOADINF=\"progr.ini\"" |
bugmenotagain, параметры похожи на Inno Setup.
|
Цитата:
По поводу префикса waitall. Воздержитесь пока от его использования, т.к., в нем обнаружен баг и Олег обещал поправить это в ближайшее время. МИШАНЧИК, ответ Вам отложен до исправления бага, чтобы можно было объяснить Вашу проблему с примерами ее решения. |
как передать кириллицу через командную строку?
отправляю... Код:
test.exe -SetEnvironment="var1=привет" ---------------------- вопрос снят, разобрался. нужно написать cmd файл в utf-8, затем сменить кодировку на ansi и сохранить. т.е. что бы получить... Код:
test.exe -SetEnvironment="var1=привет" Код:
test.exe -SetEnvironment="var1=привет" |
Цитата:
2 Приведите файл конфигурации, дабы понять, где используется переменная var1. В текстах модуля или сторонним ПО, например, cmd и почему у Вас Цитата:
|
gora,
для вывода текста через BeginPrompt. т.е. в зависимости от того какой батник запустишь, выводится разный текст. текст задаётся по типу -SetEnvironment="var1=привет" при запуске. ------------- ещё есть мысль запускать с -SetEnvironment="var1=%p1%" а в самом коде... Код:
SetEnvironment="p1=привет" думаю дальше. |
Цитата:
Код:
test.exe -SetEnvironment="var1=привет" Цитата:
Код:
test.exe -SetEnvironment="var1=%%p1%%" |
практически закончил свой первый мини проект. ничего если я сюда кину вам листинг на проверку\оптимизцию?
|
gora, подскажите пожалуйста, почему когда у меня файл конфигурации больше 9Кб-то архив создать невозможно(я в справке читал что должен быть меньше 9Кб), но в тоже время есть архивы(не мои) в которых файл конфигурации значительно больше 9Кб(много значений автоинстала+ярлыки). Как это достигается?
|
Цитата:
Цитата:
спасибо gora, и еще вопросец, в конфиге убрал InstallPath и добавил это Код:
SetEnvironment="PFx86=%ProgramFiles%\\prog" и как вообще можно для 32 и 64 систем предлагать по умолчанию такие пути распаковки? %ProgramFiles%\\Программа=c:\Program Files\\Программа %ProgramFiles%\\Программа= c:\Program Files (x86)\\Программа Очень многго непоняток по этому вопросу, а в http://7zsfx.info/ru/ нет достаточной инфы :( |
Цитата:
Цитата:
Цитата:
Код:
SetEnvironment="PFx86=%ProgramFiles%\\prog" Цитата:
Цитата:
|
Цитата:
InstallPath закомментировать? если да то путь не будет указан по умолчанию, хотя в случае нажатия на ОК распаковка будет произведена в папку по умолчанию, но откуда пользователь узнает место распаковки? И еще вопросик. В этой строке Код:
RunProgram="x86:hidcon:xCopy 1\\* \"%PFx86%\\\" /s /e /i /y" start prog.exe "RunProgram1" или как? я вот тут http://7zsfx.info/ru/ читал не понятно Код:
Команда для исполнения (множественная). Параметр оригинального SFX модуля архиватора 7-Zip. |
gora, написал такую строку
AutoInstall2="hidcon:xCopy 2\\* \"%PFx86%\\\" /s /e /i /y" теперь при запуске ехе с ключом -ai2 выполняется данное действие, но кроме этого так же выполняется распаковка всего архива. как не выполнять последнее при запуске с ключом -ai2 не могу додуматься :( |
Подскажите, где ошибка в текстовом файле 7z sfx?:
Код:
RunProgram="hidcon:reg add \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /f /v \"Смена Обоев\" /t REG_SZ /d \"\\\"%ProgramFiles%\\MagicLogon\\hidcon.exe\\\" \\\"%ProgramFiles%\\MagicLogon\\ml.cmd\\\" delay\"" Код:
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MagicLogon" /v "comments" /t REG_SZ /d "Смена фонов рабочего стола" /f |
Цитата:
Код:
... REG_SZ /d "Поменять обои" /f \ Код:
... REG_SZ /d \"Поменять обои\" /f" Цитата:
|
gora, а по моему случаю можете что-либо сказать?
|
Цитата:
Вы дважды задаете вопрос о частичной распаковке, хотя я уже в первый раз Вам ответил, что это невозможно. Я занес это в FAQ в шапке, больше на него отвечать не буду. Цитата:
Учите мат. часть. |
Цитата:
Код:
SetEnvironment="PFx86=%ProgramFiles%\\Программа" Объяснением этому может быть наличие дочерних процессов в Вашем setup.exe. Модуль выполняет все строки последовательно. После запуска строки RunProgram="setup.exe" модуль ждет завершения процесса setup.exe и только после этого переходит к выполнению следующей строки. Но если процесс setup.exe порождает дочерний процесс (который продолжает производить некоторые операции, очевидно, и создание папки программы), а сам закрывается, то выполнение следующей строки конфига фактически начнется раньше завершения дочерних процессов (создания папки программы). Для лучшего понимания я предлагаю Вам сделать SFX из следующего конфига (модуль должен быть 1.5 beta (сборка 2478) и выше): Код:
;!@Install@!UTF-8! При варианте запуска 'OK', Вы увидите открытие Блокнот и сразу же появится диалог FinishMessage. Почему же FinishMessage появился раньше чем Вы закрыли Блокнот? Потому что основной процесс test.bat запустил дочерний процесс (Блокнот) и после этого test.bat закончил работу. Нечто подобное происходит и в Вашем случае. Теперь запустите вариант 'OK', удерживая Shift. Диалог FinishMessage появится только после того, как Вы закроете Блокнот, т.е., завершится дочерний процесс. Этому способствует префикс waitall (описание в справке), который я использовал во втором варианте. Резюме: попробуйте запустить Ваш setup.exe с префиксом waitall. В любом случае это будет правильнее, т.к., копирование будет производится после полного завершения работы файла setup.exe. |
gora, в справке не написано как из ком строки запускать файл с префиксом, вообще по справке много вопросов, если вы думаете что простой человек может разобраться, на задав ни одного вопроса, то ошибаетесь.
жаль что люди знающие хоть что-то не желают поделиться опытом с новичками. |
Возможна такая реализация: распаковка файлов -> финишная табличка "Установка завершена! Сейчас будет перезагружен компьютер!" (на 15 сек.) -> и перезагрузка? Если возможна, то как сделать, чтобы после финишной таблички и затем исчезания (после встренной 15 сек.), компьютер автоматически перезагрузил.
|
Цитата:
Код:
;!@Install@!UTF-8! |
gora , а как прописать файл конфигурации чтобы перед распаковкой файлов происходило сканирование реестра?
Мне нужно так, InstallPath="Вставляемый путь" В реестре находится информация пути установки одной программы, вобщем нужно чтобы этот путь вставлялся в SFX исталлятор. Просто на разных компьютерах эта программа может находиться в разных папках и даже на разных HDD. |
Цитата:
|
Цитата:
|
Valerkan, пуск выполнить (win + r)
Код:
cmd /k Shutdown /? |
Цитата:
Код:
Shutdown -s -f -t 0 |
Подскажите, где ошибка в строке?
Код:
BeginPrompt="Сейчас будет установлен %Name% обновлённый по %Vers%"\n Возможные варианты установки:\n \n 1. Запуск с ключом '-ai1' - полная установка \n 2. запуск с ключом '-ai2' - установка только обновлений\n \n Использовать вариант №1 ?" |
sov44, а в чем ошибка?
|
alert30, пишет, что ошибка в строке 5
|
sov44, выделил подчеркнутым, лишняя кавычка.
Код:
Сейчас будет установлен %Name% обновлённый по %Vers%" |
Подскажите, при использовании ключа -ai2 возможно ли добиться того чтобы появилось окошко выбора директории в которую будут распакованы файлы? вот текущая строка
AutoInstall2="hidcon:cmd /c xcopy folder \"%Var1%\" /s /e /i /y" она не дает выбора, а распаковывает строго в 1 папку. Вообще интересует возможность выбора папки распаковки если sfx архив запущен с префиксом -ai2 или любым другим. спасибо |
Можно ли реализовать установку ярлыка программы на панель задач, желательно сделать так чтобы данная команда была выполнена только на Win7?
читал что это можно реализовать через vbs скрипт, но без полного примера до 7zip SFX мне не дано понять. вот http://forum.oszone.net/thread-197757.html# нашел это но не совсем понимаю как его прикрутить к 7zip SFX |
timon45, ну так в RunProgram надо влепить скрипт или как-то другое?
|
Цитата:
|
У меня вопрос. Модифицированный модуль, запущенный без параметров сразу начинает распаковку в InstallPath, при этом совершенно забывая спросить пользователя, куда бы он хотел распаковать файлы.
Детальнее тут. |
Цитата:
1 Версия и номер сборки модуля ? 2 Конфиг полностью в тегах CODE ? |
1.5 RC1 (сборка 2485) от 17 мая 2012 г.
1.4.4 Release (сборка 2485) от 17 мая 2012 г Вот самый примитивный вариант: Код:
;!@Install@!UTF-8! |
Цитата:
|
Нужна помощь в выполнении следующего:
переместить папку (название папки soft) с файлами и папками внутри её из: InstallPath="%ProgramFiles%\\PROG" в %USERPROFILE%\Application Data\soft переместить у меня не получилось но сойдет и копирование с последующим удалением из начального места. вот что получилось сделать самому (да сперва мне её еще надо было переименовать папку): Код:
RunProgram="hidcon:cmd /c ren Profile soft" Все, догадался: Код:
RunProgram="hidcon:cmd /c Ver | Find \"6.1\" >Nul && xcopy \"%%T\\soft\" \"%USERPROFILE%\\AppData\\Roaming\\soft\" /s /e /i /y" |
Цитата:
Код:
RunProgram="hidcon:xcopy soft \"%7zSfxFolder26%\\soft\" /s /e /i /y" 2 Цитата:
Код:
Delete="%%T\\userdata.local" |
Цитата:
Цитата:
нашел список переменных http://forum.oszone.net/post-517853-278.html |
Цитата:
Код:
;!@Install@!UTF-8! |
Цитата:
второе это копирование "soft" в "Application Data" ? третье удаление "soft", но из какой папки? |
Цитата:
|
alert30, так какая папка soft удаляется? та что в месте распаковки, или та что в AppData ?
|
bugmenotagain, та что в месте распаковки.
|
|
Возможно подобный вопрос уже поднимался. Если да, ткните пальцем пожалуйста. Короче в конфигурации нету авто установок, но очень надо добавить возможность ключами выбирать создаваемые ярлыки. Есть ли такая возможность?
|
Цитата:
|
gora, посмотри мой скрипт и скажи что в нем не так. Он то работает, но я только начинаю разбираться, может что не так сделал. В частности интересует секция AutoInstall с созданием ярлыков.
|
popt2t, явных ошибок не обнаружил.
Строку OverwriteMode="0" можно удалить, т.к., это режим по умолчанию и его можно не прописывать. |
Есть ли возможность запуска приложения поле нажатия "ОК" в окне завершения установки?
|
Вложений: 1
Цитата:
|
Цитата:
gora, а как мне посмотреть что и как в файле конфигурации? Архив под паролем. |
Цитата:
|
Есть такая возможность: если нажать "ОК" или "Да" то установка автоматически происходит, а вот если нажать "ОК" или "Да" с удерживанием клавиши [Shift] то должен показать, какой путь установки укажем?
|
Цитата:
|
Мне надо в автозагрузку добавить шорткат, чтобы запускал программу во весь экран. Как я понял, этого нет. Может быть какое решение имеется?
|
бУРов, например с помощью nircmd
nircmd shortcut "f:\Program Files" "c:\temp\MyShortcuts" "Program Files Folder" "" "" "" "max" shortcut [filename] [folder] [shortcut title] {arguments} {icon file} {icon resource number} {ShowCmd} {Start In Folder} {Hot Key} скачайте nircmd и изучайте возможности с помощью мануала к нему |
Цитата:
Код:
set WSS = WScript.CreateObject("WScript.Shell") |
Цитата:
|
Здравствуйте, может кто-нибудь помочь в создании SFX архива? Мне нужно, чтобы перед распаковкой он удалил файлы в выбранной пользователем директории для распаковки. Файлов для удаленим много: порядка 17 тыс. В программировании я не силен, может кто подсказать как это сделать?
|
Цитата:
вызывает диалог |
Цитата:
Это типа буква диска? |
3december
Перед распаковкой архива такого функционала не предусмотрено, можно выполнить удаление сразу после распаковки во временную папку, а затем установить программу или, что там вам требуется. Это указано в первом сообщении темы (FAQ). Технически так: Удалить все файлы в директории %ProgramFiles%\ToDelete Код:
;!@Install@!UTF-8! Код:
;!@Install@!UTF-8! Цитата:
|
Нашел, спасибо
|
Можно ли как-то менять значения реестра?
Использование "regedit /s reg.reg" вызывает диалог. Менять UAC не нужно. Хотя... Вроде его из командной строки можно отключить. Уже кое что. И вот еще нашел. REG.EXE |
бУРов,
- в windows 7 с включенным UAC запускать запускать полученный sfx EXE правой кнопкой от имени администратора или - добавить в файл конфигурации к sfx модулю строчку MiscFlags="4" для автоматизации вызова диалога повышения привилегий при запуске sfx EXE или - как вариант открыть ваш готовый exe или *.cfg файл для него перед слиянием например в restorator и в секции манифестов в строке Код: Код:
<requestedPrivileges><requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel></requestedPrivileges> фразу requireAdministrator для автоматизации вызова диалога повышения привилегий при запуске sfx EXE по результатам будут все команды после запуска файла выполняться от администратора и запросов на подтверждение не будет |
jameszero
вариант со временной папкой не подходит, так как файлов на 5 гигабайт А можно сделать так: SFX архив распаковывает один файл в директорию, которую пользователь выбрал, выполняет этот файл, а потом распаковывает все остальное? |
Два 1-х пункта не помогают. Вопросы-диалоги те же и даже если жму "да", в реестре изменений нет.
Цитата:
Цитата:
|
Господа помогите!
Код:
Shortcut="Du,{C:\\Konsultant\\pn.exe},{/APP "CONSULTANT" /PNI "3z11omhz"},{},{Консультант},{konsultant},{C:\\Konsultant},{%APPDATA%\\ICAClient\\8w9u1x86.ICO},{}" заранее спасибо |
3december
Цитата:
Частичная распаковка одного архива невозможна (FAQ в первом сообщении, пункт 2) |
Цитата:
Код:
...{/APP \"CONSULTANT\" /PNI \"3z11omhz\"}... Цитата:
Цитата:
|
Цитата:
![]() |
Цитата:
Код:
...{%АPPDATA%\\ICAClient\\8w9u1x86.ICO}..." Код:
SetEnvironment="AD=%АPPDATA%" |
Спасибо за обратный слэш, помогло :) , а вот
Цитата:
|
Цитата:
Цитата:
|
о чудо, все заработало. Спасибо.
|
gora,
возникла идея отвязаться от имени reg файла находящегося в одном каталоге с установщиком, реализовать следующий смысл: for %%f in (*.reg) do regedit /s "%%f" в конфиге. реально? накидал что-то типа: RunProgram="hidcon:cmd /c for %%f in (%%S\\*.reg) do regedit /s \"%%S\\%%f\"" но не отрабатывает. можно ли довести это до ума (естесственно чтобы при этом он понимал и пути/названия файлов с пробелами)? |
Цитата:
Код:
RunProgram="hidcon:cmd /c For %f In (\"%%S\\*.reg\") Do RegEdit /s \"%f\"" |
Мне необходимо запустить vbs скрипт (только на Windows 7 и выше), после долгих мучений у меня получилось но уж очень долго выполняется данная команда может её можно как то модернизировать?
Код:
RunProgram="hidcon:cmd /c Ver | Find \"6.1\" >Nul && wscript.exe \"%%T\\runQ.vbs" |
Цитата:
Проверьте отдельно запуск runQ.vbs. В настоящий момент данных для ответа на вопрос о скорости выполнения недостаточно. P.S. Попробуйте так: Код:
RunProgram="hidcon:cmd /c Ver | Find \"6.\" >Nul && wscript.exe \"%%T\\runQ.vbs\"" |
поправьте меня если ошибаюсь... а нельзя-ли сделать просто запуск этого скрипта, а уже в нем самом реализовать проверку системы:
если удовлетворяет выполнять такие-то действия, если нет - на выход |
Как экспортировать путь к SFX архиву в реестр, во время его запуска ? Пробую варианты с переменной %%S, но чёт никак.
К примеру: hidcon:cmd /c Reg Add \"HKLM\\SOFTWARE\\имя\" /ve /t REG_SZ /d \"%%S\\Имя.exe\" /f" Имя.exe - этот файл расположен рядом с SFX архивом. Вот и нужно путь к этому файлу экспортировать в реестр. Просто, при распаковке из другого инсталлятора, путь к самому SFX и этому файлу может быть разным. Дайте пример. Как реализовать этот вариант? |
|
Цитата:
Таких комманд у меня несколько, причём первая экспортируется, а все последующие (их всего 6 штук) нет. Смотрю в процессах висит Sfx.exe, Reg.exe и не закрываются, причём временная папка Sfx архива из темпа тоже не удаляется. Приходится вручную процессы убивать. Иногда Sfx процессов одновременно бывает 2 и даже 3 :) Пробовал с cmd /c и без, как в вашем коде выше. Префикс waitall тоже не помогает. Походу, вроде бы, не успевает все комманды экспорта в реестр обработать и зависает. |
Только что понял в чём дело. В конце каждой строки у меня прописано "%%1". Убрал этот параметр и %%S заработало.
Как же так ? Этот параметр очень нужен, без него никак. Походу, кнопочку надо пересмотреть. |
Парни, подскажите плиииииз!!!!
Сегодня появилась задача, передать файл, открыв, просмотрев и закрыв который, самостоятельно бы самоуничтожился без следов. В программирования я полный нуб......но пришлось разбираться )) Собрал в корне диска С следующие файлы: 1. Архив 7zip, который состоит из а) собственно файла б) батника 1.CMD следующего содержания :START If Exist "%~1" Del /F/Q "%~1" If Exist "%~1" GoTo START Del /F/Q 1.cmd 2. Конфиг *.TXT следующего содержания ;!@Install@!UTF-8! InstallPath="%TEMP%" RunProgram="rundll32 shimgvw.dll,ImageView_Fullscreen %TEMP%\\1.jpg" Delete="%TEMP%\\1.jpg" RunProgram="hidcon:nowait:%TEMP%\\1.cmd \"%%S\%%M\"" GUIMode="2" ;!@InstallEnd@! 3. 7zsd_LZMA.sfx Далее в командной строке пишем С:\>copy /b 7zsd_LZMA.sfx + 1.txt + 1.7z 1.exe В результате имеем SFX-архив, кликаем по нему 2 раза, открывается файл, закрываем и сам SFX-архив удаляется. Бинго!!!! Все получилось. Теперь вопрос: можно ли как-то к этому SFX-архиву добавить пароль?? Т.е. кликаем по сформировавшемуся SFX-архиву, вводим пароль, далее как обычно (открывается файл, просматриваем, закрываем и все удаляется)?? Спасибо! |
Quattroman, бинго! это жесть конечно. изобретать колесо вместо внимательного изучения возможностей sfx...
ознакомьтесь http://7zsfx.info/ru/parameters.html#SelfDelete один вопрос только - как вы собираетесь бороться с копиями файла которые удаляться не будут (если кто-то их сделает)? существуют модули в которые можно вбить пароль и его потребуется знать чтобы запустить и распаковать такой sfx (вроде бы даже общедоступны) но модули, которые нельзя распаковать и которые под паролем, который однако не нужно указывать при запуске файла доступны только его величеству автору модифицированных модулей и лицам особо приближенным к нему (заслужившим) |
specialist, лана вам.....жесть.....
вам, конечно, легко рассуждать, продвинутый ))) времени изучать не было вообще (( Т.е. Конфиг *.TXT надо по другому записать?? Далее также через командную строку? Помогите написать файл этот конфиг..... То, что я в первом пункте написАл - CMD уже не нужен будет? О каких копиях идет речь? Т.е. даже при использовании SelfDelete всё равно где-то копия будет валяться? PS В голове полная каша........Последний раз чем то подобным занимался в школе. когда на паскале табличку умножения писАл. Это все мои познании в информатике и программировании (( PPS Сорри, за большое количество вопросов.... |
Quattroman, все значительно проще.
1 cmd файла не надо, его заменит параметр SelfDelete="1" 2 Заботится об удалении распакованного не надо, если не указывать параметр InstallPath. При этом распаковка происходит во временную папку модуля и по завершении его работы она удаляется со всем содержимым автоматически. 3 Для добавления ввода пароля достаточно: - при создании 7z архива указать этот пароль - использовать модуль с поддержкой шифрования 1.6 develop (сборка 2478) 10.05.12 и выше. Обратите внимание, что ветки 1.4 и 1.5 шифрования не поддерживают. Конфиг получится таким: Код:
;!@Install@!UTF-8! Цитата:
|
gora, спасибо за отклик!!
Скачал модуль по этой ссылке 1.6.0.2488-develop доступен Запаковал картинку в 7Zip с паролем Собрал все в одной папке: 1. Архив с картинкой 1.7z 2. 1.txt следующего содержания ;!@Install@!UTF-8! RunProgram="rundll32 shimgvw.dll,ImageView_Fullscreen 1.jpg" SelfDelete="1" GUIMode="2" ;!@InstallEnd@! 3. 7zsd_LZMA.sfx Далее в командной строке набрал copy /b 7zsd_LZMA.sfx + 1.txt + 1.7z 1.exe После чего в папке появился SFX-архив 1.exe Кликаем по нему, просит ввести пароль, несколько секунд и архив удаляется. Все вроде как надо...и пароль, и удаляется, но картинки нет (( Мне надо, что бы после ввода пароля, картинка открывалась в стандартном мелкософтовском просмотрщике, а после закрытия картинки - архив удалялся.. Что делаю не так?? |
Quattroman, Ваша строка
Код:
rundll32 shimgvw.dll,ImageView_Fullscreen 1.jpg Код:
RunProgram="1.jpg" Вы не указываете свою систему, у меня все написано в профиле. Конфиги и куски кода вставляйте в тегах [code] - значок # на панели "Быстрого ответа". |
Профиль подправил
С этим кодом Код:
rundll32 shimgvw.dll,ImageView_Fullscreen 1.jpg Попробовал сделать с таким конфиг-файлом... Код:
;!@Install@!UTF-8! Т.е. как я понял, архив с картинкой удалился раньше, чем она (картинка) успела открыться (( |
Quattroman, попробуйте:
1 Добавить префикс, может поможет: Код:
RunProgram="waitall:1.jpg" Код:
RunProgram="hidcon:cmd /c Ping -n 4 localhost" |
Первый вариант не проканал
В случае, если добавить Код:
RunProgram="hidcon:cmd /c Ping -n 4 localhost" Открывается картинка из временной папки .......\Local\Temp\7Zipsfx.000, далее видно как удаляется сам архив, далее удаляется папка 7Zipsfx.000. Закрываем картинку и никаких следов! СПАСИБО! |
Цитата:
|
Попробовал распаковать WINRARом след. способом: правая клик мыши, извлечь файлы, вводим пароль и.........получаем обычную папку с файлом ((((
Как-то можно обойти такой способ распаковки? Так, что бы распаковать можно было только запустив SFX-архив? Просто многие (я в том числе) если видят архив, то распаковывают именно первым способом....... |
|
Немного странный вопрос: как создать папку в меню пуск/программы? Именно папку, пустую :)
|
|
dee.jack, это спасибо, но мне-то средствами модифицированного модуля надо :)
|
Цитата:
Код:
;!@Install@!UTF-8! |
Здравствуйте, есть такой конфигурационный файл
Код:
;!@Install@!UTF-8! Пробовал вроде что-то этого, RunProgram="REGEDIT /S Settings.reg" но не подхватывает... |
Цитата:
|
Цитата:
|
|
Можно ли кнопкам "Да" и "Нет", "ОК" и "Отмена" задать своё значение, например "Установить" и "Отменить"?
|
Valerkan, никак, но можно ковырять модуль с Dialogs (на ваше усмотрение).
|
Цитата:
Код:
;!@Install@!UTF-8! |
Можно ли чтобы при запуске SFX архива вместо иконки отображалась картинка?
|
Valerkan, непонятно, можно предоставить скриншоты где, каким образом...
|
Вложений: 1
Цитата:
|
Valerkan, в модуле пока не сделали эту функцию, но можно GIF - 480x74.
|
alert30, неправда Ваша...
Подробно расписывать не буду, скажу кратко. Возьмите за пример LZMA_Dialogs и правьте ресурсы с обязательным сохранением ID контролов и диалогов каким-нибудь ResourceHacker'ом. Valerkan, в Вашем случае достаточно подправить диалог с ID=2001, а остальные - удалить, если не нужны. |
Oleg_Sch, и вправда, спасибо. Первый раз заработал.
|
Подскажите, как через файл конфигурации удалить ярлык
Код:
%ALLUSERSPROFILE%\Главное меню\Программы\прога.lnk |
Код:
Delete="%SfxFolder23%\\прога.lnk" Код:
Delete="%7zSfxFolder23%\\прога.lnk" |
sov44, список переменных http://forum.oszone.net/showthread.p...42#post1850742
|
Цитата:
|
испытываю странную проблему:
в файле установщика есть команда на распаковку файлов рядом с ним, если они есть (переменная %unpack%) ключ -aiu передаваемый им просто распаковывает их содержимое в тот же каталог куда и основной sfx (шаблон ниже под спойлером) проблема в следующем: была такая мысль - если файлы есть они распаковываются и дополняют функционал, если их нет - ничего не распаковывается и функционал базовый, а получается, что если файлы все есть, то все отлично копируется, распаковывается как следует, а если хоть одного файла из списка в переменной %unpack% нет ничего из остальных не дораспаковывается, какой то затык с символом & чтоли происходит (если каждую команду отдельной переменной прописать вроде все в порядке, но уж очень много переменных придется натыкать по конфигу). и дополнительный вопрос. можно ли как то реализовать в конфиге команду на запуск выполняющуюся при любом из запусков runprogram / autoinstall / autoinstallx чтобы ее не нужно было прописывать к каждому autoinstallx пробовал executefile с ExecuteParameters но что то она сложные комбинации не воспринимает, вечно сыплясь на "файл не найден" или просто запуская командную строку и не выполняя то что прописано в ExecuteParameters в наборе типа "%windir%\\system32\\cmd.exe" /c if exist ... как проверить в чем косяк |
Цитата:
Для выполнения задуманного нужно каждое условие заключить в отдельный блок, примерно так: Код:
SetEnvironment="unpack=hidcon:cmd /c (if exist \"%%S\\activator.exe\" copy /y \"%%S\\activator.exe\" \"%Temp%\\%Vers%\") & (if exist \"%%S\\Updates.exe\" \"%%S\\Updates.exe\" -aiu) & (if exist \"%%S\\Visio_Project_SPD_%Vers%_RePack.exe\" \"%%S\\Visio_Project_SPD_%Vers%_RePack.exe\" -aiu)" Цитата:
Но можно повесить эту команду на отдельный ключ, сделав, например: Код:
AutoInstall0="%unpack%" Цитата:
|
gora, в очередной раз огромное спасибо за помощь, теперь все заработало так, как задумывалось.
|
Приведите пожалуйста пример файла конфигурации с определение разрядности системы и автоматической установки необходимого приложения.
|
popt2t, ну к примеру, в теме аддона LibreOffice, Apache OpenOffice и InfraResurs пользователь ks7715 аттачил пример батников и автоустановки (там MSI, но IS и NSIS тоже наверняка успешно повезет) программ: http://forum.oszone.net/post-1950387-962.html
Там только батники, можете попробовать копипастить в config-файле по каждой команде. |
alert30, это немного не то. Да и не охота возиться с батниками. По идеи все можно реализовать непосредственно через сам файл конфигурации, как например сделано в аддоне WinRAR от gora. Но как это сделать я не знаю. Вот и решил здесь спросить.
|
|
Проблема в том, что после тихой установки Your Uninstaller происходит её автоматический запуск. Пробовал убить процесс после установки, и удалить директорию из "c:\Documents and Settings\All Users\Главное меню\Программы\Your Uninstaller! 7", но не получается. Подскажите, в чем ошибка?
Код:
RunProgram="hidcon:no_upd.cmd" |
Можно ли для параметра AutoInstallX использовать буквенно-циферный идентификатор? Например AutoInstallX32.
|
Цитата:
Цитата:
|
Цитата:
|
Цитата:
AutoInstallX= AutoInstall3= AutoInstall2= а потом запускать инсталлятор .exe /aiX32 :) |
Ребята здравствуйте, подскажите пожалуйста такую вещь, как реализовать в самораспаковающем архиве такую вещь:
Например в InnoSetup создается инсталлятор, при его запуске в конце, когда установилась прога, запускается вызов sfx модуля. Вот тут проблема в чем? Самораспаковывающий архив в тихом режиме должен распаковать свое содержимое, но зная куда пользователь поставил инсталлятором так сказать свою программу, путь полный, например это может быть любой диск\Программа\ и вот в папку программы sfx и должен выгрузить свои файлы. Есть ли команды, какие пути абсолютные или другие прописывать и какими ключами необходимо пользоваться? Надеюсь описал доступно и понятным языком. Не могу создать такой интеллектуальный самораспаковывающийся архив, который бы знал куда доставлять необходимые дополнительные файлы в программу, умел бы находить путь, а именно диск и папку, куда юзер установить решил программу. Спасибо. Опишите хоть метод или надо батник какой дополнительный писать, но может есть возможность указать какие либо строки и команды при создании sfx? В общем намекните алгоритм. |
nakula, возможны три варианта решения задачи (т.к. конкретных названий программы и ее путей не указано, будет все делать на примере программы "Punto Switcher ":
1 Заранее прописать путь распаковки в конфиге SFX: Код:
InstallPath="c:\\Program Files (x86)\\Yandex\\Punto Switcher" Код:
sfx.exe -InstallPath="c:\\Program Files (x86)\\Yandex\\Punto Switcher" 3 Путь неизвестен и его надо найти непосредственно из запущенного SFX. В этом случае нужно знать некоторые подробности искомой папки и файлов в ней дабы выбрать достаточно уникальный файл и путь к нему не повторяющийся в других папках. Для Punto Switcher выбираем Punto Switcher\Data\triggers.dat. Имя файла + путь к нему достаточно уникальны для нашей задачи идентификации папки Punto Switcher. В конфиге удаляем параметр InstallPath, дабы распаковка происходила во временную папку, и пишем такую строку: Код:
RunProgram="hidcon:cmd /c For %z In (c d e f g h i j k l m n o p q r s t u v w x y z) Do For /F \"delims=\" %a In ('Dir /b /s \"%z:\\\" 2^>Nul ^| Find \"Punto Switcher\\Data\\triggers.dat\"') Do Set fp=%a& Call xCopy * \"%%fp:\\Data\\triggers.dat=%%\" /s /e /i /y /h /k& Exit" |
gora
Огромная благодарность. Ваше объяснение доступно для понимание и разжевано в деталях. Очень полезно и информативно. Я давно искал метод решения и вы, очень помогли. Полезное пояснение не только для меня одного, надеюсь. Еще раз, спасибо, буду пробовать. ) Отпишусь позже! |
можете пожалуйста помочь с наработоспособным конфигом? ))) нужно для XP x64 :)
начну издалека )) есть работоспособная бат-команда, Код:
cmd /c If Exist "C:\Program Files (x86)\vdf_fusebundle.zip" (Reg Add HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce /v "Update_and_del_vdf.bat" /t REG_SZ /d "cmd /c If Exist \"C:\Program Files ^^(x86^^)\Update_and_del_vdf.bat\" \"C:\Program Files ^^(x86^^)\Update_and_del_vdf.bat\"") Код:
cmd /c If Exist "C:\Program Files (x86)\Update_and_del_vdf.bat" "C:\Program Files (x86)\Update_and_del_vdf.bat" Код:
RunProgram="x64:cmd /c If Exist \"C:\\Program Files (x86)\\vdf_fusebundle.zip\" (Reg Add HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce /v \"Update_and_del_vdf.bat\" /t REG_SZ /d \"cmd /c If Exist \\\"C:\\Program Files ^^(x86^^)\\Update_and_del_vdf.bat\\\" \\\"C:\\Program Files ^^(x86^^)\\Update_and_del_vdf.bat\\\"\")" Код:
cmd /c If Exist "C:\Program Files ^(x86^)\Update_and_del_vdf.bat" "C:\Program Files ^(x86^)\Update_and_del_vdf.bat" |
Код:
RunProgram="hidcon:%%P:cmd /c If Exist \"C:\\Program Files (x86)\\vdf_fusebundle.zip\" Reg Add \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnce\" /v \"Update_and_del_vdf.bat\" /t REG_SZ /d \"cmd /c If Exist \\\"C:\\Program Files ^(x86^)\\Update_and_del_vdf.bat\\\" \\\"C:\\Program Files ^(x86^)\\Update_and_del_vdf.bat\\\"\" /f" |
gora, спасибо огромное! всё работает :up
а в чем именно заключалась моя ошибка? (ну, кроме необязательных слэшекавычек вокруг пути реестра) а то скобочки там как раз должны были быть ))) (хотя без усложнения этой команды они там и необязательны) |
gora, не то, чтобы я вас тороплю, но может вы просто пропустили оповещение о моём предыдущем сообщении? :hi:
|
Цитата:
Цитата:
3 Для экранирования скобок в команде в данном случае достаточно одного знака "^", два уже лишку (они экранируют сами себя) 4 Добавил в конце команды Reg Add ключ /f. Конфиг проверен перед выкладыванием и работает (после перезагрузки батник запускается). |
Цитата:
нда, с командной строкой нелегко совладать ))) ну и еще вопросик, но уже не совсем по теме (но в том же контексте команды конфига) - получается, что даже при усложнении (команды конфига в целом) не обязательно заключать подкоманду в блок? |
Цитата:
Блоки нужно использовать там, где в них есть необходимость, а где можно обойтись без них, там лучше их избегать. Пример необходимого использования блоков: посты 165, 166. |
gora, а есть вообще способы узнать, что за ошибку выдаёт команда в конфиге при запуске?
про перенаправление вывода я знаю, но в конфиге (в командной строке всё нормально) у меня это почему-то не работает (если указать перед последней кавычкой и после всей основной команды) Код:
> \"%%S\\1.txt\" |
Цитата:
Код:
RunProgram="%%P:cmd /k ...... |
Цитата:
Ещё раз Огромное Спасибо :yes: |
(проблема решена, см. ниже)
gora, извините, что опять приходится вас теребить, но снова рабочая бат-команда не хочет после оптимизации работать в конфиге ))) и /k не работает (окно просто мелькает), как и перенаправление вывода батник Код:
cmd /c FOR /D %%d IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST "%%d:\Hs2S0p5pgKyx\" xcopy "%%d:\Hs2S0p5pgKyx\*" "С:\7ZipSfx.000\Hs2S0p5pgKyx\" /S /E /G /H /R /Y > 1.txt Код:
;!@Install@!UTF-8! правильно получилось так: Код:
RunProgram="cmd /k FOR /D %d IN (a b c d e f g h i j k l m n o p q r s t u v w x y z) DO IF EXIST \"%d:\\Hs2S0p5pgKyx\\\" xcopy \"%d:\\Hs2S0p5pgKyx\\*\" \"%%T\\\" /S /E /G /H /R /Y > \"%%S\\1.txt\"" |
Доброго утра всем! Вопрос такой - что я делаю неправильно - когда запускаю репак какой -либо программы сделанный на основе 7z SFX выдается ошибка "не является приложением вин32"? Заранее благодарю
|
Fortress1
1 Приведите скриншот ошибки 2 Дайте ссылку на этот Цитата:
3 Возможная причина состоит в том, что этот SFX сделан специально для х64 систем и в нем использован х64 модуль. В этом случае x86 система (а не модуль) выдает подобное сообщение об ошибке. |
Немного забуксовал с командой xcopy. Классическое файл или папка, как исправить?
Код:
RunProgram="fm5:cmd /c xcopy /y /n \"Program Options.xml\" \"%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6\"" |
sov44, если нужно скопировать не каталог, а простой файл - имхо проще воспользоваться командой copy /y
|
Необходимо создать структуру каталогов и скопировать туда файл Program Options.xml, потому и xcopy.
|
Код:
RunProgram="fm5:hidcon:cmd /c md \"%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6\" & copy /y \"Program Options.xml\" \"%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6\"" |
Может быть как-то вот так?
Код:
ROBOCOPY "%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6" <destination> "Program Options.xml" /S |
задача: если установлена Windows 7, то создать папку "C:\Users\[User name]\AppData\Roaming\picpick" и переместить в неё файл picpick.ini
написал, но выдаёт ошибку (часть кода) Код:
SetEnvironment="w7=..\..\..\..\..\..\AppData\Roaming\picpick" |
Удалите лишние кавычки в строке (веделил цветом)
Код:
RunProgram="hidcon:cmd /c Ver | Find \""6.1"\" >Nul && (md \"%w7%\"& move \y \"%%T\\picpick.ini\" \"%w7%\")" |
Как удалить папку (defaults) после распаковки (по пути ...\core\browser\defaults) внутри архива.
Нашел 3 варианта но что то не срабатывает Код:
AutoInstall="hidcon:cmd /c del \\core\\browser\\defaults /q" |
timon45, попробуй
AutoInstall="hidcon:cmd /c rd /s /q \"%%T\\core\\browser\\defaults\"" |
Цитата:
Код:
AutoInstall="hidcon:cmd /c RD /S /Q core\\browser\\defaults" |
specialist, gora не удаляет.
|
Такой вопрос, имеется файл конфигурации:
;!@Install@!UTF-8! Title="Extract" RunProgram="setup.exe" ;!@InstallEnd@! как правильно прописать в файле конф. чтоб запустился х64-х битный установщик(модуль). Именно чтоб он работал в 64-х битном режиме, знаю что есть переменные %SfxVarSystemPlatform% и %SfxVarModulePlatform%, но до конца не понимаю как прописать, и может ли СФЭкс работать в 64 битном режиме. Или эти переменные могут лишь давать запрет на распаковку не в той среде? P.S. И еще касательно этого: Цитата:
|
Ребят, а в конфиге можно сделать логичную установку, например:
Код:
cmd /c ver |
Limonica, можно.
Строчка из конфига picpick Код:
RunProgram="hidcon:cmd /c Ver | Find \"6.1\" >nul && (md \"%SFXfolder26%\\picpick\"& move /y \"%%T\\picpick.ini\" \"%SFXfolder26%\\picpick\" >nul)" |
Не катит такой вариант, слишком длинная строка будет, более 5000 тысяч символов, а в ХР на такое ошибка.
|
gora, заметил такую особенность на windows 8, при запуске SFX архива выдаёт ошибку, что файл не является 7z архивом. Причём такое происходит не на всех созданных кнопкой инсталляторах. Пробовал разные методы сжатия результат тот-же. На XP и W7 эти архивы работают. Скажите, в чём загвоздка.
Рабочие Эти не работают |
Цитата:
SFX-и сделанные не кнопкой работают везде без проблем. |
|
Подскажите пожалуйста. Стоит кис 2013, сегодня появилась проблема, при создании архива с помощью кнопки выскакивает ошибка:
![]() Если же касперского отключить, то архив собирается без проблем. Пробовал добавить Button.exe и всю папку SFX Tool в исключения-проблему не решило. Раньше такого не было. Прошу прощения если нужно было писать в тему по касперскому. |
Необходимо сделать раздельную установку в зависимости от прав пользователя (user,admin). Подскажите как реализовать, не прибегая к bat файлам?
Для полноты картины приведу пример: Код:
------------------------------------------------------------------------------- |
Друзья, подскажите, пожалуйста, как прекратить установку в случае, если разрядность ОС x86?
Не могу сообразить, как это оформить в конфигурационном файле... Спасибо! И еще, быть может, кто-нибудь подскажет, почему данный простецкий код: Код:
;!@Install@!UTF-8! |
Цитата:
|
The_Immortal, используйте «msg.exe».
|
Цитата:
Код:
;!@Install@!UTF-8:x86! Цитата:
Пример того, что я хочу увидеть при запуске sfx-архива из-под CMD на 86-разрядной ОС: Код:
C:\Users\The_Immortal>program.exe Цитата:
|
Цитата:
|
Цитата:
а) искать при запуске своего родителя; б) делать (возможно) detach от своей консоли; в) делать attach к консоли родительского процесса (если она есть) г) осуществлять вывод в присоединённую ранее консоль д) делать detach присоединённой ранее консоли и завершать свою работу. Цитата:
Цитата:
|
После распаковки SFX-архива в временной папке у нас есть файл Proga.exe, который нужно
запустить или не запускать в зависимости от реестра. Вот такая запись пишется в реестр если установить файл Proga.exe, который находится внутри SFX-архива: Код:
RunProgram="hidcon:Reg Add \"HKCU\\Software\\Proga\" /v \"InstallPath\" /t REG_SZ /d \"C:\\Program Files\\Proga\" /f" записи в реестре нет или имеет любое другое значение, нужно запустить файл Proga.exe, если значение равно "C:\Program Files\Proga", то Proga.exe запускать не надо. Я думаю как то так сделать: RunProgram="hidcon:cmd /c (Если значения "C:\Program Files\Proga" в реестре нет, то запустить файл Proga.exe)" В скобочках нужно заменить на правильное решение. Получается если такая запись "C:\Program Files\Proga" в реестре есть ничего устанавливаться не будет, если такой записи нет или имеется другая запись, то программа будет устанавливаться опять, что мне и нужно. Как в конфиге сделать проверку в реестре? Проверять нужно только в реестре. Надеюсь понятно выложил суть проблемы. |
Цитата:
батник пихается в архив вместе с программой, в конфиге прописывается запуск батника. |
Цитата:
|
|
Цитата:
|
Вопрос:
Вот типичный архив - модуль+конфиг+архив=exe который можно открыть архиватором а можно ли поставить пароль на архив,при этом запуская exe без пароля |
nfs911, ответ звучал уже много раз и даже добавлен в шапку в FAQ пункт2 ну и последний ответ Олега.
|
Знатоки подскажите! У меня есть 2-ва разных *.exe (1-й x86, 2-й x64) файла которые я хочу запаковать в 7z SFX. Мне необходимо составить файл конфигурации - чтоб эти 2 файла в тихом режиме распаковывались во временную папку temp и на операционной системе любой разрядности автоматически запускался нужный file.exe и все! (далее инсталляция будет проходить по средствам вложенного исполняемого файла)
И по завершению процесса установки - необходимо чтоб распакованные в папку temp файлы удалялись. |
Metabolic
Код:
;!@Install@!UTF-8! |
gora Спасибо! проверил работает - единственное я просил распаковку в тихом режиме без всяких окон вначале и в конце, ну с этим попробую сам разобраться!
|
А можно сделать так чтоб в распакованном и запущенном *.exe инсталляторе в окне выбора каталога установки модуль - 7z SFX архива автоматически подставлял вместо "Program Files" значение "Program Files (x86)" на системах x64? (просто сам инсталлятор не поддерживает переменную - %PROGRAMFILES% и не может определить тип системы).
И ещё такой вопрос - можно ли скрыть процесс самого архива 7z SFX.exe чтоб он не фигурировал в процессах одновременно с запущенным распакованным файлом? |
Цитата:
![]() посмотрите - если cmd запущен "сам по себе" то %PROGRAMFILES% указывает на c:\Program Files а если cmd запустить из-под 32 битного тотала, то уже на c:\Program Files (x86) |
"Amigos" вы не так поняли! - я создаю 7z SFX.exe который в тихом режиме распаковывает в папку temp установочный файл (*.exe) (который я в него запаковал) и запускает его. Но этот установочный файл (*.exe) не понимает что такое x32 и x64! в нем просто прописано C:\Program Files\.... (и на системе x64 он пишет тоже самое, хотя должен писать C:\Program Files (x86)...).
Вот я и спрашиваю - можно ли осуществить подстановку значения "Program Files (x86)" на x64 в распакованном с 7z SFX.exe файле, который потом запускается? |
Цитата:
|
Цитата:
теперь знаю что ничего нельзя сделать. -у меня остался ещё один вопрос: "можно ли скрыть процесс самого архива 7z SFX.exe чтоб он не фигурировал в процессах одновременно с запущенным распакованным файлом"? |
Цитата:
|
Цитата:
|
Цитата:
|
подскажите пожалуйста где взять "файл конфигурации" для создания sfx с помощью 7zip кнопки для тотала командера? Заранее спасибо!
|
Цитата:
|
Цитата:
|
7z не поддерживает архивы последней версии WinRar :(
|
Привет всем. Ребят, помогите пожалуйста, вопрос такой: добавил в sfx архив портативные программы, нужно чтобы при запуске программы, программа определяла виндовс, то есть если это виндовс хр то запускается файл допустим 1.ехе если нет до запускается файл допустим 2.ехе, как это правильно прописать в sfx архиве? Заранее огромное спасибо.
|
Цитата:
Код:
;!@Install@!UTF-8! |
Цитата:
ага у меня получилось так RunProgram="x86:hidcon:cmd /c Ver | Find \"5.2\" >Nul || myprog.exe" RunProgram="x64:hidcon:cmd /c Ver | Find \"5.2\" >Nul || myprog64.exe" Да, и еще такой момент, допустим в sfx лежит портативная программа, в sfx прописано что при запуске она распаковывается в %appdata% как сделать чтобы при следующем запуске, программа не распаковывала по новому ее в %appdata% а проверяла, если по пути %appdata%\myprog\ есть допустим файл myprog.exe то запустить ее, а если нет, то распаковать и запустить... Спасибо Огромное за помощь. |
Цитата:
|
Ребят подскажите пожалуйста, как сделать, чтобы при установки программы 7zSFX ярлычок устанавливаемой программы закреплялся на панели задач и в меню пуск? То-есть как это прописать в config ?
|
Вложений: 1
Доброе время суток
Подскажите пожалуйста как избавиться от перезагрузки компьютера после тихой установки программы Config.txt ;!@Install@!UTF-8! RunProgram="AdobePhotoshopCS6.exe /VERYSILENT" RunProgram="stop.bat" GUIMode="2" ;!@InstallEnd@! у меня вот так написан config. Какую еще нужно прописать команду чтобы компьютер не перезагружался? Если не в этом файле то где необходимо это сделать? |
Цитата:
|
Подскажите пожалуйста, у меня есть программа но на виндовс 8.1 она не устанавливается, а устанавливается только в режиме совместимости с виндовс 7, так вот хотел узнать, как прописать это в конфиге, чтобы программа устанавливалась в режиме совместимости с виндовс 7(желательно чтобы команда определяла что это виндовс 8 и если это 8ка то она выполняет ее в режими совместимости с 7? Спасибо огромное.
|
Dean_Winchester
Вопрос не имеет отношения к конфигам. Нет такого функционала у модуля и это ясно из справки, которую Вы должны были уже изучить. Вам надо сначала решить задачу "чтобы программа устанавливалась в режиме совместимости с виндовс 7". Найдите возможность сделать это из батника \ vbs \ autoit и т.д. Это за Вас ни кто делать не будет. Потом это найденное решение (батник) запихните в архив и в конфиге пропишите его запуск. Получите что хотите. Цитата:
|
gora, Приветствую,
Возможно ли добавить параметр "type" который будет устанавливать ярлык exe-файла в папку "SendTo" ? |
nibble74, да, возможно, пример:
Код:
; Ярлык в контекстном меню->Отправить |
Цитата:
Код:
RunProgram="hidcon:cmd /c Ver | Find \"6.\" >Nul && wscript.exe \"%%T\\runQ.vbs\"" |
Нужно проверить наличие определённого файла, если не найден, прекращать исполнение sfx. Попробовал первой командой строку
Цитата:
|
sov44, а чем в конфиге Delete= не устраивает ?
|
Цитата:
|
sov44, в таком случае лучше все команды в батник прописать, а в конфиге делете. Вариантов множество. Хотя посмотрим, что gora, скажет.
|
Цитата:
Цитата:
Цитата:
|
Нужно найти определённую программу через батник (по хитрому, exist не катит) и присвоить переменной путь до этой программы. Затем создать ярлык на рабочем столе для запуска этой программы. Экспериментировал, но путь в ярлыке не раскрылся.
батник 1.cmd Код:
"set pt=d:\1\name.exe" Цитата:
|
sov44, вернуть переменную %pt% из батника в конфиг невозможно. Модуль не видит переменных в дочерних процессах и не может их использовать. :(
PS Но переменные из родительского процесса модуль видит и это можно использовать. Код:
set pt=d:\1\name.exe |
Цитата:
|
Цитата:
Код:
;!@Install@!UTF-8! Код:
:: Создаем переменную pt и запускаем рекурсивно SFX |
В продолжение темы. Появилось потребность перенести содержимое sfx из временной папки, куда распаковывается, на новое место, определённое AutoInstall1. Через переменную %%T что-то не получается.
Код:
;!@Install@!UTF-8! |
Цитата:
Код:
AutoInstall1=%%P:cmd /k move /y \"%%T\" \"%put%\" |
Цитата:
|
Цитата:
Действительно перемещает, но только в пределах диска. |
Цитата:
P.S. Не удивляйтесь — я сам ровно так же «купился», до недавнего времени полагая, что файлы могут перемещаться только в пределах того же раздела (как было раньше в DOS). |
Подскажите пожалуйста, как правильно записать батник
Код:
msiexec /i x64\PerfectDisk.msi /q ALLUSERS=1 DESK_TOP_ICON=1 Код:
AutoInstall="x64:x64\PerfectDisk_x64.msi /qn ALLUSERS=1 DESK_TOP_ICON=1" |
Цитата:
|
Dean_Winchester, попробуйте вместо 5.2 написать 5.
|
Цитата:
|
Dean_Winchester,
Можно реализовать с помощью батника или в файле конфигурации |
Цитата:
Хотя щас проверил все равно на XP x64 не отрабатывает команда.... на 7ке все отлично а вот на XP нет ((( |
Цитата:
Может gora, что нибудь посоветует. |
Цитата:
|
Цитата:
Цитата:
Цитата:
|
Dean_Winchester,
Только что проверил на виртуальной машине XPx64, нормально отработало. И на всех остальных версиях windows тоже. Скорее всего у вас проблема в самом windows xp64 |
Всем спасибо... Думаю дальше разберусь сам...
|
Подскажите, как передать в sfx значение?
пробовал так, но параметр не передаётся. Код:
;!@Install@!UTF-8! |
Цитата:
Модулю можно передавать ключи после ключа ! и тогда он их передаст куда надо. Цитата:
Цитата:
|
sov44,
Можно передать так Код:
set "var1=%~1" Код:
;!@Install@!UTF-8! |
Hi, apologize for using English (you can of course answer in Russian! Thanks!)
I'm using the module to generate different .exe archives, but all in the same structure: MyProgDir (directory) L-- Run.exe L-- (other files/folders - about 30 MB of them, in some 280 files) The name MyProgDir can change in different cases - so it can also be with spaces or with special characters like umlauts (ü). But there's always run.exe inside. When the SFX is extracted I want the file "run.exe" to be executed. I want to see just run.exe in a window and not any console windows. At first my configuration file was like this (MyProgDir is replaced by whatever name I need in different cases) Код:
;!@Install@!UTF-8! From here, I tried two different things but none of them worked 100%. 1. first way - open cmd.exe and terminate it immediately after starting my app, and setup the current dir to MyProgDir: Код:
RunProgram: "\"cmd.exe\" /c start /b /d MyProgDir run.exe" If I changed this to cmd.exe /K the files were all there, but I was stuck with the console window. 2. second way - create a .bat file: run.bat: Код:
start /w /d "MyProgDir" run.exe Код:
RunProgram="hidcon:\"MyProgDir\\run.bat\"" Is there a way to have just one simple RunProgram command to handle this? |
Цитата:
2. В текущем каталоге есть какие-то другие файлы, каталоги? \.. \MyProgDir\ Если нет, то можно упаковать содержимое MyProgDir\ в корневой каталог 7z.exe a "MyProgDir.7z" -r "MyProgDir\*" -mx5 Далее распаковка в: InstallPath="%TEMP%\\CustomFolder" RunProgram="run.exe" ... |
Уважаемый gora, подскажите пожалуйста если это возможно, можно ли как то дополнить эту команду, то есть суть такая, нужно чтобы команда RunProgram="hidcon:cmd /c Ver | Find \"6.2\" >Nul || 2.ехе" проверяла не только для вин8 (6.2) но и для вин8.1 (6.3) ? просто нужно чтобы на всех виндовс программа ставилась и только на 8-8.1 нет... может можно как то дополнить команду? если прописать так RunProgram="hidcon:cmd /c Ver | Find \"6.\" >Nul || 2.ехе" то на 7ке тоже не будет ставится, а мне нужно чтобы она не ставилась только на 8-8.1
|
del
|
Цитата:
Вы не указываете параметр InstallPath и модуль ведет распаковку во временную папку. Затем он запускает run.exe и ждет завершения процесса run.exe, но он (файл run.exe) может породить один или несколько дочерних процессов и при этом закрыть родительский, т.е сам run.exe. Дочерние процессы продолжают свою работу, а модуль получил команду о завершении процесса run.exe и начал все удалять из своей временной папки (такова логика его работы во временной папке). Вот в этот момент Вы и можете получать сообщения об отсутствующих dll. Здесь можно попробовать использовать префикс waitall, но это не всегда срабатывает. Можно отказаться от временной папки и указывать конкретный путь распаковки в параметре InstallPath, но тогда после окончания установки убирать "мусор" в виде этой папки придется самостоятельно, а не ждать этого от модуля. Цитата:
Цитата:
Код:
start "" /w /d"%%T\MyProgDir" run.exe sas2242, боюсь, что в одну строку все засунуть не получиться, для таких проверок лучше использовать батник. |
Thanks for your messages. After reading your suggestions and going back to my code/setup I realized that I don't really need to place the files in their own subdirectory - and things got a lot easier. Thanks again!
|
подскажите как добавить в файле конфигурации ярлык на рабочий стол!
|
agrei678, в справке
Цитата:
|
|
Ребят, подскажите пожалуйста, есть необходимость выполнить такую команду RunProgram="hidcon:Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f"
но почему то она не отрабатывает, а если быть точнее, то запись в реестре не появляется, где я чего упустил? Спасибо. |
Dean_Winchester, эта ветка недоступна из х86 приложений (модуль то, очевидно, х86 используете). Попробуйте использовать префикс:
Код:
RunProgram="x64:hidcon:Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f" |
Цитата:
то в 8-8.1 приложение запускается при старте только из \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" но добавить туда эту ветку не получается... как и в 7ке она туда не добавляется (хотя в 7ке и так работает) с префиксом пробовал, тоже не выходит... |
Dean_Winchester,
надо так CMD /C RunProgram="hidcon:cmd /c Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f" |
Цитата:
|
Dean_Winchester
|
Dean_Winchester, Пере направление в Wow6432Node под управлением Windows х64, для 32-разрядных приложений происходит автоматически. То есть, пишем:
Код:
RunProgram="hidcon:Reg Add \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f" nibble74, CMD тут без надобности, потому что Reg.exe идет отдельным файлом. |
Ж.Д.А.Л.К.Е.Р., приветствую,
в свою очередь хочу сказать, что зачастую, не срабатывало без cmd /c на некоторых машинах не знаю с чем это связано... может антивирусы блокировали, поэтому для надёжности передаю команду cmd /c |
Здравствуйте, подскажите пожалуйста, сделал себе аддон программы, так вот в вин 8-10 чтобы программа правильно работала и подхватывала все настройки, нужно запускать ее от имени админа, собственно вопрос: можно ли как то с помощью 7zSFX прописать это или сделать, чтобы ярлыку программы присваивался статус запуск от админа? В принципе, программа устанавливается простым копированием и добавлением веток в реестр. Надеюсь на вашу помощь.
|
:) Спасибо за помощь... :)
|
Что-то запутался. :) Нужно, чтобы содержимое папки х64 копировалось в Program Files а не в Program Files (x86)
Код:
RunProgram="%%P:hidcon:xcopy /s /e /i /y \"%%T\\%%P\\*\" \"%ProgramFiles%\\%Name%\\\"" |
|
Ощущаю себя полным идиотом. Пытаюсь сделать простой установщик сборки для rainmaker(кастомный виджет для предприятия +вырезана возможность подгружать свои) на основе портабл версии программы. Все собрано в одну папку, которую надо поместить в Program Files, плюс ярлык для помещения в автозапуск. Написал простой установочник, но проблема - при старте сразу же выдается ошибка "указанный файл не найден"
Код:
;!@Install@!UTF-8! |
Цитата:
Ваш конфиг распакует Ваш архив (предполагаю, что это папка Rainmeter) в свою временную папку (с рандомным именем которую создаст сам SFX), а не в папку %TEMP%. Попробуйте убрать упоминание %TEMP% из конфига, ибо текущей папкой является папка распаковки, т.е. в данном случае как раз его временная папка с рандомным именем. |
Не работает по прежнему
Код:
;!@Install@!UTF-8! Архив состоит из ярлыка и папки Rainmeter, да) |
Desmodeus, поиск неисправностей неоднократно описывался.
Первый вариант 1 удалите префикс hidcon 2 замените ключ в строке с cmd /c на cmd /k 3 начните с одной строки в конфиге, а вторую закомментируйте или удалите После запуска смотрите, что напишет в окне консоли Второй вариант 1 создайте батник из Ваших двух строк конфига (конечно по правилам батников, без лидирующих слешей, префиксов и прочего). 2 положите батник рядом с распакованной папкой и ярлыком и запустите батник. После запуска смотрите, что напишет в окне консоли Если в окне консоли будет ругань, то вопрос не к конфигу, а к написанию батников. Наши специалисты всегда помогут новичку грамотным советом в соответствующем форуме. |
Так, разобрался. Да, ошибка была в самой бат команде.
Так, а теперь как добиться того чтоб установщик сам завершался? На данный момент он после копирования зависает и остается висеть в процессах. Должна ли быть это какая-то команда в конфиге чтобы по выполнению финальной команды установочник завершался? Код:
;!@Install@!UTF-8! |
Цитата:
|
Цитата:
|
Цитата:
2 при необходимости перезаписи файлов команды xCopy и Copy могут выдавать запрос о перезаписи в консоль, т.к. ключей, для подавления этого запроса, у Вас в конфиге я не вижу. |
Так, спасибо, с этим разобрался. ЕЩё один вопрос - если я хочу чтобы мой установочник перед стартом проверял наличие .net и при необходимости его ставил, можно ли такое реализовать через файл конфигураций или же это лучше в вызываемый bat файл помещать?
|
1
Цитата:
Цитата:
Цитата:
|
Не получается передать консоли символ "или" (в тексте как две вертикальные полоски - || ).
Часть кода: Код:
SetEnvironment="Commands=-Параметр1 -Параметр2 -и т.д." Если вместо File3.exe поставить File2.exe, то он не запускается. Через батник: Код:
File1.exe || File2.exe || File3.exe Как достичь того же эффекта ? Что я делаю не правильно ? Писать \|\| пробовал. Толку 0. |
Не дождался помощи :) Всё равно спасибо. Сам разобрался. Использовал проверку на присутствия файла:
Код:
... |
Здравствуйте, подскажите как можно прописать в файле конфигурации, чтобы архив Soft.7z расположенный рядом с SFX архивом распаковывался в папку с установленной программой.
|
Цитата:
Код:
; автономный архиватор 7zr.exe положить внутрь sfx |
Цитата:
|
Цитата:
p.s. Поправил переменную, проверьте. |
gora, Спасибо за помощь.
Цитата:
Код:
RunProgram="hidcon:7zr.exe x \"%%S\\Soft.7z\" -aoa -o\"%SystemDrive%\\soft\"" |
gora, приветствую,
Где тут ошибка ? Код:
SetEnvironment="SYS=%SystemRoot%\\папка" В ком строке работает, а в sfx архиве не срабатывает. |
Цитата:
|
Цитата:
теперь работает. Спасибо за помощь. |
Подскажите пожалуйста. Возможно ли в файле конфигурации задать параметр, чтоб после окончания установки FinishMessage закрывался самостоятельно через определенное кол-во времени?
|
Цитата:
|
Нужно выполнить команду удаления ключа в реестре:
Код:
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" |
gora, спасибо, только заработало как:
Цитата:
|
Подскажите пожалуйста. Можно ли создать архив предназанченный только для х64? Чтоб при попытке запустить распаковку на х86 появлялось сообщение что то вроде - система не соответствует.
|
Цитата:
|
А как правильно записать эту команду:
Код:
TaskList|Find /I "iexplore.exe">nul&&(Taskkill /im "iexplore.exe") |
timon45
1 Это не конфиг, а синтаксис cmd. 2 А зачем проверять наличие процесса? Завершайте его в любом случае это будет проще. |
...
|
Приветствую всех!
Первый вопрос: Существует ли документация по разметке и оформлению текста в модулях с диалогами ? Имеется ввиду это
![]() Код:
BeginPrompt="{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fprq2\fcharset204 Century Gothic;}{\f1\fswiss\fprq2\fcharset204 Tahoma;}} На офсайте на нашел и даже не уверен как это искать (и что искать), а изучения методом тыка и выборочного удаления параметров проходит менее продуктивно, чем хотелось бы. Прошу меня простить, если уже было. Второй вопрос: Есть ли способ (или обходной путь) научить модуль раскрывать переменные, такие как %DATE% ? Автор модуля мне ответил следующее Цитата:
Суть вопроса в картинках
![]() ![]() Заранее благодарю :) |
Еще один вопрос. Но тут интерес больше спортивный, чем практический :)
Длиннопост
Допустим:
Имеется main.bat, который запускается модулем после распаковки. config.txt Код:
;!@Install@!UTF-8! Код:
@echo off Так что еще одним RunProgram не отделаться (или я просто не знаю как) И работа всех трех (main.bat, Console_1.bat и Console_2.bat) должна продолжиться параллельно и независимо друг от друга Console_1.bat Код:
@echo off Код:
@echo off ![]() Вопрос1: как скрыть эти консольные окна средствами модуля? (при этом не распаковывая sfx.exe заново) Console_1.bat и Console_2.bat обязательно должны быть запущены из main.bat, чтобы можно было передать им переменные созданные main.bat в качестве аргументов и Вопрос2: Как можно передать модулю некую переменную полученную в результате работы запущенной им программы из предыдущего RunProgram, для использования её в следующем по порядку RunProgram ? Пример: Код:
RunProgram="main.bat" Скрытый текст
В конфигурационном файле объявляется переменная содержащая полный путь к sfx.exe
Допустим так SetEnvironment="WRAP=%%S//%%M" config.txt Код:
;!@Install@!UTF-8! Вызов Console_1.bat и Console_2.bat из main.bat происходит следующим образом: Код:
start "" "%WRAP%" -sfxwaitall:1 cmd /c "Console_1.bat %var1%" Код:
@echo off Console_1.bat и Console_2.bat остаются без изменений и более не показывают консольные окна и переменные полученные в результате работы main.bat передаются далее. sfx.exe как положено дожидается завершения последнего дочернего процесса и рапортует "Done". Опять же хочу напомнить, что интерес больше спортивный, чем практический :) Заранее благодарю за ответы |
Цитата:
Открыл WordPad, написал нужный текст, подобрал нужные размеры и типы шрифта, цвета, отступы и т.д. Получил следующее: ![]() Сохранил текст в формате rtf, вставил его в конфиг, удалил теги, которые мне показались лишними (каждый раз проверяя полученный результат запуском конфига через Кнопку). Все! :) Цитата:
Цитата:
|
Цитата:
Поглядим, что из этого получится ) Цитата:
Цитата:
Практическая цель на данный момент одна: изучение возможностей модуля ) С реальными практическими целями пока трудностей не возникло, благо все довольно неплохо задокументировано ) Наверно вставить ссылку (кликабельную) таким образом не получится, а жаль :( Код:
BeginPrompt="{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset0 Calibri;}} |
Блин, никак :(
Скрин
![]() |
Цитата:
Вот как пример использования переменной %DATE% в диалогах модуля. Код:
;!@Install@!UTF-8! Цитата:
|
Цитата:
Только условный sfx.exe дважды распаковывается, а это минус в случае больших архивов. Поковыряюсь вечерком, может что придумаю Цитата:
|
Еще интересно, какие еще есть параметры на подобие -sfxwaitall ?
-sfxwaitall:0 равноценно RunProgram=" -sfxwaitall:1 равноценно RunProgram="hidcon: Больше пока выяснить не удалось. В исходниках смотрел, но я в этом ничерта не понимаю. Пробовал действовать по логике -sfxnowait -sfxforcenowait Но это не сработало ) Куда смотреть ? |
Цитата:
Цитата:
Цитата:
Цитата:
|
Цитата:
Цитата:
![]() Используется самим модулем, как враппер. С помощью этого ключа можно, например вызвать любое консольное приложение со скрытием окна (или вообще как угодно) при этом не распаковывая сам sfx.exe. Код:
any_sfx.exe -sfxwaitall:1 cmd /c "any_bat.bat" http://forum.oszone.net/post-2601984-334.html |
Так нагляднее:
Простейший пример случая, при котором модуль использует враппер (возможно я это не верно обзываю, если что, прошу меня простить) config.txt Код:
;!@Install@!UTF-8! ![]() Но никто же не запрещает использовать не совсем по прямому назначению ) Например вы говорили, что в некоторых своих sfx используете двойную распаковку, возможно этим способом можно было бы обойтись без двойной. Вот я и хотел узнать какие еще параметры "умеет" модуль. Наверное имеет смысл дождаться автора модуля :happy: |
gora, приветствую,
Тут возникла проблема с созданием ярлыка к файлу или папке в названии которой присутствуют символы xxx{xxxx}. Возможно ли реализовать как нибудь в конфиге, чтобы созданный ярлык имел путь к файлу имя которого содержит знаки {} ? |
nibble74, попробуйте сделать как это описано в справке:
Цитата:
|
есть параметр SelfDelete="1" самоудаление после выполнения, а можно ли удалить и папку (вместе с её содержимым) из которой была запущена программа.
пробовал с nowait и ping RunProgram="nowait:hidcon:cmd /c Ping -n 4 localhost && rd /S /Q \"%%S\"" но пока удалось удалить только содержимое каталога. Это нужно для того чтобы написать своего рода программу Uninstaller |
timon45, почему бы не использовать inf файл для установки и создание записи о деинсталяции ? Или не о том речь ?
Цитата:
Сделайте сначала переход в другую директорию, потом удаляйте. Код:
RunProgram="nowait:hidcon:cmd /c Ping -n 2 localhost & cd /d %temp% && rd /S /Q \"%%S\"" |
timon45, в SetTools есть файл UnInstall.exe - это SFX на маленьком модуле. Он расположен в папке программы которую должен удалять при деинсталляции. Посмотрите его содержимое, может пригодится при решении Вашей задачи.
|
Цитата:
Цитата:
|
gora,
Не удаётся создать ярлыки для файлов (*.chm и *.url). Нет поддержки ??? Ошибка - не найден exe файл. |
Цитата:
|
Я даже не знал, что новая версия модулей вышла. :oszone: Спасибо посмотрю.
|
Цитата:
|
Походу и так всё нормально отображается
Shortcut="P,{%%T\\Website.url},{},{ProgFolderName},{},{Веб сайт},{},{shell32.dll},{13}" - shell32.dll windows 8.1 Shortcut="P,{%%T\\Help.chm},{},{ProgFolderName},{},{Справка},{},{hh.exe}" |
Вложений: 1
Здравствуйте,
Пытаюсь воспользоватся 7zsd_LZMA_Dialogs.sfx(стабильная версия 1.6.1.3873) для установки ПО в выбранную директорию. конфиг такой: ;!@Install@!UTF-8! Title="Инсталятор Информационного терминала" BeginPrompt="\nНачать установку Терминала \n Ярлык будет помещен на ваш Рабочий стол." CancelPrompt="Вы хотите прервать установку?" ExtractDialogText="Подождите, пожалуйста..." ExtractPathText="Пожалуйста, путь установки:" ExtractTitle="Установка..." GUIFlags="4+8+32+64+256+4096" GUIMode="1" InstallPath="%SfxFolder26%\\Terminal" OverwriteMode="0" Shortcut="Du,{%%T\\Terminal.exe},{},{},{Запуск Терминала },{Инфотерминал},{},{%%T\\7ZSplit.exe},{0}" SelfDelete="1" ;!@InstallEnd@! 1 - что совершенно неполучается сделать - это назначить значение %sfx_homepage% а то она видна на главной страничке после запуска sfx модуля. 2 - с помошью ResourceHacker не получается поменть все иконки в 7zsd_LZMA_Dialogs.sfx, после замены одной все остальные пропадают. ( в далеком 11 году мне это с тогдашним модулем sfx получалось сделать) Подскажите please ;) |
Цитата:
Код:
SetEnvironment="sfx_homepage=http://7zsfx.info" Цитата:
|
Вложений: 1
Почему при запуске с -ai и -ai1 висит 2 процесса в диспетчере и можно ли сделать так чтобы процесс был 1?
Скриншот http://forum.oszone.net/attachment.p...1&d=1460013636 Готовый файл: https://cloud.mail.ru/public/6xwH/2NDr53EvK Конфиг: Код:
;!@Install@!UTF-8! |
21f1nger@vk, попробуйте разделить копирование и запуск ai1
Код:
;запуск из НЕудаляемой временной папки |
sov44, но в -ai прописан обычный запуск, ничего вроде бы сложного нет. Все равно 2 процесса висит, при запуске с -ai
|
21f1nger@vk, архив сам себя перезапускает для элевации прав.
Это нормально ![]() Чем мешает второй процесс ? Если очень хочется, то поправьте манифест в sfx модуле: Измените строку Код:
<requestedExecutionLevel level="asInvoker" uiAccess="false"> Код:
<requestedExecutionLevel level="highestAvailable" uiAccess="false"> |
vavun, теперь понятно, спасибо.
Запуск от администратора все же лучше пускай будет. Для -ai процесс висящий не убрать потому что папка удаляется после выполнения, а вот с -ai1 и -ai2 разобрался - проблема была в ключе start /w Поправил вот так и все работает без лишних процессов: Код:
AutoInstall="waitall:shc0:\"%PF%\\%PN%\"" |
А можете написать пару примеров использования 'ExecuteOnLoad', 'PreExtract' и 'PreExtractX'. В мануале мало информации по их использованию. И я что-то никак прикинуть не могу где они могу пригодится. Может с их помощью можно частично распаковывать архив, например х86 или х64 версию?
|
Застрял в недоумении,
собираю установщик acdsee и не могу понять почему папка с файлами русификации не копируются в указанную директорию... Вот кусок кода: модуль 7zsd_All.sfx v1.7.0.3873 Код:
SetEnvironment="ACD64=%ProgramW6432%" AutoInstall1="hidcon:cmd /c xcopy \"RUS86\" \"%ACD86%\\\" /s /e /i /y" или с этим AutoInstall2="hidcon:cmd /c xcopy \"RUS64\" \"%ACD64%\\\" /s /e /i /y" Собирал с разными модулями, менял сам код на другой, но безрезультатно. Причем если папку русификации собрать в отдельном установщике то все копируется как следует. Код:
SetEnvironment="ACD64=%ProgramW6432%" Код:
; AutoInstall2="x64:64\64.msi /qn" Уже чисто ради любопытства хочу узнать... |
minutka15,
Так у вас копирует в %ProgramFiles%, а надо в AutoInstall2="hidcon:cmd /c xcopy \"RUS64\" \"%ACD64%\\имя папки программы\" /e /i /y" |
nibble74,
В папке RUS64 имеются файлы русификации с правильной структурой ACD Systems->ACDSee Pro и т.д. Говорю же что, если закрыть в конфиге ; AutoInstall2="x64:64\64.msi /qn" то русификатор ставится с правильной структурой. Тут дело в ином, о чем я и хочу узнать... |
minutka15,
выложите полный конфигуратор. |
nibble74,
Да я уже решил проблему. Всунул 2 батника R86.bat и R64.bat R86.bat Код:
@Echo off Код:
@Echo off ну и вот конфиг Код:
;!@Install@!UTF-8! Честно говоря у меня нервы сдали и я не стал дальше ковырять конфиг, тупо собрал, главное работает... |
gora, Приветствую,
Понадобилось быстро поменять иконку в SFX-EXE файле собранный с помощью кнопки, меняю иконку (restorator или reshacker) и после чего ошибка при запуске EXE - (Невозможно прочитать или отсутствует файл конфигурации SFX архива.) Подумал проблема с новой версией кнопки, ладно, установил старую версию 4.2.5 с которой проблем не было и результат тот же, файл SFX архива не запускается после смены иконки при помощи reshacker. Раньше такого не было, без проблем менял иконки в разных SFX архивах, причём даже добавлял 2-3-4 иконки, файл оставался всегда в рабочем состоянии. Теперь что произошло не пойму. Да и в данный момент установлено: OS x64 Win 8.1 та же, на ней проблем не было. 7-zip 16.02 Button 6.2.1 - модули 7zsd_170_3900 С помощью кнопки, выбираю третий вариант (Просмотреть файл конфигурации) он та открывается, но в кодировке хрен знает какой. Если Restorator или ResHacker меняют кодировку, то почему раньше такого не происходило ? Смотрел в AkelPad и Notepad++ ни одна из основных кодировок не подходит, как будто файл с текстом зашифрован. Есть ли какое нибудь решение ? |
nibble74, all:
К огромному сожалению, обновлений кнопки больше не будет и ответов от gora тоже. 7 июля 2016 года Евгений Сахаров (gora) ушел из жизни в возрасте 60-ти лет. |
О боже !
Искренне соболезную всем родным и тем кто знал и уважал Евгения Сахарова |
Печальная новость. Соболезную родным и близким, участником форума по поводу великой утраты. Он был помощником и добрым наставником для многих из нас. Пусть земля ему будет пухом!
|
Цитата:
|
Боже мой! Больно-то как. Царство небесное, вечная память, земля пухом. Спи спокойно, ЧЕЛОВЕЧИЩЕ, а мы будем помнить!
|
Вечная память. Gora, нам тебя будет не хватать. Спасибо тебе за всё.
|
Cоболезную всем родным и тем кто знал и уважал Евгения.
|
Cоболезную и вечная память. Gora.
Прошу прощение что пишу сюда может кто то поможет, не могу скачать нигде "Кнопку для работы с 7z SFX архивами." и на сайте тоже может кто то выложить на какой то файлообменик Спасибо большое |
|
Цитата:
|
Прошу прощения, я несколько растерялся: по ссылке в шапке переменные в виде 7zSfxFolderNN, а здесь - %SfxFolderNN%. Что верно? Ориентировался на офсайт.
Для AkelPad когда-то был написан файл подсветки синтаксиса (прямая ссылка), автоматически включается для файлов с именем "nameconfig.txt". Критика и предложения приветствуются, думаю дополнить список автодополнения (секция Blocks: в конце файла). |
Цитата:
|
sov44, всё оказалось попроще, прошу прощения за невнимательность, проглядел в истории:
Цитата:
|
Присутствуют и те и те...
|
Вложений: 1
Господа, сегодня столкнулся с непонятками...
Немного предыстории: в последнее время установщики сложных программ, использующие Visual C++ 2015 Redistributable часто сталкиваются с тем, что если данный пакет библиотек уже есть в системе, то установка сложной программы либо подвисает на попытке переустановить этот компонент, либо прерывается с ошибкой. Посему я решил доработать стандартный установщик этих библиотек vcredist_x64.exe, чтобы он прежде чем ставить либы, удалял предыдущий пакет. Упаковал я vcredist_x64.exe. Написал довольно банальный конфиг: Код:
;!@Install@!UTF-8! |
m0nkrus, попробуйте c ключем %%P:
Код:
AutoInstall="%%P:waitall:\"%%T\\vcredist_x64.exe\" /uninstall /q /norestart" |
sov44, вы ничего не путаете? Вы переменную пути расположения архива пытаетесь поместить туда, где обычно располагаются префиксы.
|
m0nkrus, префикс %%P - это не путь, а принимает значение разрядности OS х86 или х64 соответственно, в данном случае можно обойтись и без этого префикса, а так же waitall тоже не нужен, конфигуратор сам знает что ему делать.
Цитата:
Префикс %%T тоже уберите. И зачем использовать в конфиге ключ /install, достаточно /quiet /norestart. Кстати, vcredist_x64.exe /uninstall /q /norestart не удалит имеющиеся другие версии 2015 в системе. |
nibble74, вы так много интересного рассказали, что я аж теряюсь...
Да, я перепутал %%P с %%S. Действительно %%P - платформа операционной системы; принимает значения x86 и x64 в зависимости от разрядности ОС. Но зачем бы эта переменная могла понадобиться среди префиксов, мне непонятно. Даже если она сработает, автоматически подменившись на префикс х86 или х64, то в данном случае ни на что не повлияет. Впрочем, от безысходности я попробовал и этот метод. Он ничего не дал. На счет ненужности waitall, а вы уверены? Ведь vcredist_x64.exe запустит вторичный процесс - vcredist_x64.msi. И если ограничиться стандартным wait, используемым по умолчанию, то мы придем к несвоевременному удалению vcredist_x64.exe. Впрочем, возможно я не прав. Тут надо тестировать. Что до того, как я подменяю в установщике vcredist_x64.exe на vcsfx_x64.exe, то я, знаете ли, собираю Master Collection, который Adobe уже 4 года как не выпускает. И умею вносить правки в установщики Adobe, такие, какие мне нужно. На самом деле я конечно же использую стандартное имя файла vcredist_x64.exe. Просто здесь привел другое, чтобы не путаться между именем архива и именем файла внутри архива. А вот ключик я в инсталлере Adobe действительно заменил. %%T - не префикс. Не путайте понятия. Это переменная. Но убрать попробую - вдруг действительно чего-то да даст. Знаю, что можно без ключа /install, когда есть уверенность, что в системе не установлен уже аналогичный пакет. Но я, вроде как, просил, не оптимизировать мой код, удаляя избыточные ключи, а помочь сделать, чтобы метод работал при вторичном запуске. Кстати, vcredist_x64.exe /uninstall /q /norestart прекрасно удаляет имеющиеся другие версии 2015 в системе. И раньше проверял. И сейчас специально проверил перед тем, как здесь отписаться. |
m0nkrus,
Цитата:
Цитата:
Цитата:
Потом видно будет, что да как. |
nibble74
1. Нашел я, что гадило - префикс waitall. Как только его убрал, sfx-сборка заработала штатно. 2. %%T оставил только для команды Delete. Там эта переменная действительно нужна. 3. Ключ /install убрал. 3. На счет "удаляет/не удаляет", действительно не удаляет. Меня ввело в заблуждение, что менялась версия после анинсталл/инсталл. Удаления не происходило - шел простой накат новой версии на старую. А вот как закомментировал строку с установкой, сразу стало видно, что анинсталл не идет. Может показаться, что сборка тогда теряет смысл. Но не для меня. В случае конфликта установленной и устанавливаемой версии Visual C++ 2015 Redistributable установщик Adobe выдает ошибку в конце установки: Код:
----------- Payload: Microsoft Visual C++ 2015 Redistributable Package (x64) 14.0.24516.0 {512B6D21-18F9-11E2-93C1-00215AEA26C9} ----------- Код:
;!@Install@!UTF-8! Спасибо за то, что подтолкнули меня в нужном направлении! |
Одна проблемка все-таки есть: команда "Delete="%%T\\vcredist_x64.exe"" не отрабатывается и vcredist_x64.exe остается висеть в %Temp%... Пробовал все, что можно. И задавать конкретную папку распаковки, без использования переменных, чтобы удалять из нее, и удалять не конкретный файл, а целиком папку, и батч-команды DEL и RD - ничего не помогает. При запуске sfx вручную все работает, но при запуске инсталлером Adobe - нет.
добавлено: Если кому интересно, то опытным путем я нашел-таки решение, которое с гарантией удаляет временный файл, хоть и оставляет пустую папку. Если покажется, что где-то есть избыточный код, то, увы, оно только в таком виде дает нужный результат. Код:
;!@Install@!UTF-8! |
парни подскажите как сделать что бы программы запускались по очереди и каждая ждала пока другая установится
я делал но что то не выходит вот скрипт Скрытый текст
;!@Install@!UTF-8!
GUIMode="1" MiscFlags="4" ExtractTitle="ACDSee Ultimate 10.1 Build 867 x64" InstallPath="%AppData%\\ACDSee Ultimate 10.1 Build 867 x64" RunProgram="%%P:\"Advanced SystemCare Pro 10 Host.cmd\"" RunProgram="waitall:hidcon:\"advanced-systemcare-setup.exe\"" RunProgram="waitall:hidcon:\"Advanced zakritie proza.cmd\"" RunProgram="waitall:hidcon:\"Common.exe\"" RunProgram="waitall:hidcon:\"Reg Iobit Unninstaler .exe\"" RunProgram="waitall:hidcon:\"sait.cmd\"" Delete="%%T" ;!@InstallEnd@! |
vadjliss, Так сделайте через батник...
|
vadjliss,
Ваш алгоритм совершенно не понятен ! Зачем распаковывать в *%AppData%\\ACDSee Ultimate 10.1 Build 867 x64* и потом Delete="%%T" ??? InstallPath вообще не нужен ! И вообще уберите пробелы в названиях ваших файлов, наведите порядок. Advanced zakritie proza.cmd - лишний пробел Reg Iobit Unninstaler .exe - лишний пробел вот действия включая ваши пробелы Код:
;!@Install@!UTF-8! Изучите для чего нужны префиксы. |
Если кому интересно,простенький редактор конфиг-файлов
http://X-RayPro.ru. Прошу сильно не пинать, версия БЕТА. Предложения и отзывы приветствуются. |
X-RayPro, Не форума программы, не обновлений...
И пихаешь ссылку на свой сайт, куда только можешь... Стратегия какая то непонятная... Создай отдельную тему и накидаем идей по улучшению... |
Подскажите, нужна-ли пустая строка в конфиг-файле после
Код:
;!@InstallEnd@! |
Start, на ваше усмотрение. На работу кода это не влияет.
|
По ссылке домашней страницы модулей http://7zsfx.info теперь какой-то другой сайт. Веб-сайт 7zsfx куда-то переехал или умер?
|
alexsupra, С какой целью интересуетесь?
Если нужно скачать модули, то можно тут: Да, сайта больше нет. В нём и смысла особого не было, только перевод денег автора на ветер. |
del
|
Здравствуйте! Кто-нибудь может подсказать?
Если в корне архива есть программа "TEST.exe" ее можно запустить до распаковки файлов? Пробовал "ExecuteOnLoad" выдает ошибку. И зачем нужна временная папка "7ZipSfx.000", которая создается при "ExecuteOnLoad" если в нее ничего не выгружается? |
NikVentura, Ну очень глупый вопрос... Нельзя запустить то, что ещё не извлечено из архива.
Да это и нереально, так как если извлечь один файл, при запуске он может давать ошибку, из за наличия, не распакованного "обвеса" |
NikVentura, погугли: joiner
|
Может кто нибуть подскажет.
Есть ли возможность передать код возврата из EXE с модулем SFX в вызывающую программу? Что-то не получается, или туплю? |
Приветствую! Помогите пожалуйста реализовать задумку. При запуске инсталятора запускалась англиийская версия программы и копировались оригинальные файлы, а при запуске русской (оригинальные файлы + распаковка архива). И ещё, чтобы при запуске английской был интерфейс и информация на английском, а при запуске русской на русском. Заранее спасибо :)
|
Доброе время суток. Помогите решить проблему. Антивируса нет, а встроенный отключен
![]() https://drive.google.com/file/d/1yOh...ew?usp=sharing |
habib2302, покажи файл конфигурации
пример должно быть так: Код:
RunProgram="\"%%T\\utorrent.exe\" /PERFORMINSTALL 0 /NORUN" |
timon45, файлы конфигурации в архиве. Под расширением txt
|
ссылка в шапке сдохла, откуда можно скачать?
|
Wu-Tang
В шапке темы Модифицированный SFX модуль 7-Zip'а для установок есть рабочие зеркала на сайт и файлы. |
Кто нибудь знает работают ли префиксы x86 и x64 в Shortcut="D.....?
Например так: Shortcut2="x86:D,{%PF%\\CCleaner.exe},{},{},{CCleaner},{CCleaner}" Shortcut2="x64:D,{%PF64%\\CCleaner64.exe},{},{},{CCleaner},{CCleaner}" |
krot183
Не работают. x86 и x64 это префиксы только для команд запуска. Ярлыки в зависимости от разрядности можно создать INF-файлом - пример (архив правда запаролен, но это не большая проблема). |
Надо чтобы если передать sfx-архиву путь, типа "C:\file.bin", то это файл был бы открыт внутренней программой.
типа Код:
RunProgram="\"HxD.exe\" \"%Var1%\"" Код:
"C:\HxD.exe" -SetEnvironment="Var1=C:\file.bin" Код:
"C:\HxD.exe" -file "C:\file.bin" Код:
RunProgram="\"HxD.exe\" \"%external param%\"" Все эти возможности я пока не нашёл. |
Всем привет. Знаю что не в тему, но нужная закрыта. Может у кого осталась Кнопка для работы с 7z SFX архивами для TC от почившего и уважаемого gora? Поделитесь пожалуйста, очень нужно.
|
|
Хочу спросить, я правильно понимаю, что если хочу для двух или более языков системе прописать одинаковые параметры, но отличающиеся от основной секции, то мне надо дублировать содержимое этих секций каждый раз прописывая соответствующий суффикс языка.
Или всё-таки как-то можно создать одну секцию и в ней перечислить все нужные мне языковые суффиксы? |
Модуль должен запускаться с параметром командной строки так и без него. Параметром должен являться путь к каталогу, если это не путь к каталогу, то параметр считается не корректным и запуск должен отсекаться. Есть рабочий вариант:
Код:
RunProgram="%%P:CMD /C IF EXIST \"\"%SfxVarCmdLine2%\*\"\" Prog.exe " Есть необходимость, чтобы оно сообщало, что параметр не верный (пример): Код:
RunProgram="%%P:CMD /C IF EXIST \"\"%SfxVarCmdLine2%\*\"\" (Prog.exe) ELSE (ECHO No argument) " Пока это дело разбил на два RunProgram, но хотелось бы понять, почему первый вариант не работает. |
boss911,
Код:
SetEnvirinment="param1=%SfxVarCmdLine2%" |
spectat0r
Ваш код не совсем верен, но вариант с %SfxVarCmdLine2% внутри скобки я уже пробовал (с одними и двумя кавычками и без), в таком случае без параметра Prog.exe запускается, с параметром (прямой путь к существующему каталогу) - нет. Если параметр не верный (не является каталогом), то по логике должен срабатывать ECHO, но не срабатывает. Мистика. Как я уже сказал выше, решение есть, если разбить на два RunProgram, так работает: Код:
RunProgram="%%P:CMD /C IF EXIST \"\"%SfxVarCmdLine2%\*\"\" Prog.exe " |
boss911, фиг знает, скорее всего от версии и источника происхождения модуля зависит. У меня работало без этих извращений с синтаксисом. Но у меня не новые версии уже не помню откуда взятые.)
|
Del
|
писал год назад для себя мини твикер, мне тогда очень помог iglezz, точнее говоря, добавление reg файлов, копирование файлов, в общем по мелочи и запихал в sfx с gui окошками.
скрипт был: Код:
;!@Install@!UTF-8! Код:
;!@Install@!UTF-8! в общем как добавить перезагрузку после установки? или может возможно использовать два файла конфигурации, в одном установка, в другом - перезагрузка? |
Wu-Tang, это не может быть так сработает
Код:
;!@Install@!UTF-8! |
Да можно просто запустить батник из инсталлятора, и им все поделать.
|
sov44,
все фурыкает, но вылезла другая проблема ))) некоторые твики не применяются ((( хотя при запуске вручную рег файлов изменения вносятся, а из инсталлятора нет. обнаружил эти: Код:
; Отключить "Недавние Документы", "Не вести историю открытия документов" spectat0r, я и так часть из батника делаю |
Wu-Tang, для применения твиков выше не нужны повышенные привилегии, они и так спокойно применяются. К тому же не понятно как вы их применяете, через start.bat, через .reg или еще как-то?
|
SOFFON,
вы думаете я сегодня твиками занялся ))) я 10 лет назад хр пересобрал с простыней твиков ))) раз задействовал nsudo значит не применялись, логично же ))) в start.bat идет перечень команд, в данном случае regedit /s tweaks.reg в данный момент не применяются эти два. без nsudo не добавлялись ключи в ветку - HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D |
Wu-Tang, только сейчас обратил внимание на имя батника. Оно не должно называться именем команды, иначе не исключены баги при его запуске.
Цитата:
|
sov44,
имя start? тоже думал об этом ))) сейчас еще выявил, что не отрабатывает команда - xcopy "AppData\Notepad++" "%AppData%\Notepad++" /H /E /G /Q /R /Y /I при ручном вводе в консоли - все копирует. хотя тоже самое отрабатывает в папку windows и program files. все что в батнике: Код:
@echo off Цитата:
ps поменял имя на tweaks - также не копируется папка в appdata и не применяются ключа ))) я в ступоре... |
есть еще у кого-н мысли?
в общем не копируется папка в appdata, и не срабатывают 2 твика, все остальное отрабатывается. те маразм, например, в windows и system32 копируется, а в appdata нет и ключи в hkcr и hklm добавляются, а в hkcu нет. |
Цитата:
Цитата:
Если повышаете привилегии до SYSTEM или TrustedInstaller, то %AppData% находится тут C:\Windows\System32\config\systemprofile\AppData\Roaming или тут C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming. Реестр пользователя тоже твикаете системный. |
jameszero,
дело в том, что твики в ветку HKCR и HKLM не применялись, пока не повысил привилегии. сейчас не применяются HKCU, я их вынес в отдельный рег файл вместе с копированием в appdata и пускаю без повышения прав второй командой: Код:
RunProgram="waitall:hidcon:cmd /c PowerRun_x64.exe /SW:0 \"%%T\\tweaks.bat\"" |
Wu-Tang
Код:
RunProgram="hidcon:tweaks2.bat" |
jameszero,
ха, оказалось побился рег файл с ключами hkcu, поправил и стала отрабатывать: Код:
RunProgram="waitall:hidcon:cmd /c \"%%T\\tweaks2.bat\"" я так понимаю, можно равнозначно юзать оба варианта и ваш и этот? у меня теперь дилемма, команды: copy /Y "devxexec.exe" "%WINDIR%\devxexec.exe" copy /Y "hidcon.exe" "%WINDIR%\system32\hidcon.exe" оставлять с повышенными правами, в данный момент они корректно с ними отрабатывают или перенести в твик с обычными правами? |
Wu-Tang
Для копирования файлов в системные директории права TrustedInstaller конечно избыточны, достаточно административных, флаг MiscFlags="4" запросит их при необходимости (при включенном UAC, разумеется), но есть такое правило "Работает - не трогай!" ), да и обсуждение вопроса уже выходит за рамки данной темы. |
jameszero,
я переделал теперь на - от системы. просто хотелось, чтобы не ничего не запрашивалось при установке. почему здесь спрашивал, тк вручную то они добавляются без повышения прав, а из sfx установщика нет. еще, не подскажите, как поставить пароль на редактирование экзешника, что дописать в конф. файл? |
Wu-Tang
FAQ в шапке темы Модифицированный SFX модуль 7-Zip'а для установок |
в шапке написано, что нет, жаль... :(
|
Код:
RunProgram="WaitAll:HidCon:%%P:CMD /C ECHO %SfxVarCmdLine2% | FINDSTR /IRC:\"\</S\>\" >nul && \"TEST.cmd\" %SfxVarCmdLine2% & DEL \"TEST.cmd\"" Подавления окна ошибки отсутствия файла в RunProgram не предусмотрено? Судя по справке, увы, нет. Поскольку префикс hidcon во втором RunProgram недопустим, существует ли способ (через системное решение), выполнить батник не через CMD /C, чтобы оно не ругалось ошибкой/окном об отсутствии выполняемого файла и при этом не мелькало окном? Про параметр AutoInstallX (-aiX) знаю, не напоминать, пожалуйста, задача использовать свой ключ для выбора режима запуска RunProgram. |
boss911,
а почему во вторую строку не добавите hidcon, как у меня сделано и не мелькает. ps почему не допустим, у меня же отрабатывает во втором. |
Цитата:
Вопрос решен патчем 7zsd_LZMA2.sfx, в котором отключено сообщение/окно об ошибке при отсуствии выполняемого файла (AutoInstall, ExecuteFile, RunProgram, ...), что изначально мне и нужно было для решения своего вопроса. |
boss911,
все, понял теперь. тоже юзаю этот модуль. |
Почитал про префикс delX и параметр DeleteX, толком не понял, посему спрошу. Модуль умеет своими силами удалять файл/папку между выполнениями (множественными) RunProgram? Например, есть два RunProgram, надо указать, чтобы после первого RunProgram удалялся файл? Без внешних ключей и средств. Параметр Delete умеет отрабатывать, к сожалению, только в самом конце.
|
Ребята доброго времени суток.
Код:
@echo off То есть нужно на определенном этапе создать ini файл с именем пользователя и в папке пользователя. Определяю папку распаковки: Код:
SetEnvironment="GO=%SfxFolder26%\\MyProgram" Код:
[Paths] |
Цитата:
Как-то так: Код:
;!@Install@!UTF-8! |
boss911,
PHP код:
Открыл для себя новый набор возможностей файла конфигурации. Знал бы это раньше поступал бы с установщиками иначе. Благодарю еще раз !!! |
как можно передать переменную модуля %%S (путь до sfx архива) в батник запускаемый из этого sfx архива
Код:
RunProgram="%%P:hidcon:Wallpaper_add+block.cmd" |
Цитата:
Код:
RunProgram="" Либо так: Код:
SetEnvironment="SFXDir=%%S\\" |
добрый день, не могу разобраться, возможно ли выполнить команду в командной строке до распаковки файлов. мне нужно убить процесс, чтобы потом провести обновление. помогите пожалуйста
|
Цитата:
|
Доброго времени уважаемые! Прошу помощи,не копируется файл в созданную папку:
Код:
;Создаем папку |
Scorpkoms,
Код:
RunProgram="hidcon:cmd /c copy /y файл.dat\"%UserProfile%\AppData\Roaming\Папка\Папка2\файл.dat\"" А вместо %UserProfile%\AppData\Roaming можно использовать %AppData% |
iglezz,
Благодарю,завтра попробую. |
Scorpkoms,
Код:
;Создаем папку |
|
Как правильно в файле конфигурации написать эти строки:
Код:
takeown /f "%InstallPath%" /a /r /d y Код:
RunProgram="cmd /k Ver | Find \"5.\" >Nul || ... |
Ребята нужна помощь
Хотел обмануть свой установщик подсунув к нему на этапе распаковки отредактированный файл ответов Setup.iss от installshield просил о помощи знатоков тут: Скрытый текст
http://forum.oszone.net/thread-352077.html
В связи с тем что не нашел батник для поиска и замены нужных строк (хотя хватало заменить 2 строчки) решил пойти другим путем. Идея такова, что пользователь на своем компе запускает установщик, файлы распаковываются в temp директорию а после конфиг создает Setup.iss учитывая букву диска и имя юзера затем продолжаем установку с соответствующими ключами установщика. Вот к примеру решил создать новый файл Setup.iss при помощи своего конфига. Setup.iss уже создан с ключами setup.exe -r и весть его созданный текст воссоздаю так: Цитата:
1) я так понимаю что модуль имеет такие ограничения ? 2) система windows CMD имеет такие ограничения ? 3) это глюк системы ? Может кто ни будь создавал установщики от от installshield с такими файлами ответов Может тут есть иной подход ? Сам родной установщик сложный несет с собой несколько cab файлов data1.cab data2.cab data3.cab и куча других сладостей куда без слез не взглянешь. Мог бы и перепаковать установщик однако самому уже интересно стало как все это может закончится. |
Парни нашел возможность все исправить. Может пригодится для тех кто лепит установщики от installshield
Сперва насовсем удаляем те строки из вашего созданного setup.iss которые вы хотели бы заменить. Я удалил 17, 20, и 24, затем вернул клавишей назад пустые строки чтобы текст был слитный. Теперь для добавления необходимых строк подсчитываем под какой строкой должна стоять ваша новая строка у меня получилось 16, 18, 22. Это решает простая команда заполнить то что нужно: Создаем батник и запускаем powershell Код:
powershell "$f=(Get-Content setup.iss);$f[16]='szDir=%ProgramFiles(x86)%\programfolder\programname';$f | set-content setup.iss" Открываем полученный файл setup.iss и видим в нем результат на 17,19, и 23 строках. Код:
szDir=C:\Program Files (x86)\programfolder\programname На тех компах где имеется powershell должно работать. |
Делал для себя пару инсталлеров, те просто вшивал свои настройки для автоустановки.
Скрытый текст
;!@Install@!UTF-8! RunProgram="FileMenu.exe" RunProgram="%%P:hidcon:cmd /c if exist FileMenu.reg regedit /s FileMenu.reg" AutoInstall="FileMenu.exe /VERYSILENT" AutoInstall="FileMenuLang.exe" AutoInstall="%%P:hidcon:cmd /c if exist FileMenu.reg regedit /s FileMenu.reg" GUIMode="2" MiscFlags="4" ;!@InstallEnd@! и Скрытый текст
;!@Install@!UTF-8! RunProgram="HashTab.exe" RunProgram="%%P:hidcon:cmd /c if exist HashTab.reg regedit /s HashTab.reg" AutoInstall="HashTab.exe /VERYSILENT" AutoInstall="%%P:hidcon:cmd /c if exist HashTab.reg regedit /s HashTab.reg" GUIMode="2" MiscFlags="4" ;!@InstallEnd@! Все работает, но может есть какие-н ошибки, недочеты? |
Wu-Tang, Почему у вас *.reg на второй позиции после *.exe!? Вот это явная ошибка.
|
|
Цитата:
|
SergeyZV,
вы про это: Скрытый текст
AutoInstall="%%P:hidcon:cmd /c if exist HashTab.reg regedit /s HashTab.reg"
я брал этот пример установки из этой темы. sov44, меня в принципе и мой вариант устраивает, просто хотелось убедиться в корректности скрипта. |
Цитата:
Цитата:
Вы же не новичок в этом, сами прекрасно понимаете, если бы было что-то не так - то и не работало бы... Все у Вас там нормально... :) |
Wu-Tang Про это
Цитата:
|
Цитата:
Нет здесь никакой ошибки, настройки из рег-файла добавляются после установки программы. Если сделать наоборот, то существует вероятность, что программа затрет уже добавленные настройки своими. Цитата:
а почему у Вас в "AutoInstall=" файл FileMenuLang.exe добавлен, а в "RunProgram=" не добавлен? Это так задумано, или просто просмотрели? |
Цитата:
подскажите, зачем в Windows x64 у Вас копируется два файла разной разрядности в разные папки? Вполне достаточно скопировать HashTab.dll нужной разрядности в System32 и зарегистрировать его. Ну, и соответственно, добавить нужные настройки в HKCU\Software\HashTab\Algorithms. Поправьте пожалуйста, если я заблуждаюсь... |
Цитата:
А если ещё в рег-файле есть регистрационный ключ, то он подхватится автоматически. |
Цитата:
|
Цитата:
Спасибо, что напомнили. :Beer: Цитата:
всегда уважал и уважаю мнение коллег, поэтому спорить не буду, но у меня были случаи, когда программа затирала настройки, добавленные до установки. К сожалению, примеры сейчас привести не могу, т.к. просто не вспомню. Так, что будем считать, что правда Ваша... :wink: Что касается конфигурации коллеги Wu-Tang, то ошибки там нет, отработает и так, и так... |
Vanadiy777,
Цитата:
Цитата:
SergeyZV, тогда какие ваши предложения? |
Цитата:
Цитата:
вот Вы странный человек... Коллега SergeyZV написал русским по белому: Цитата:
Хотя, в Вашем случае, это не будет иметь никакого значения, и так все работать должно. |
Цитата:
Я просто не пойму, что не так, если твики применяются после установки самой программы. Вот у человека - http://forum.oszone.net/post-1751904-98.html точно такая же реализация. |
Цитата:
Цитата:
Вот Ваш сценарий: Код:
;!@Install@!UTF-8! Видите в чем разница? Цитата:
|
я понял, вы имеете в виду сделать так:
Код:
;!@Install@!UTF-8! |
Цитата:
да, все верно. Так же, если в файле FileMenuLang.exe находится только один языковый файл, и известна директория установки программы, то лучше это сделать копированием. Во первых, не нужен будет еще один, лишний sfx-архив, а во вторых, вес готового пакета снизится... Пример копирования русской справки при установке 7-Zip в нужную папку: Код:
RunProgram="hidcon:xCopy \"%%T\\7-zip.chm\" \"%SystemDrive%\Program Files\7-Zip\" /s /e /i /y" |
Wu-Tang,
Для наглядности, вот полный файл конфигурации для 7-Zip себе делал... Смотрите, анализируйте, может быть что-то пригодится. Скрытый текст
Код:
;!@Install@!UTF-8! |
Цитата:
Код:
RunProgram="7z%%P.msi /qn" |
Цитата:
Уж очень VirusTotal хорошо показывает... Что для SFX-архивов большая редкость. |
Цитата:
Можно менять конфиг без перепаковки. Код:
Delete="%Temp%\\%Vers%" В помощи к SFX модулям не встречается. |
Цитата:
Извините, по ошибке написал не так. Вот так будет правильней: Код:
Delete="%%T" |
Vanadiy777,
Цитата:
Цитата:
|
Цитата:
по любому, как лучше и удобней будет, то это решать только Вам... Цитата:
Для примера Вам написал просто. |
Vanadiy777,
для примера это хорошо, я тоже по примерам учился. правда есть конфиги и ногу сломишь... ps мне кажется вообще runprogramm достаточно в большинстве случаев. |
Цитата:
возможно, я особо сильно не вникал. Предпочитаю делать свои репаки в Inno Setup... |
Vanadiy777,
я как-то inno плюнул осваивать, скрипты эти... |
Цитата:
ну, тут, кому как удобнее... :wink: |
Вопрос снят:
разобрался |
Подскажите, пожалуйста. Не смог найти.
А есть ли у модифицированных модулей возможность получить сценарий, как с применением стандартного модуля 7zCon.sfx: - запущенный процесс не отпускает консоль до завершения выполнения всех команд - в консоль выводится результат выполнения команд - процесс завершается с тем же кодом возврата (кодом ошибки), что и запускаемая из конфига команда (наверное, последняя) ??? |
привет
подскажите, как добавить в мой конфиг строки, чтобы применить твики х86 и х64, появилась необходимость в х86.reg и х64.reg Код:
;!@Install@!UTF-8! |
Цитата:
Код:
RunProgram="%%P:regedit /s tweaks_%%P.reg" |
sov44,
а waitall не нужно? |
Цитата:
|
sov44,
хорошо, понял. а файлы обязательно обзывать с _ или можно слитно, hklmX86.reg |
Цитата:
|
Доброго времени уважаемые,такой вопрос,в этом файле конфигурации не срабатывает батник после распаковки,что не так,подскажите.Спасибо.
"Не удается найти указанный файл" Код:
;!@Install@!UTF-8! |
Scorpkoms,
Код:
SetEnvironment="PathInst=\"D:\\Program Files\\%Name%\"" |
Цитата:
Код:
RunProgram="%%P:hidcon:\"%Name%\\Regidit.bat\"" |
sov44
у него рабочая директория "D:\Program Files\TotalCmd 10.52" В RunProgram %Name% не требуется. Иначе получится так "D:\Program Files\TotalCmd 10.52\TotalCmd 10.52" |
Scorpkoms,
слеш где потеряли? Цитата:
Цитата:
Цитата:
Цитата:
|
nibble74, не зная структуры расположения файлов и папок в sfx, места расположения батника и его дальнейшей судьбы, вряд-ли удастся помочь с написанием файла конфигурации.
|
|
Scorpkoms, Ну тогда все правильно вам написали, выше я дополнил свой пост, посмотрите.
|
Цитата:
|
Цитата:
Дальнейшая судьба и тайна будет открыта после комментария автора sfx архива :help: я лишь исправил ошибки. |
Scorpkoms
Код:
;!@Install@!UTF-8! |
SOFFON, благодарю,попробую вечером.
|
SOFFON,спасибо Вам,все сработало!
|
Как известно мы имеем следующие автоматические ключи:
a-z, A-Z, 0-9 и в итоге в нашем арсенале мы имеем 62 команды без RunProgram= Ни-кто не сталкивался с задачей когда вам необходимо больше ключей для установки чего либо? |
Время: 12:46. |
Время: 12:46.
© OSzone.net 2001-