Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Автоматическая установка приложений (http://forum.oszone.net/forumdisplay.php?f=61)
-   -   .: Файлы конфигурации 7z SFX. Помощь и советы :. (http://forum.oszone.net/showthread.php?t=230888)

gora 21-03-2012 09:16 1883755

.: Файлы конфигурации 7z SFX. Помощь и советы :.
 
Эта тема создается специально для вопросов по 7z SFX архивам на базе модифицированных модулей от Oleg_Sch. Перед тем, как задать вопрос, обратите внимание, на перечисленные ниже ссылки.

Домашняя страница модулей: http://7zsfx.info (зеркала в теме по ссылке ниже)
Обсуждение модулей: http://forum.oszone.net/showthread.php?t=51547

В теме предполагается обсуждать вопросы написания файлов конфигурации для 7z SFX архивов, делится своими наработками, нестандартными и оригинальными решениями, расширяющими возможности использования модулей и т.п..

Лучшие варианты файлов конфигурации и оригинальные решения могут быть включены в справку по модифицированным модулям.

Полезные ссылки:
Список переменных, которые могут быть использованы в файле конфигурации модифицированного модуля.

FAQ:
  1. Вопрос: Как можно удалить необходимую папку ДО установки? Насколько я читал RunProgram, ExecuteFile, AutoInstall выполняются после распаковки.
    Ответ: Установка и распаковка это разные этапы работы модуля. До распаковки ни каких действий произвести нельзя, модуль этого не предусматривает. А после распаковки начинается установка и первыми командами установки можно удалить "любую" папку (конечно, если ее вообще можно удалить).
    Если Вы хотите удалить папку в которую нужно произвести установку программы, то распаковывайте SFX во временную папку, затем удаляйте, ту, которую хотите удалить, а затем производите установку/копирование/перемещение из временной папки, туда, куда сочтете нужным. Временная папка автоматически удалится после завершения работы SFX.


  2. Вопрос: Возможно ли 2 варианта распаковки? Например: запаковано 4 файла: 1.txt, 2.txt, 3.txt и 4.txt. В первом случае распакованы будут все файлы, а во-втором только 3.txt и 4.txt. Вариант распаковки выбирает пользователь?
    Ответ: Нет, такое невозможно. Всегда распаковываются все файлы из архива. После распаковки можно скопировать/переместить только нужные файлы в нужное место, или просто удалить ненужные.

alert30 21-03-2012 09:38 1883766

Раз эта тема вышла, тогда вопрос:

Есть ключ реестра, чтоб после импорта реестр, сам reg-файл удалился? (выделено жирным) Вот мой отрывок файла конфигурации:
читать дальше »
Код:

;!@Install@!UTF-8!
InstallPath        = "%ProgramFiles%\\Test"

SetEnvironment        = "INF_File=INF.inf"
SetEnvironment        = "INF_Sect=DefaultInstall"


RunProgram        = "fm10:\"%SystemRoot%\\System32\\RunDLL32.exe\" advpack.dll,LaunchINFSectionEx %%T\\%INF_File%,%INF_Sect%,,4,N"
RunProgram        = "hidcon:\"%ComSpec%\" /c Move /y \"%%T\\%INF_File%\" \"%SystemRoot%\\Inf\""
RunProgram        = "REGEDIT /S reg.reg"

GUIFlags        = "4+8+16+32+64+256+4096"
MiscFlags        = "4"
GUIMode                = "1"
OverwriteMode        = "0"

;!@InstallEnd@!


gora 21-03-2012 09:53 1883776

Цитата:

Цитата alert30
чтоб после импорта реестр, сам reg-файл удалился? »

Добавьте в конец файла конфигурации команду:
Код:

Delete=%%T\\reg.reg"
И еще у Вас нет сигнатуры конца файла
Код:

;!@InstallEnd@!

KML 23-03-2012 19:41 1885453

Не работает переменная %SYSTEMROOT%

Код:

;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
Directory="%SYSTEMROOT%\\System32\\"
RunProgram="msiexec /i SomeSoftware.msi"
;!@InstallEnd@!

Код:

C:\>echo %SYSTEMROOT%
C:\Windows


Amigos 23-03-2012 20:18 1885470

KML, не пробовали использовать внутренние переменные?
или вместо %SYSTEMROOT% юзать %windir% ?
или убрать последний ненужный сплеш в имени папки?

например вот так всё стабильно работает:
Цитата:

;!@Install@!UTF-8!
Title="Установка пакета обоев для рабочего стола"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
InstallPath="%PathInst%"
RunProgram="desk.cpl ,,2"
SetEnvironment="PathInst=%windir%\\web\\Wallpaper"
GUIMode="1"
GUIFlags="6206"
; This SFX archive was created using "Button for creation and work with 7z SFX archives in Total Commander v.1.17.2" 16.02.2011 10-16. The last version of "Button" you can find on http://buttontc.7zsfx.info
;!@InstallEnd@!

gora 23-03-2012 20:52 1885485

Цитата:

Цитата KML
Не работает переменная %SYSTEMROOT% »

Т.к., месторасположение файла SomeSoftware.msi не указано, то попробую предположить, что он расположен в корне архива.
Не запускается он по причине использования параметра Directory, который устанавливает путь к файлам в команде RunProgram. По этому пути модуль обнаруживает msiexec, но вот файла SomeSoftware.msi там нет, ибо он распакован во временную директорию модуля.
Модулю не требуется команда msiexec /i для запуска .msi файлов и ее можно упустить в строке запуска.
Параметр Directory тоже не нужен, ибо файл SomeSoftware.msi находится в текущей папке модуля и весь файл конфигурации сводится к:
Код:

;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
RunProgram="SomeSoftware.msi"
;!@InstallEnd@!


KML 24-03-2012 13:45 1885776

Цитата:

Цитата Amigos
убрать последний ненужный сплеш в имени папки? »

Нет, без него нельзя, т.к. это путь к msiexec

Попробовал так, не пашет:
Код:

;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
InstallPath="%PathInst%"
SetEnvironment="PathInst=%windir%\\temp"
RunProgram="msiexec /i %PathInst%\\SomeSoftware.msi"
;!@InstallEnd@!

Такое впечатление, что 7z не находит msiexec

Цитата:

Цитата gora
Параметр Directory тоже не нужен, ибо файл SomeSoftware.msi находится в текущей папке модуля и весь файл конфигурации сводится к: »

Код:

;!@Install@!UTF-8!
Title="Some Software"
BeginPrompt="Do you want to install the Some Software?"
RunProgram="SomeSoftware.msi"
;!@InstallEnd@!


К сожалению 7z с вами не согласен и выдаёт вот такое сообщение
Код:

%1 is not a valid Win32 application.

gora 24-03-2012 14:03 1885783

Цитата:

Цитата KML
7z с вами не согласен »

1 Приведите скриншот
2 Подозреваю, что Вы используете оригинальный модуль архиватора, а не модифицированный.
Приведите строку Авторское право созданного SFX
3 Сообщите также:
- где находится файл SomeSoftware.msi
- систему и ее разрядность
- название модуля, его версию и сборку, его разрядность
- файл SomeSoftware.msi не является х64 приложением?

KML 25-03-2012 14:28 1886334

Вложений: 1
Цитата:

Цитата gora
Приведите строку Авторское право созданного SFX »

Copyright (c) 1999-2010 Igor Pavlov


Цитата:

Цитата gora
где находится файл SomeSoftware.msi »

Вот батник, которым создаётся .exe
Код:

del SomeSoftware.7z
del SomeSoftware.exe
..\7zr a SomeSoftware.7z .\SomeSoftware.msi -m0=BCJ2 -m1=LZMA:d25:fb255 -m2=LZMA:d19 -m3=LZMA:d19 -mb0:1 -mb0s1:2 -mb0s2:3 -mx
copy /b ..\7zSD.sfx + configuration.conf + SomeSoftware.7z SomeSoftware.exe
del SomeSoftware.7z

Цитата:

Цитата gora
систему и ее разрядность »

Windows 7 x64

Цитата:

Цитата gora
название модуля, его версию и сборку, его разрядность »

7z920_extra, без разницы какой набор .dll использовать, результат всегда одинаковый.

Цитата:

Цитата gora
файл SomeSoftware.msi не является х64 приложением? »

нет

gora 25-03-2012 15:50 1886373

Цитата:

Цитата KML
Copyright (c) 1999-2010 Igor Pavlov »

Значит я был прав
Цитата:

Цитата gora
Вы используете оригинальный модуль архиватора, а не модифицированный »

Не читаете шапку, где написано
Цитата:

Цитата gora
для вопросов по 7z SFX архивам на базе модифицированных модулей »

Меняйте модуль на модифицированный, все заработает.

KML 26-03-2012 17:55 1887198

Да, с модифициованным работает нормально, единственное "но" используются русские ресурсы по умолчанию (диалоговые сообщения, заголовки окон и т.п.)
Всё ОК, если запускать с ключиком -sfxlang:1033, но хотелось бы чтобы это происходило автоматически...

gora 26-03-2012 18:00 1887203

Цитата:

Цитата KML
хотелось бы чтобы это происходило автоматически »

На английской OS будут использоваться английские "ресурсы" автоматически.

Oleg_Sch 27-03-2012 01:50 1887428

Цитата:

Цитата gora
На английской OS будут использоваться английские "ресурсы" автоматически. »

Уточню. На любой "не русской локали". Использование русских ресурсов определяется "языком по умолчанию" для текущего пользователя

JohnnyD 06-04-2012 16:03 1894715

По какой причине может не удаляться временная папка и ее содержимое после установки?
Конфиг:
Код:

;!@Install@!UTF-8!
RunProgram="programm.exe /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!


gora 06-04-2012 16:10 1894721

Цитата:

Цитата JohnnyD
По какой причине может не удаляться временная папка и ее содержимое после установки? »

По причине "дочерних" процессов запущенных основным процессом programm.exe, который может сам закрыться после установки.
Можете попробовать использовать префикс waitall.

JohnnyD 06-04-2012 17:38 1894764

gora, благодарю великодушно - помогло.

JohnnyD 07-04-2012 22:03 1895342

Мда, рано обрадовался - перестало работать. Стоит добавить waitall: перед именем файла и выдается ошибка "Не найден указанный файл".

Код:

;!@Install@!UTF-8!
RunProgram="waitall:programm.exe /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!


gora 08-04-2012 12:32 1895559

Цитата:

Цитата JohnnyD
перестало работать »

Видимо проблема в Вашем programm.exe, т.к., воспроизвести ошибку не смог.
Для проверки сделал конфиг:
Код:

;!@Install@!UTF-8!
RunProgram="waitall:test_waitall.bat /VERYSILENT /LOADINF=\"progr.ini\""
GUIMode="2"
;!@InstallEnd@!

Содержание файла test_waitall.bat, который лежит в корне архива:
Код:

@Echo Off
Echo %*
Pause

Ни каких ошибок не обнаружил.

JohnnyD 08-04-2012 13:45 1895612

gora, а какие у вас версии модуля и кнопки? Кнопка у меня последння, но проблема присутствует. С батником тоже пробовал - то же самое. Может эта фича под ХР не работает? :(

P.S. Мне можно без "Вашем" - я русский. :)

Да, с вашим тестовым батником и конфигом нет проблем. Буду разбираться.
Еще раз спасибо.

Scorpkoms 12-04-2012 09:01 1898080

Доброго времени уважаемые!
Есть ли разница в команде для исполнения reg файла в х64 и х86 редакциях?
Код:

regedit /s
Спасибо.

gora 12-04-2012 09:20 1898093

Цитата:

Цитата Scorpkoms
Есть ли разница в команде для исполнения reg файла в х64 и х86 редакциях? »

Не понятно о каких "редакциях" идет речь!? :dont-know
- о разных модулях (x86\x64)
- о разных префиксах (x86\x64)
- о разных утилитах regedit (x86\x64), присутствующих в x64 системах
Хотелось бы увидеть и саму "команду" в синтаксисе файла конфигурации, т.к., в ветке речь идет о них, и от правильности этой записи тоже многое зависит.

Ответ: Да, разница есть. (а может быть и нет, в зависимости от многих факторов о которых Вы умолчали)

u095 19-04-2012 14:49 1902523

здравствуйте) Помогите пож-ста отредактировать строчку создания ярлыка

Код:

SetEnvironment="Name=USDownloader"
SetEnvironment="ProgDir=%Name%"
SetEnvironment="PF=%ProgramFiles%"
SetEnvironment="INF=Uninstall.inf"
.....
Shortcut="P,{rundll32 advpack,LaunchINFSection %PF%\\%ProgDir%\\%INF%,Uninstall,0},{},{%Name%},{},{Удалить %Name%},{%WinDir%},{%PF%\\%ProgDir%\\uico.ico}"

ярлык создаётся, но его содержимое "пустое"


gora 19-04-2012 15:41 1902575

Цитата:

Цитата u095
ярлык создаётся, но его содержимое "пустое" »

В параметре Shortcut для запускаемого файла с путем служит поле src_file_path, а для командной строки к этому файлу служит поле command_line_for_file .
Должно получится такое:
Код:

Shortcut="P,{c:\\Windows\\System32\\rundll32.exe},{advpack,LaunchINFSection \"%PF%\\%ProgDir%\\%INF%\",Uninstall,0},{%Name%},{},{Удалить %Name%},{%WinDir%},{%PF%\\%ProgDir%\\uico.ico}"

МИШАНЧИК 01-05-2012 10:01 1908631

Подскажите пожалуйста.
Нужно чтобы в Windows х86 и х64 файл распаковался в %ProgramFiles%\\Программа.
Если указать: InstallPath="%ProgramFiles%\\Программа"-то в х64 распаковывается в Program Files (x86). А как сделать чтоб и там и там распаковало в Program Files?

gora 01-05-2012 10:31 1908642

Распаковать непосредственно в разные папки не получится. Причины:
- для х86 %ProgramFiles%\\Программа=c:\Program Files\\Программа
- для x64 %ProgramFiles%\\Программа окажется = c:\Program Files (x86)\\Программа, а нужно указать %ProgramW6432%\\Программа=c:\Program Files\\Программа

Но выход есть. Нужно убрать в конфиге параметр InstallPath - это вызовет распаковку во временную папку.

Если распаковываемый набор един для обеих разрядностей, то далее так:
Код:

SetEnvironment="PFx86=%ProgramFiles%\\Программа"
SetEnvironment="PFx64=%ProgramW6432%\\Программа"
...
RunProgram="x64:hidcon:xCopy * \"%PFx64%\\\" /s /e /i /y"
RunProgram="x86:hidcon:xCopy * \"%PFx86%\\\" /s /e /i /y"

Если распаковываемые наборы разные для каждой разрядности, то каждый набор поместить в соответствующую разрядности папку и далее так:
Код:

SetEnvironment="PFx86=%ProgramFiles%\\Программа"
SetEnvironment="PFx64=%ProgramW6432%\\Программа"
...
RunProgram="x64:hidcon:xCopy x64\\* \"%PFx64%\\\" /s /e /i /y"
RunProgram="x86:hidcon:xCopy x86\\* \"%PFx86%\\\" /s /e /i /y"


bugmenotagain 01-05-2012 11:14 1908655

возможно ли 2 варианта распаковки?

например: запаковано 4 файла: 1.txt, 2.txt, 3.txt и 4.txt
в первом случае распакованы будут все файлы
а во-втором только 3.txt и 4.txt

вариант распаковки выбирает пользователь

gora 01-05-2012 12:00 1908660

Цитата:

Цитата bugmenotagain
возможно ли 2 варианта распаковки? »

Нет, такое невозможно. Можно использовать прием с временной папкой и последующим копированием нужного, описанный выше.

МИШАНЧИК 01-05-2012 13:38 1908689

gora, подскажите пожалуйста.
А если нужно архив распаковать допустим в d:\GAMES, затем оттуда запустить setup.exe и потом оттуда же скопировать файл.ехе в ProgramFiles\Программа для Windows х86 и х64? Не в Program Files (x86).

gora 01-05-2012 13:51 1908700

Цитата:

Цитата МИШАНЧИК
- архив распаковать допустим в d:\GAMES
- оттуда запустить setup.exe
- оттуда же скопировать файл.ехе в ProgramFiles\Программа для Windows х86 и х64? Не в Program Files (x86). »

Код:

SetEnvironment="PFx86=%ProgramFiles%\\Программа"
SetEnvironment="PFx64=%ProgramW6432%\\Программа"
; архив распаковать d:\GAMES
InstallPath="d:\\GAMES"
; запустить setup.exe
RunProgram="setup.exe"
; скопировать файл.ехе в ProgramFiles\Программа для Windows х86 и х64
RunProgram="x64:hidcon:cmd /c Copy файл.ехе \"%PFx64%\\файл.ехе\" /y"
RunProgram="x86:hidcon:cmd /c Copy файл.ехе \"%PFx86%\\файл.ехе\" /y"


МИШАНЧИК 01-05-2012 13:59 1908705

gora, большое Вам спасибо.

МИШАНЧИК 01-05-2012 14:43 1908718

gora, прошу прощения, но у меня почему-то не копирует. Архив распаковывается, setup.exe устанавливается(в папку ProgramFiles\Программа), а файл.ехе из архива в ProgramFiles\Программа не копируется.

specialist 01-05-2012 14:53 1908724

gora, а тут не прокатит %7zSfxFolder38% или, скажем "%systemdrive%\program files" ?

gora 01-05-2012 15:05 1908729

МИШАНЧИК, приведите конфиг и структуру архива (что-бы видеть где лежит файл.ехе). Существует ли папка %ProgramFiles%\Программа на момент копирования файла? Команда Copy не создает папку назначения, если она не существует в отличии от команды xCopy
Цитата:

Цитата specialist
а тут не прокатит %7zSfxFolder38%»

На х86 %7zSfxFolder38%=C:\Program Files, а на x64 7zSfxFolder38=C:\Program Files (x86)
Цитата:

Цитата specialist
или, скажем "%systemdrive%\program files" ? »

Можно и так, только есть любители менять не только имя системного диска, но и имена системных папок.

МИШАНЧИК 01-05-2012 15:20 1908735

gora,
Цитата:

Цитата gora
приведите конфиг и структуру архива »

В архиве находятся 2 файла: setup.exe и setup_rus.ехе. После распаковки из архива запускается инсталятор setup.exe который устанавливается в %ProgramFiles%\Программа, после чего файл setup_rus.ехе из архива должен скопироваться в %ProgramFiles%\Программа(т.е. папка Программа уже получается существует)
Код:

SetEnvironment="PFx86=%ProgramFiles%\\Программа"
SetEnvironment="PFx64=%ProgramW6432%\\Программа"
; архив распаковать %WINDIR%\\Temp\\setup
InstallPath="%WINDIR%\\Temp\\setup"
; запустить setup.exe
RunProgram="setup.exe"
; скопировать файл.ехе в ProgramFiles\Программа для Windows х86 и х64
RunProgram="x64:hidcon:cmd /c Copy setup_rus.ехе \"%PFx64%\\setup_rus.ехе\" /y"
RunProgram="x86:hidcon:cmd /c Copy setup_rus.ехе \"%PFx86%\\setup_rus.ехе\" /y"
Delete="%WINDIR%\\Temp\\setup"
GUIMode="2"


gora 01-05-2012 15:30 1908742

Цитата:

Цитата МИШАНЧИК
после чего файл setup_rus.ехе из архива должен скопироваться в %ProgramFiles%\Программа(т.е. папка Программа уже получается существует) »

Что папка уже существует на момент копирования, это не факт. Сделайте так:
Код:

RunProgram="x86:cmd /k Copy setup_rus.ехе \"%PFx86%\\setup_rus.ехе\" /y"
и посмотрите что напишет в окне консоли.

МИШАНЧИК 01-05-2012 15:44 1908748

Цитата:

Цитата gora
и посмотрите что напишет в окне консоли. »

Пишет: не удаётся найти указанный файл. Но он то есть!

gora 01-05-2012 17:14 1908818

Попробуйте так:
Код:

RunProgram="x86:cmd /k Copy \"%%T\\setup_rus.ехе\" \"%PFx86%\\setup_rus.ехе\" /y"

МИШАНЧИК 02-05-2012 11:03 1909097

gora,
Цитата:

Цитата gora
Попробуйте так: »

не получается, опять пишет:
Цитата:

Цитата МИШАНЧИК
не удаётся найти указанный файл. c:\Windows\Temp\setup»


gora 02-05-2012 11:09 1909099

МИШАНЧИК, залейте Ваш SFX и дайте на него ссылку.

Vadikan 02-05-2012 11:29 1909104

gora, зачем нужна эта тема при наличии Модифицированный SFX модуль 7-Zip'а для установок? В ней все равно обсуждаются вопросы создания SFX и различные параметры модуля.

gora 02-05-2012 11:56 1909120

Цитата:

Цитата Vadikan
зачем нужна эта тема при наличии »

Я постарался это объяснить в шапке.
1 Сейчас вопросы по файлам конфигурации задаются в разных ветках форума и не только в ветке модуля. Уже бывает и не вспомнить в какой из веток отвечал на повторяющийся многократно вопрос. Искать эти ответы по всем веткам затруднительно, а так все будет сосредоточенно в одной ветке.
2 В ветке модуля лучше обсуждать фунционал модулей, баги модулей, запрашивать новые возможности, а обсуждение конкретных файлов конфигурации, иногда очень простых и описанных в справке, там не не устраивать.
3 Править шапку и добавлять в нее FAQ мне здесь можно самому не обращаясь к автору модулей или модераторам. (зачем дергать занятых людей по пустякам).

Если Вы считаете, что она не нужна, то ее всегда можно закрыть (мне меньше забот).

Vadikan 02-05-2012 12:44 1909141

1. Неубедительно.
Цитата:

Цитата gora
Сейчас вопросы по файлам конфигурации задаются в разных ветках форума »

Цитата:

Цитата gora
а так все будет сосредоточенно в одной ветке »

С чего вдруг такое чудо произойдет? Раньше была одна тема по модулю. Теперь еще одну создали, и почему-то верите, что все сразу побегут в нее :) Ах да, вы теперь будете посылать из старой в новую, вместо ответа на месте. Из темы про кнопку тоже будете сюда посылать?

2. Частично согласен, но тогда из старой темы нужно вынести все вопросы по конфигам. Это вы с модераторами не согласовывали, очевидно. Что касается багов, то их может запостить 1-2 человека. Для остальных - "не работает" = "баг".

3. Ничто не мешает вести FAQ в отдельном посте или Wiki, а ссылку дать в шапке.

Короче, в текущем виде я не вижу смысла в этой теме, ибо это дублирование уже существующей темы.

МИШАНЧИК 02-05-2012 13:03 1909151

gora, только что попробовал запустить на физической машине х86(до этого на х86 не пробовал). Всё установилось и скопировалось без проблем. Тут же на виртуальной машине х64 пробую этот же архив-выдаёт: не удаётся найти файл.
Попробовал как Вы писали раньше:
Код:

SetEnvironment="PFx86=%ProgramFiles%\\Программа"
SetEnvironment="PFx64=%ProgramW6432%\\Программа"
RunProgram="setup.exe"
RunProgram="x64:hidcon:xCopy * \"%PFx64%\\\" /s /e /i /y"
RunProgram="x86:hidcon:xCopy * \"%PFx86%\\\" /s /e /i /y"
GUIMode="2"

Так и установилось всё и скопировалось. Правда скопировался и лишний, ненужный setup.exe.

МИШАНЧИК 03-05-2012 07:09 1909604

gora, сделал почти так, как Вы писали тут http://forum.oszone.net/post-1908642-25.html:
в архиве создал папку rus и в неё поместил файл setup_rus.exe:
Код:

SetEnvironment="PFx86=%ProgramFiles%\\Программа"
SetEnvironment="PFx64=%ProgramW6432%\\Программа"
RunProgram="setup.exe"

RunProgram="x64:hidcon:xCopy Rus\\* \"%PFx64%\\\" /s /e /i /y"
RunProgram="x86:hidcon:xCopy Rus\\* \"%PFx86%\\\" /s /e /i /y"

всё работает и копируется. Правда не знаю насколько это правильно. И ещё не пойму куда в данном случае распаковывается архив. Во временной папке его нет.
Большое Вам спасибо за помощь.

bugmenotagain 05-05-2012 17:00 1911067

а что значат в этой строке
Код:

RunProgram="waitall:test_waitall.bat /VERYSILENT /LOADINF=\"progr.ini\""
эти параметры?
Код:

/VERYSILENT /LOADINF=\"progr.ini\""

alert30 05-05-2012 17:40 1911086

bugmenotagain, параметры похожи на Inno Setup.

gora 05-05-2012 17:54 1911091

Цитата:

Цитата bugmenotagain
а что значат в этой строке

эти параметры? »

C позиции файла конфигурации - ни чего не значат. Все эти параметры будут просто переданы в test_waitall.bat, а что там с ними будет сделано определяется содержанием батника.

По поводу префикса waitall. Воздержитесь пока от его использования, т.к., в нем обнаружен баг и Олег обещал поправить это в ближайшее время.

МИШАНЧИК, ответ Вам отложен до исправления бага, чтобы можно было объяснить Вашу проблему с примерами ее решения.

firsthar 05-05-2012 19:01 1911128

как передать кириллицу через командную строку?
отправляю...
Код:

test.exe -SetEnvironment="var1=привет"
а на выходе крякозябры.

----------------------

вопрос снят, разобрался.
нужно написать cmd файл в utf-8, затем сменить кодировку на ansi и сохранить.
т.е. что бы получить...
Код:

test.exe -SetEnvironment="var1=привет"
нужно запустить...
Код:

test.exe -SetEnvironment="var1=привет"
проще способа не существует, я правильно понимаю? :lamer:

gora 05-05-2012 19:47 1911144

Цитата:

Цитата firsthar
как передать кириллицу через командную строку? »

1 В какой кодировке написана Ваша ком. строка?
2 Приведите файл конфигурации, дабы понять, где используется переменная var1. В текстах модуля или сторонним ПО, например, cmd и почему у Вас
Цитата:

Цитата firsthar
на выходе крякозябры »


firsthar 05-05-2012 20:43 1911172

gora,
для вывода текста через BeginPrompt.
т.е. в зависимости от того какой батник запустишь, выводится разный текст.
текст задаётся по типу -SetEnvironment="var1=привет" при запуске.

-------------
ещё есть мысль запускать с -SetEnvironment="var1=%p1%"
а в самом коде...
Код:

SetEnvironment="p1=привет"
SetEnvironment="p2=пока"
SetEnvironment="var1=%p2%"
BeginPrompt="%var1%"

но батник не пропускает значёк "%".
думаю дальше.

gora 05-05-2012 21:23 1911183

Цитата:

Цитата firsthar
для вывода текста через BeginPrompt.
т.е. в зависимости от того какой батник запустишь, выводится разный текст.
текст задаётся по типу -SetEnvironment="var1=привет" при запуске. »

Напишите строку
Код:

test.exe -SetEnvironment="var1=привет"
в батнике в кодировке DOS (866) и текст будет нормально отображаться в диалогах модуля.

Цитата:

Цитата firsthar
но батник не пропускает значёк "%". »

Батник нормально передает знак процента, для этого его нужно удвоить:
Код:

test.exe -SetEnvironment="var1=%%p1%%"

firsthar 05-05-2012 23:58 1911290

практически закончил свой первый мини проект. ничего если я сюда кину вам листинг на проверку\оптимизцию?

МИШАНЧИК 06-05-2012 03:03 1911321

gora, подскажите пожалуйста, почему когда у меня файл конфигурации больше 9Кб-то архив создать невозможно(я в справке читал что должен быть меньше 9Кб), но в тоже время есть архивы(не мои) в которых файл конфигурации значительно больше 9Кб(много значений автоинстала+ярлыки). Как это достигается?

bugmenotagain 06-05-2012 08:34 1911350

Цитата:

Цитата gora
Нет, такое невозможно. Можно использовать прием с временной папкой и последующим копированием нужного, описанный выше. »

С примером все понятно, но проблема такая, что "распаковываемый набор един для обеих разрядностей", НО в 1 случае нужно распаковать, например, 50% набора, а во втором 100%. Вариант с
Цитата:

Цитата gora
каждый набор поместить в соответствующую разрядности папку »

не подходит т.к дублирование 50% содержимого SFX архива увеличит его на 50% или даже больше, что не совсем логично и оптимально. Возможна ли комбинация из 2х предложенных случаев?
спасибо

gora, и еще вопросец, в конфиге убрал InstallPath и добавил это
Код:

SetEnvironment="PFx86=%ProgramFiles%\\prog"
SetEnvironment="PFx64=%ProgramW6432%\\prog"
RunProgram="x64:hidcon:xCopy * \"%PFx64%\\\" /s /e /i /y"
RunProgram="x86:hidcon:xCopy * \"%PFx86%\\\" /s /e /i /y"

на 32 системе в папку "prog" распаковалась половина содержимого, в чем может быть дело?
и как вообще можно для 32 и 64 систем предлагать по умолчанию такие пути распаковки?
%ProgramFiles%\\Программа=c:\Program Files\\Программа
%ProgramFiles%\\Программа= c:\Program Files (x86)\\Программа
Очень многго непоняток по этому вопросу, а в http://7zsfx.info/ru/ нет достаточной инфы :(

gora 10-05-2012 08:42 1913268

Цитата:

Цитата МИШАНЧИК
почему когда у меня файл конфигурации больше 9Кб-то архив создать невозможно(я в справке читал что должен быть меньше 9Кб), »

Ограничений на размер файла конфигурации нет, Вы что-то путаете. В старых версиях Кнопки был настраиваемый параметр максимального размера конфига и он по-умолчанию действительно стоял 9КБ, но он мог быть изменен пользователем, да и было это уже давно. В новых версиях кнопки этого параметра вообще нет.
Цитата:

Цитата bugmenotagain
дублирование 50% содержимого SFX архива увеличит его на 50% или даже больше, что не совсем логично и оптимально. »

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

Цитата bugmenotagain
проблема такая, что "распаковываемый набор един для обеих разрядностей", НО в 1 случае нужно распаковать, например, 50% набора, а во втором 100% »

Сделайте две папки. В папку 1 положите все файлы, которые используются и на х86, и на х64 системах, а в папку 2 положите только те файлы, которые будут использоваться исключительно на х64 системе. Дубликатов не будет, а далее так:
Код:

SetEnvironment="PFx86=%ProgramFiles%\\prog"
SetEnvironment="PFx64=%ProgramW6432%\\prog"
RunProgram="x64:hidcon:xCopy 1\\* \"%PFx64%\\\" /s /e /i /y"
RunProgram="x64:hidcon:xCopy 2\\* \"%PFx64%\\\" /s /e /i /y"
RunProgram="x86:hidcon:xCopy 1\\* \"%PFx86%\\\" /s /e /i /y"

Цитата:

Цитата bugmenotagain
на 32 системе в папку "prog" распаковалась половина содержимого, в чем может быть дело? »

Вариантов много, гадать не умею.
Цитата:

Цитата bugmenotagain
как вообще можно для 32 и 64 систем предлагать по умолчанию такие пути распаковки?
%ProgramFiles%\\Программа=c:\Program Files\\Программа
%ProgramFiles%\\Программа= c:\Program Files (x86)\\Программа »

Вопрос не понятен, попробуйте сформулировать его еще раз более подробно.

bugmenotagain 10-05-2012 11:23 1913330

Цитата:

Цитата gora
Сделайте две папки. В папку 1 положите все файлы, которые используются и на х86, и на х64 системах, а в папку 2 положите только те файлы, которые будут использоваться исключительно на х64 системе. Дубликатов не будет, а далее так: »

сделал, в результате появились вопросы:
InstallPath закомментировать? если да то путь не будет указан по умолчанию, хотя в случае нажатия на ОК распаковка будет произведена в папку по умолчанию, но откуда пользователь узнает место распаковки?

И еще вопросик. В этой строке
Код:

RunProgram="x86:hidcon:xCopy 1\\* \"%PFx86%\\\" /s /e /i /y"
заместо x86 можно вставить префикс? если да то как через батник запускать ехе с префиксом?
start prog.exe "RunProgram1" или как? я вот тут http://7zsfx.info/ru/ читал не понятно
Код:

Команда для исполнения (множественная). Параметр оригинального SFX модуля архиватора 7-Zip.

Содержит имя исполняемого файла. Дополнительно может содержать: путь к исполняемому файлу (допустимы переменные, обрабатываемые модулем, а также относительные пути), префиксы и ключи для исполняемого файла.
Например:

RunProgram="notepad.exe"
RunProgram="C:\\Windows\\system32\\notepad.exe"
RunProgram="fm0:nowait:7z_RU.chm"
RunProgram="\"%%T\\Reader7Rus.msi\" /qn"
RunProgram="hidcon:fm0:\"%%S\\install.cmd\" /Q"

В двух последних случаях, при наличии ключей для исполняемого файла, путь и имя исполняемой программы заключаются в дополнительные кавычки. Префиксы и ключи для исполняемого файла при этом в дополнительные кавычки не включаются.

мне допустим нужны 2 варианта распаковки, вот и как через префикс их задать? тут написано про "путь и имя исполняемой программы заключаются в дополнительные кавычки" и что за программа "Q"? не могу понять. хоть бы пример давали там, всетаки для простых людей писали, а те кто шарят они и без этих инструкция разберутся.

bugmenotagain 10-05-2012 14:43 1913439

gora, написал такую строку
AutoInstall2="hidcon:xCopy 2\\* \"%PFx86%\\\" /s /e /i /y"
теперь при запуске ехе с ключом -ai2 выполняется данное действие, но кроме этого так же выполняется распаковка всего архива. как не выполнять последнее при запуске с ключом -ai2 не могу додуматься :(

sov44 16-05-2012 15:11 1917038

Подскажите, где ошибка в текстовом файле 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\""
RunProgram="hidcon:Reg Add \"HKLM\\SOFTWARE\\Classes\\CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\MagicLogon\" /ve /t REG_SZ /d "Поменять обои" /f \
RunProgram="hidcon:Reg Add \"HKLM\\SOFTWARE\\Classes\\CLSID\\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\\shell\\MagicLogon\\command\" /ve /t REG_SZ /d \"\\\"%ProgramFiles%\\MagicLogon\\hidcon.exe\\\" \\\"%ProgramFiles%\\MagicLogon\ML.cmd\\\"" /f \

как перевести bat в текстовый файл 7z sfx?
Код:

Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MagicLogon" /v "comments" /t REG_SZ /d "Смена фонов рабочего стола" /f
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MagicLogon" /v "DisplayName" /t REG_SZ /d "MagicLogon" /f
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MagicLogon" /v "DisplayVersion" /t REG_SZ /d "v1.0" /f
Reg Add "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\MagicLogon" /v "Uninstallstring" /t REG_SZ /d "c:\Program Files\MagicLogon\Uninstall.cmd" /f


gora 16-05-2012 15:40 1917047

Цитата:

Цитата sov44
где ошибка »

C точки зрения синтаксиса конфига строки:
Код:

... REG_SZ /d "Поменять обои" /f \
... REG_SZ /d \"\\\"%ProgramFiles%\\MagicLogon\\hidcon.exe\\\" \\\"%ProgramFiles%\\MagicLogon\ML.cmd\\\"" /f \

должны кончаться так:
Код:

... REG_SZ /d \"Поменять обои\" /f"
... REG_SZ /d \"\\\"%ProgramFiles%\\MagicLogon\\hidcon.exe\\\" \\\"%ProgramFiles%\\MagicLogon\\ML.cmd\\\"\" /f"

Про правильность конвертирования самих ключей ни чего не скажу, т.к., нужно видеть исходный reg файл

Цитата:

Цитата sov44
как перевести bat в текстовый файл 7z sfx? »

Нужно конвертировать исходный reg файл, а не батник. Это можно сделать, например, SetTools

bugmenotagain 17-05-2012 16:22 1917739

gora, а по моему случаю можете что-либо сказать?

gora 17-05-2012 19:30 1917842

Цитата:

Цитата bugmenotagain
а по моему случаю можете что-либо сказать? »

Случай тяжелый.
Вы дважды задаете вопрос о частичной распаковке, хотя я уже в первый раз Вам ответил, что это невозможно. Я занес это в FAQ в шапке, больше на него отвечать не буду.
Цитата:

Цитата bugmenotagain
заместо x86 можно вставить префикс? если да то как через батник запускать ехе с префиксом? »

По остальным Вашим вопросам я вижу, что Вы не изучали справку, что является обязательным. Вы даже не понимаете, что такое префикс, а в справке этому посвящен целый раздел.
Учите мат. часть.

gora 17-05-2012 20:21 1917863

Цитата:

Цитата МИШАНЧИК
всё работает и копируется. Правда не знаю насколько это правильно. »

Как обещал возвращаюсь к Вашей проблеме.
Код:

SetEnvironment="PFx86=%ProgramFiles%\\Программа"
SetEnvironment="PFx64=%ProgramW6432%\\Программа"
RunProgram="setup.exe"
RunProgram="x64:hidcon:xCopy * \"%PFx64%\\\" /s /e /i /y"
RunProgram="x86:hidcon:xCopy * \"%PFx86%\\\" /s /e /i /y"
GUIMode="2"

То что у Вас не срабатывает Copy, но срабатывает xCopy наводит на мысль, что во время запуска этой команды папки назначения еще нет.
Объяснением этому может быть наличие дочерних процессов в Вашем setup.exe.
Модуль выполняет все строки последовательно. После запуска строки RunProgram="setup.exe" модуль ждет завершения процесса setup.exe и только после этого переходит к выполнению следующей строки. Но если процесс setup.exe порождает дочерний процесс (который продолжает производить некоторые операции, очевидно, и создание папки программы), а сам закрывается, то выполнение следующей строки конфига фактически начнется раньше завершения дочерних процессов (создания папки программы).

Для лучшего понимания я предлагаю Вам сделать SFX из следующего конфига (модуль должен быть 1.5 beta (сборка 2478) и выше):
Код:

;!@Install@!UTF-8!
BeginPrompt="        Проверка работы префикса 'waitall'

• Нажмите 'OK', будет произведен запуск Блокнота без 'waitall'

• Нажмите 'OK', удерживая [Shift], будет произведен запуск
  Блокнота с использованием префикса 'waitall'"
RunProgram="hidcon:cmd /c Echo Start \"\" notepad.exe >test.bat"
RunProgram="hidcon:test.bat"

AutoInstall="hidcon:cmd /c Echo Start \"\" notepad.exe >test.bat"
AutoInstall="hidcon:waitall:test.bat"
GUIMode="2"
FinishMessage="Модуль завершил работу"
;!@InstallEnd@!

Здесь используется два варианта запуска батника который в свою очередь запускает Блокнот.
При варианте запуска 'OK', Вы увидите открытие Блокнот и сразу же появится диалог FinishMessage. Почему же FinishMessage появился раньше чем Вы закрыли Блокнот? Потому что основной процесс test.bat запустил дочерний процесс (Блокнот) и после этого test.bat закончил работу. Нечто подобное происходит и в Вашем случае.
Теперь запустите вариант 'OK', удерживая Shift. Диалог FinishMessage появится только после того, как Вы закроете Блокнот, т.е., завершится дочерний процесс. Этому способствует префикс waitall (описание в справке), который я использовал во втором варианте.
Резюме: попробуйте запустить Ваш setup.exe с префиксом waitall. В любом случае это будет правильнее, т.к., копирование будет производится после полного завершения работы файла setup.exe.

bugmenotagain 18-05-2012 11:13 1918143

gora, в справке не написано как из ком строки запускать файл с префиксом, вообще по справке много вопросов, если вы думаете что простой человек может разобраться, на задав ни одного вопроса, то ошибаетесь.

жаль что люди знающие хоть что-то не желают поделиться опытом с новичками.

alert30 19-05-2012 17:58 1918823

Возможна такая реализация: распаковка файлов -> финишная табличка "Установка завершена! Сейчас будет перезагружен компьютер!" (на 15 сек.) -> и перезагрузка? Если возможна, то как сделать, чтобы после финишной таблички и затем исчезания (после встренной 15 сек.), компьютер автоматически перезагрузил.

gora 20-05-2012 13:55 1919219

Цитата:

Цитата alert30
распаковка файлов -> финишная табличка "Установка завершена! Сейчас будет перезагружен компьютер!" (на 15 сек.) -> и перезагрузка? »

Код:

;!@Install@!UTF-8!
SetEnvironment="timer=15"
Title="Перезагрузка"
FinishMessage="                      ВНИМАНИЕ !!!

Сейчас будет произведена перезагрузка компьютера."
; Перезагрузка
RunProgram="fm%timer%:forcenowait:hidcon:cmd /c CD /d ..\\&Ping -n %timer% localhost &Shutdown -r -f -t 0"
GUIMode="2"
GUIFlags="1+8+512"
;!@InstallEnd@!


nibble74 24-05-2012 05:41 1921472

gora , а как прописать файл конфигурации чтобы перед распаковкой файлов происходило сканирование реестра?

Мне нужно так,
InstallPath="Вставляемый путь"

В реестре находится информация пути установки одной программы, вобщем нужно чтобы этот путь вставлялся в SFX исталлятор.

Просто на разных компьютерах эта программа может находиться в разных папках и даже на разных HDD.

gora 24-05-2012 05:51 1921474

Цитата:

Цитата nibble74
чтобы перед распаковкой файлов происходило сканирование реестра? »

В шапке FAQ п.1

Valerkan 27-05-2012 00:42 1923173

Цитата:

Цитата gora
FinishMessage=" ВНИМАНИЕ !!! Сейчас будет произведена перезагрузка компьютера." »

А что прописать в файле конфигурации, чтобы вместо перезагрузки было выключение компьютера?

specialist 27-05-2012 00:46 1923175

Valerkan, пуск выполнить (win + r)
Код:

cmd /k Shutdown /?
изучите ключи и поправьте команду под себя

Valerkan 27-05-2012 01:49 1923199

Цитата:

Цитата specialist
cmd /k Shutdown /?
изучите ключи и поправьте команду под себя »

specialist, заменил ключ
Код:

Shutdown -s -f -t 0
компьютер теперь выключается.

sov44 28-05-2012 16:29 1923985

Подскажите, где ошибка в строке?
Код:

BeginPrompt="Сейчас будет установлен %Name% обновлённый по %Vers%"\n Возможные варианты установки:\n \n 1.  Запуск с ключом '-ai1' - полная установка \n 2.  запуск с ключом '-ai2' - установка только обновлений\n \n Использовать вариант №1 ?"
сам код (может ещё есть ошибки?)
читать дальше »

Код:

;!@Install@!UTF-8!
SetEnvironment="Name=Microsoft Offise 2010 SP1"
SetEnvironment="Vers=12.05.2012"
Title="Установка %Name%"
BeginPrompt="Сейчас будет установлен %Name% обновлённый по %Vers%"\n Возможные варианты установки:\n \n 1.  Запуск с ключом '-ai1' - полная установка \n 2.  запуск с ключом '-ai2' - установка только обновлений\n \n Использовать вариант №1 ?"
FinishMessage="%Name%%Vers% установлен!"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
RunProgram="hidcon:cmd /c msksm.cmd"
AutoInstall1="hidcon:cmd /c msksm.cmd"
AutoInstall2="hidcon:cmd /c Update_office2010.cmd"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
;!@InstallEnd@!


alert30 28-05-2012 17:01 1924011

sov44, а в чем ошибка?

sov44 28-05-2012 17:27 1924029

alert30, пишет, что ошибка в строке 5

alert30 28-05-2012 17:35 1924036

sov44, выделил подчеркнутым, лишняя кавычка.
Код:

Сейчас будет установлен %Name% обновлённый по %Vers%"

bugmenotagain 11-06-2012 08:03 1932114

Подскажите, при использовании ключа -ai2 возможно ли добиться того чтобы появилось окошко выбора директории в которую будут распакованы файлы? вот текущая строка
AutoInstall2="hidcon:cmd /c xcopy folder \"%Var1%\" /s /e /i /y"
она не дает выбора, а распаковывает строго в 1 папку.

Вообще интересует возможность выбора папки распаковки если sfx архив запущен с префиксом -ai2 или любым другим.
спасибо

timon45 23-06-2012 11:54 1939220

Можно ли реализовать установку ярлыка программы на панель задач, желательно сделать так чтобы данная команда была выполнена только на Win7?
читал что это можно реализовать через vbs скрипт, но без полного примера до 7zip SFX мне не дано понять.

вот http://forum.oszone.net/thread-197757.html#
нашел это но не совсем понимаю как его прикрутить к 7zip SFX

alert30 23-06-2012 12:11 1939232

timon45, ну так в RunProgram надо влепить скрипт или как-то другое?

timon45 23-06-2012 16:14 1939364

Цитата:

Цитата alert30
влепить скрипт или как-то другое? »

да, но как?

net_vip_person@vk 24-06-2012 18:09 1939755

У меня вопрос. Модифицированный модуль, запущенный без параметров сразу начинает распаковку в InstallPath, при этом совершенно забывая спросить пользователя, куда бы он хотел распаковать файлы.
Детальнее тут.

gora 24-06-2012 18:22 1939759

Цитата:

Цитата net_vip_person@vk
Детальнее тут. »

Там нет ни каких деталей.
1 Версия и номер сборки модуля ?
2 Конфиг полностью в тегах CODE ?

net_vip_person@vk 24-06-2012 18:33 1939764

1.5 RC1 (сборка 2485) от 17 мая 2012 г.
1.4.4 Release (сборка 2485) от 17 мая 2012 г

Вот самый примитивный вариант:
Код:

;!@Install@!UTF-8!
GUIMode="1"
;!@InstallEnd@!


gora 24-06-2012 18:42 1939767

Цитата:

Цитата net_vip_person@vk
Вот самый примитивный вариант: »

Потому и нет ни каких запросов пути, что Вы ни чего не указали модулю. Почитайте про GUIFlags

timon45 06-07-2012 19:42 1947256

Нужна помощь в выполнении следующего:
переместить папку (название папки soft) с файлами и папками внутри её из:
InstallPath="%ProgramFiles%\\PROG"
в %USERPROFILE%\Application Data\soft

переместить у меня не получилось но сойдет и копирование с последующим удалением из начального места.
вот что получилось сделать самому (да сперва мне её еще надо было переименовать папку):
Код:

RunProgram="hidcon:cmd /c ren Profile soft"
RunProgram="hidcon:cmd /c (If Not Exist \"%USERPROFILE%\\Application Data\\soft\" xcopy \"soft\\*\" \"%USERPROFILE%\\Application Data\\soft\" /s /e /i /y)& Del /Q userdata.local& RD /S /Q \"soft\""

проблема в том что на XP работает а на Win7 не копируется.

Все, догадался:
Код:

RunProgram="hidcon:cmd /c Ver | Find \"6.1\" >Nul && xcopy \"%%T\\soft\" \"%USERPROFILE%\\AppData\\Roaming\\soft\" /s /e /i /y"
RunProgram="hidcon:cmd /c Ver | Find \"6.1\" >Nul || xcopy \"%%T\\soft\" \"%USERPROFILE%\\Application Data\\soft\" /s /e /i /y"

А, вот как удалить каталог после копирования из %%T\soft через RunProgram мне не понятно.

gora 07-07-2012 06:59 1947464

Цитата:

Цитата timon45
догадался »

1 Проще использовать переменную модуля
Код:

RunProgram="hidcon:xcopy soft \"%7zSfxFolder26%\\soft\" /s /e /i /y"
1.1 Указание полного пути с переменной %%T здесь не требуется.

2
Цитата:

Цитата timon45
как удалить каталог после копирования из %%T\soft через RunProgram мне не понятно »

Используйте параметр Delete
Код:

Delete="%%T\\userdata.local"
Delete="%%T\\soft"

2.1 Указание полного пути (с переменной %%T) здесь обязательно.

timon45 08-07-2012 20:07 1948219

Цитата:

Цитата gora
переменную модуля »

спасибо попробую, по моему эту переменную автор модуля ввел совсем недавно. (хотелось бы увидеть полный список данных переменных модуля)
Цитата:

Цитата gora
Используйте параметр Delete »

да на счет этого я в курсе, а как на счет через RunProgram, удалить файл не проблема а вот папку, не получалось. (папка находится по пути распаковки, только сперва она переименовывается, копируется а затем удаляется)

нашел список переменных
http://forum.oszone.net/post-517853-278.html

gora 08-07-2012 20:26 1948234

Цитата:

Цитата timon45
а как на счет через RunProgram, удалить файл не проблема а вот папку, не получалось »

Код:

;!@Install@!UTF-8!
InstallPath="c:\\test"
RunProgram="hidcon:cmd /c ren Profile soft"
RunProgram="hidcon:xcopy soft \"%7zSfxFolder26%\\soft\" /s /e /i /y"
RunProgram="hidcon:cmd /c RD /S /Q soft"
;!@InstallEnd@!

Папка soft удалилась без проблем.

bugmenotagain 09-07-2012 14:44 1948659

Цитата:

Цитата gora
RunProgram="hidcon:cmd /c ren Profile soft" RunProgram="hidcon:xcopy soft \"%7zSfxFolder26%\\soft\" /s /e /i /y" RunProgram="hidcon:cmd /c RD /S /Q soft" »

первое это переименование "Profile soft" в "soft" в только что распакованной папке?
второе это копирование "soft" в "Application Data" ?
третье удаление "soft", но из какой папки?

alert30 09-07-2012 17:30 1948770

Цитата:

Цитата bugmenotagain
третье удаление "soft", но из какой папки? »

То что папка soft лежит в папке AppData, то само папка soft в этой папке удаляется.

bugmenotagain 09-07-2012 17:46 1948779

alert30, так какая папка soft удаляется? та что в месте распаковки, или та что в AppData ?

alert30 09-07-2012 19:50 1948850

bugmenotagain, та что в месте распаковки.

gora 09-07-2012 20:52 1948896

Цитата:

Цитата gora
RunProgram="hidcon:cmd /c RD /S /Q soft" »

Удаляет папку soft в текущей папке (папке распаковки)
Цитата:

Цитата alert30
двойной слэш - папка, один слэш - файл »

Откуда такая информация?

popt2t 18-07-2012 15:46 1954272

Возможно подобный вопрос уже поднимался. Если да, ткните пальцем пожалуйста. Короче в конфигурации нету авто установок, но очень надо добавить возможность ключами выбирать создаваемые ярлыки. Есть ли такая возможность?

gora 18-07-2012 16:11 1954286

Цитата:

Цитата popt2t
в конфигурации нету авто установок, но очень надо добавить возможность ключами выбирать создаваемые ярлыки. Есть ли такая возможность? »

Есть. Добавьте ключи для автоустановок. Пример такого создания ярлыков (аддон ТС):
читать дальше »
Код:

;!@Install@!UTF-8!
SetEnvironment="Name=Total Commander"
SetEnvironment="Vers= v8.01 rc 1 [%%P]"
SetEnvironment="PFx86=%SystemDrive%\\totalcmd86"
SetEnvironment="PFx64=%SystemDrive%\\totalcmd64"
SetEnvironment="EXEx86=Totalcmd.exe"
SetEnvironment="EXEx64=Totalcmd64.exe"
SetEnvironment="NameInf=TCmd"
SetEnvironment="QLP=Microsoft\\Internet Explorer\\Quick Launch"
SetEnvironment="DelDefShrtCut=shc0:hidcon:cmd /c Echo"
SetEnvironment="AddSoft=%%P:hidcon:cmd /c If Exist \"%%S\\TCaddSft\\TCaddSft.cmd\" CD /D \"%%S\\TCaddSft\" & \"%%S\\TCaddSft\\TCaddSft.cmd\""
Title="Установка %Name%"
BeginPrompt="Сейчас будет установлен
%Name%%Vers%

Для установки x86 ТС на x64 ОС
нажмите 'OK' удерживая [Shift]"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
FinishMessage="%Name%%Vers% установлен!"
;
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"
; Простая установка: x64 TC на x64 OS или x86 TC на x86 OS
RunProgram="fm20:%%P:hidcon:QLP.bat"
RunProgram="%%P:hidcon:cmd /c Copy %NameInf%.inf %WINDIR%\\INF\\%NameInf%_%%P.inf /y"
RunProgram="%%P:rundll32 advpack,LaunchINFSection %NameInf%_%%P.inf,DefaultInstall_%%P,0"
RunProgram="x86:hidcon:xCopy x86\\* \"%PFx86%\\\" /s /e /i /y /h /k"
RunProgram="x86:hidcon:xCopy Windows\\* %WINDIR% /s /e /i /y"
RunProgram="x64:hidcon:xCopy x64\\* \"%PFx64%\\\" /s /e /i /y /h /k"
RunProgram="%AddSoft%"
;
; Простая установка: x86 TC на любую OS
AutoInstall="fm20:%%P:hidcon:QLP.bat"
AutoInstall="%%P:hidcon:cmd /c Copy %NameInf%.inf %WINDIR%\\INF\\%NameInf%_x86.inf /y"
AutoInstall="%%P:rundll32 advpack,LaunchINFSection %NameInf%_x86.inf,DefaultInstall_x86,0"
AutoInstall="%%P:hidcon:xCopy x86\\* \"%PFx86%\\\" /s /e /i /y /h /k"
AutoInstall="x86:hidcon:xCopy Windows\\* %WINDIR% /s /e /i /y"
AutoInstall="%AddSoft%"
;
; Автоустановка x86 без ярлыков
AutoInstall8="%%P:hidcon:QLP.bat"
AutoInstall8="%%P:hidcon:cmd /c Copy %NameInf%.inf %WINDIR%\\INF\\%NameInf%_x86.inf /y"
AutoInstall8="%%P:rundll32 advpack,LaunchINFSection %NameInf%_x86.inf,DefaultInstall_x86,0"
AutoInstall8="%%P:hidcon:xCopy x86\\* \"%PFx86%\\\" /s /e /i /y /h /k"
AutoInstall8="x86:hidcon:xCopy Windows\\* %WINDIR% /s /e /i /y"
;
; Автоустановка x64 без ярлыков
AutoInstall6="%%P:hidcon:QLP.bat"
AutoInstall6="%%P:hidcon:cmd /c Copy %NameInf%.inf %WINDIR%\\INF\\%NameInf%_x64.inf /y"
AutoInstall6="%%P:rundll32 advpack,LaunchINFSection %NameInf%_x64.inf,DefaultInstall_x64,0"
AutoInstall6="x64:hidcon:xCopy x64\\* \"%PFx64%\\\" /s /e /i /y /h /k"
;
; Установка дополнительного ПО
AutoInstallS="%AddSoft%"
;
; Ярлык в Пуск->Программы->Утилиты
AutoInstallu="%DelDefShrtCut%"
AutoInstallU="%DelDefShrtCut%"
; Ярлык на Рабочем столе
AutoInstalld="%DelDefShrtCut%"
AutoInstallD="%DelDefShrtCut%"
; Ярлык на панели быстрого запуска
AutoInstallq="%DelDefShrtCut%"
AutoInstallQ="%DelDefShrtCut%"
; Ярлык в Пуск->Программы->Автозагрузка
AutoInstalla="%DelDefShrtCut%"
AutoInstallA="%DelDefShrtCut%"
; Ярлык в Пуск->Программы
AutoInstallp="%DelDefShrtCut%"
AutoInstallP="%DelDefShrtCut%"
;
; Ярлык на панели быстрого запуска ************* по умолчанию *************
Shortcut="26,{%PF%%P%\\%EXE%%P%},{},{%QLP%},{Файловый менеджер},{%Name% (%%P)},{%PF%%P%}"
; Ярлык в Пуск->Программы->Утилиты
Shortcutu="Pu,{%PFx86%\\%EXEx86%},{},{Утилиты},{Файловый менеджер},{%Name% (x86)},{%PFx86%}"
ShortcutU="Pu,{%PFx64%\\%EXEx64%},{},{Утилиты},{Файловый менеджер},{%Name% (x64)},{%PFx64%}"
; Ярлык на Рабочем столе
Shortcutd="Du,{%PFx86%\\%EXEx86%},{},{},{Файловый менеджер},{%Name% (x86)},{%PFx86%}"
ShortcutD="Du,{%PFx64%\\%EXEx64%},{},{},{Файловый менеджер},{%Name% (x64)},{%PFx64%}"
; Ярлык на панели быстрого запуска
Shortcutq="26,{%PFx86%\\%EXEx86%},{},{%QLP%},{Файловый менеджер},{%Name% (x86)},{%PFx86%}"
ShortcutQ="26,{%PFx64%\\%EXEx64%},{},{%QLP%},{Файловый менеджер},{%Name% (x64)},{%PFx64%}"
; Ярлык в Пуск->Программы->Автозагрузка
Shortcuta="7,{%PFx86%\\%EXEx86%},{},{},{Файловый менеджер},{%Name% (x86)},{%PFx86%}"
ShortcutA="7,{%PFx64%\\%EXEx64%},{},{},{Файловый менеджер},{%Name% (x64)},{%PFx64%}"
; Ярлык в Пуск->Программы
Shortcutp="Pu,{%PFx86%\\%EXEx86%},{},{},{Файловый менеджер},{%Name% (x86)},{%PFx86%}"
ShortcutP="Pu,{%PFx64%\\%EXEx64%},{},{},{Файловый менеджер},{%Name% (x64)},{%PFx64%}"
SfxAuthor="gora-sah <gora@7zsfx.info>"
;!@InstallEnd@!


popt2t 18-07-2012 17:08 1954319

gora, посмотри мой скрипт и скажи что в нем не так. Он то работает, но я только начинаю разбираться, может что не так сделал. В частности интересует секция AutoInstall с созданием ярлыков.
читать дальше »

Код:

;!@Install@!UTF-8!
SetEnvironment="DelDefShrtCut=shc0:hidcon:cmd /c Echo"
Title="Установка Drivers BackUp Solution"
BeginPrompt="Хотите установить Drivers BackUp Solution?"
FinishMessage="Установка завершена!"
ExtractTitle="Идет установка..."
ExtractDialogText="Пожалуйста, подождите..."
GUIMode="1"
OverwriteMode="0"
GUIFlags="2+4+8+16+32+2048+4096"
MiscFlags="4"
AutoInstallP="%DelDefShrtCut%"
AutoInstallD="%DelDefShrtCut%"
InstallPath="%ProgramFiles%\\Drivers BackUp Solution"
Shortcut="P,{%%T\\DriversBackuper.exe},{},{Утилиты},{Резервное копирование драйверов},{Drivers BackUp Solution},{%%T}"
Shortcut="D,{%%T\\DriversBackuper.exe},{},{},{Резервное копирование драйверов},{Drivers BackUp Solution},{%%T}"
ShortcutP="P,{%%T\\DriversBackuper.exe},{},{Утилиты},{Резервное копирование драйверов},{Drivers BackUp Solution},{%%T}"
ShortcutD="D,{%%T\\DriversBackuper.exe},{},{},{Резервное копирование драйверов},{Drivers BackUp Solution},{%%T}"
;!@InstallEnd@!


gora 19-07-2012 11:11 1954723

popt2t, явных ошибок не обнаружил.
Строку OverwriteMode="0" можно удалить, т.к., это режим по умолчанию и его можно не прописывать.

popt2t 22-07-2012 00:30 1956335

Есть ли возможность запуска приложения поле нажатия "ОК" в окне завершения установки?

gora 01-08-2012 08:46 1962541

Вложений: 1
Цитата:

Цитата popt2t
запуска приложения поле нажатия "ОК" в окне завершения установки? »

Такой возможности нет. По крайней мере без "танцев с бубном", нет, но если очень хочется то ...

popt2t 01-08-2012 13:41 1962714

Цитата:

Цитата gora
но если очень хочется то ... »

Не то слово, как хочется. Спасибо. Попробую.

gora, а как мне посмотреть что и как в файле конфигурации? Архив под паролем.

gora 01-08-2012 14:01 1962729

Цитата:

Цитата popt2t
что и как в файле конфигурации? »

Архив любой, конфиг с комментариями ниже
читать дальше »
Код:

;!@Install@!UTF-8!
Title="Тест"
BeginPrompt="Запуск приложения после нажатия 'ОК' в окне FinishMessage"
FinishMessage="Работа модуля завершена!
После нажатия 'ОК' будет запущен 7-Zip"
; Имитация пользовательских команд выполняемых до FinishMessage
RunProgram="hidcon:cmd /c Echo "
RunProgram="hidcon:Ping -n 3 localhost"
RunProgram="hidcon:cmd /c Echo "
; Создание вспомогательного скрипта для запуска приложения (7zFM.exe) после FinishMessage
; ВАЖНО! Скрипт создается не во временной папке модуля, а в его родительской папке
; ------------------------------------------- сам скрипт --------------------------------
; - петля для отслеживания наличия процесса запущенного SFX. Выход из петли после нажатия 'ОК' в окне FinishMessage
RunProgram="hidcon:cmd /c Echo :_loop >..\\test.bat"
RunProgram="hidcon:cmd /c Echo Ping -n 2 localhost^>Nul >>..\\test.bat"
RunProgram="hidcon:cmd /c Echo TASKLIST /FI \"IMAGENAME eq %~1\" ^| Find /i \"%~1\" ^&^& GoTo _loop >>..\\test.bat"
; - запуск нужного приложения (7zFM.exe, путь зависит от разрядности ОС) после нажатия 'ОК' в окне FinishMessage
RunProgram="x86:hidcon:cmd /c Echo Start \"\" \"%ProgramFiles%\\7-Zip\\7zFM.exe\" >>..\\test.bat"
RunProgram="x64:hidcon:cmd /c Echo Start \"\" \"%ProgramW6432%\\7-Zip\\7zFM.exe\" >>..\\test.bat"
; - удаление временной папки модуля, сама может не удалится из-за использования префикса forcenowait
RunProgram="hidcon:cmd /c Echo RD /s /q %2 >>..\\test.bat"
; - самоудаление скрипта
RunProgram="hidcon:cmd /c Echo Del /q %0 >>..\\test.bat"
; ---------------------------------------------------------------------------------------
; Переход в родительскую папку и запуск скрипта с двумя параметрами: имя процесса, имя временной папки модуля
; ВАЖНО! Переход в родительскую папку освобождает временную папку модуля для ее последующего удаления
; Префикс forcenowait позволяет не ждать завершения команды и модуль сразу выводит FinishMessage
RunProgram="%%P:forcenowait:hidcon:cmd /c CD /d ..\\ & test.bat \"%%M\" \"%%T\""
GUIMode="2"
GUIFlags="2+4+8+16+32+2048+4096"
;!@InstallEnd@!


alert30 17-08-2012 06:56 1971604

Есть такая возможность: если нажать "ОК" или "Да" то установка автоматически происходит, а вот если нажать "ОК" или "Да" с удерживанием клавиши [Shift] то должен показать, какой путь установки укажем?

gora 17-08-2012 10:02 1971653

Цитата:

Цитата alert30
Есть такая возможность »

Нет. Либо делать "матрешку", либо использовать рекурсивный запуск SFX (если архив небольшой). Пример рекурсивного запуска можно посмотреть в установщике "Кнопки..."

бУРов 03-09-2012 14:15 1982148

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

specialist 03-09-2012 14:33 1982159

бУРов, например с помощью 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 и изучайте возможности с помощью мануала к нему

gora 03-09-2012 14:48 1982169

Цитата:

Цитата бУРов
какое решение имеется? »

Без сторонних утилит, с помощью vbs скрипта, например:
Код:

set WSS = WScript.CreateObject("WScript.Shell")
strDesktop = WSS.SpecialFolders("Desktop")
set oShellLink = WSS.CreateShortcut(strDesktop & "\Shortcut Script.lnk")
oShellLink.TargetPath = WScript.ScriptFullName
oShellLink.WindowStyle = 3
oShellLink.Hotkey = "Ctrl+Alt+e"
oShellLink.IconLocation = "notepad.exe, 0"
oShellLink.Description = "Shortcut Script"
oShellLink.WorkingDirectory = strDesktop
oShellLink.Save


бУРов 03-09-2012 14:49 1982170

Цитата:

Цитата specialist
с помощью nircmd »

Да, вполне приемлемое решение )))

3december 03-09-2012 20:02 1982342

Здравствуйте, может кто-нибудь помочь в создании SFX архива? Мне нужно, чтобы перед распаковкой он удалил файлы в выбранной пользователем директории для распаковки. Файлов для удаленим много: порядка 17 тыс. В программировании я не силен, может кто подсказать как это сделать?

бУРов 03-09-2012 20:08 1982344

Цитата:

Цитата alert30
RunProgram = "REGEDIT /S reg.reg" »

А у меня такое использование
вызывает диалог

бУРов 03-09-2012 20:33 1982363

Цитата:

Цитата gora
Delete=%%T\\reg.reg" »

Вот что-то нигде не могу найти, что это -- "%%T"?
Это типа буква диска?

jameszero 03-09-2012 20:44 1982368

3december
Перед распаковкой архива такого функционала не предусмотрено, можно выполнить удаление сразу после распаковки во временную папку, а затем установить программу или, что там вам требуется. Это указано в первом сообщении темы (FAQ).

Технически так:
Удалить все файлы в директории %ProgramFiles%\ToDelete
Код:

;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c PushD \"%ProgramFiles%\\ToDelete\"& del /S /Q *.*& PopD"
;!@InstallEnd@!

Возможно подойдёт вариант удалить всю директорию %ProgramFiles%\ToDelete
Код:

;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c If Exist \"%ProgramFiles%\\ToDelete\" rd /S /Q \"%ProgramFiles%\\ToDelete\""
;!@InstallEnd@!

бУРов
Цитата:

%%T - полный путь распаковки
Настоятельно рекомендую к ознакомлению ссылку - http://7zsfx.info

бУРов 03-09-2012 20:51 1982372

Нашел, спасибо

бУРов 03-09-2012 21:08 1982381

Можно ли как-то менять значения реестра?
Использование "regedit /s reg.reg" вызывает диалог.

Менять UAC не нужно. Хотя... Вроде его из командной строки можно отключить. Уже кое что.

И вот еще нашел. REG.EXE

specialist 03-09-2012 21:37 1982402

бУРов,
- в windows 7 с включенным UAC запускать запускать полученный sfx EXE правой кнопкой от имени администратора
или
- добавить в файл конфигурации к sfx модулю строчку
MiscFlags="4"
для автоматизации вызова диалога повышения привилегий при запуске sfx EXE
или
- как вариант открыть ваш готовый exe или *.cfg файл для него перед слиянием например в restorator и в секции манифестов в строке
Код:
Код:

<requestedPrivileges><requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel></requestedPrivileges>
прописать вместо asInvoker
фразу
requireAdministrator
для автоматизации вызова диалога повышения привилегий при запуске sfx EXE

по результатам будут все команды после запуска файла выполняться от администратора и запросов на подтверждение не будет

3december 03-09-2012 21:44 1982411

jameszero
вариант со временной папкой не подходит, так как файлов на 5 гигабайт

А можно сделать так: SFX архив распаковывает один файл в директорию, которую пользователь выбрал, выполняет этот файл, а потом распаковывает все остальное?

бУРов 03-09-2012 22:06 1982423

Два 1-х пункта не помогают. Вопросы-диалоги те же и даже если жму "да", в реестре изменений нет.

Цитата:

Цитата specialist
windows 7 с включенным UAC запускать запускать полученный sfx EXE правой кнопкой от имени администратор »

У меня почему-то в реестре ничего не поменялось ((

Цитата:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
"AutoAdminLogon"="1"
А если через кнопку пуск "REGEDIT /S ", справшивает, добалять ли в реестр

ruslan910 04-09-2012 07:23 1982584

Господа помогите!
Код:

Shortcut="Du,{C:\\Konsultant\\pn.exe},{/APP "CONSULTANT" /PNI "3z11omhz"},{},{Консультант},{konsultant},{C:\\Konsultant},{%APPDATA%\\ICAClient\\8w9u1x86.ICO},{}"
7zip ругается на ковычки "CONSULTANT" и "3z11omhz" , но они должны присутствовать в ярлыке, как быть? подскажите.
заранее спасибо

jameszero 04-09-2012 07:46 1982595

3december
Цитата:

Цитата 3december
А можно сделать так: SFX архив распаковывает один файл в директорию, которую пользователь выбрал, выполняет этот файл, а потом распаковывает все остальное? »

Можете сделать два архива. Один небольшой, который будет моментально распаковываться, выполнять действия и запускать второй, основной архив.

Частичная распаковка одного архива невозможна (FAQ в первом сообщении, пункт 2)

gora 04-09-2012 08:18 1982611

Цитата:

Цитата ruslan910
ругается на ковычки »

1 Кавычки нужно экранировать обратным слешем:
Код:

...{/APP \"CONSULTANT\" /PNI \"3z11omhz\"}...
Цитата:

Цитата ruslan910
...{%APPDATA%\\ICAClient\\8w9u1x86.ICO}..." »

2 Системные переменные не раскрываются в параметрах ярлыка.
Цитата:

Цитата справка
Только переменные среды модуля и переменные модуля, а также переменные, определяемые пользователем в параметрах 'SetEnvironment', разбираются и подставляются (будут подставлены ЗНАЧЕНИЯ этих переменных) во всех параметрах команды 'Shortcut'.


Amigos 04-09-2012 08:52 1982630

Цитата:

Цитата gora
Системные переменные не раскрываются в параметрах ярлыка. »

дык вроде и не нужно, оно именно так и пропишется в ярлыке, в виде переменной, и такой ярлык вроде вполне рабочий

gora 04-09-2012 09:53 1982657

Цитата:

Цитата Amigos
дык вроде и не нужно »

Я не знаю, что конкретно задумал пользователь. Переменную в ярлыке будет обрабатывать ОС и он будет работоспособным, если в нем нет ошибок, например таких:
Код:

...{%АPPDATA%\\ICAClient\\8w9u1x86.ICO}..."
В "правильном" варианте использования Shortcut
Код:

SetEnvironment="AD=%АPPDATA%"
Shortcut="...{%AD%\\ICAClient\\8w9u1x86.ICO}..."

мы сразу увидим в свойствах ярлыка отсутствие "правильного" абсолютного пути, т.к., переменной %АPPDATA% не существует и она не раскроется.

ruslan910 04-09-2012 10:47 1982683

Спасибо за обратный слэш, помогло :) , а вот
Цитата:

SetEnvironment="AD=%АPPDATA%"
Shortcut="...{%AD%\\ICAClient\\8w9u1x86.ICO}..."
не сработало, иконку не нашла винда (win xp sp3)

gora 04-09-2012 11:14 1982698

Цитата:

Цитата ruslan910
не сработало, иконку не нашла винда »

Вы скопипастили мой пример и не вникли в суть написанного:
Цитата:

Цитата gora
мы сразу увидим в свойствах ярлыка отсутствие "правильного" абсолютного пути »

В моем коде, умышленно, для примера, введена ошибка, которая для наглядности выделена цветом - первая буква в переменной набрана кириллицей. Исправьте эту ошибку и все заработает.

ruslan910 04-09-2012 11:54 1982723

о чудо, все заработало. Спасибо.

specialist 07-09-2012 12:56 1984698

gora,
возникла идея отвязаться от имени reg файла находящегося в одном каталоге с установщиком, реализовать следующий смысл:
for %%f in (*.reg) do regedit /s "%%f"
в конфиге. реально? накидал что-то типа:
RunProgram="hidcon:cmd /c for %%f in (%%S\\*.reg) do regedit /s \"%%S\\%%f\""
но не отрабатывает. можно ли довести это до ума (естесственно чтобы при этом он понимал и пути/названия файлов с пробелами)?

gora 07-09-2012 13:16 1984718

Цитата:

Цитата specialist
не отрабатывает. можно ли довести это до ума (естесственно чтобы при этом он понимал и пути/названия файлов с пробелами)? »

Можно:
Код:

RunProgram="hidcon:cmd /c For %f In (\"%%S\\*.reg\") Do RegEdit /s \"%f\""

timon45 23-09-2012 01:00 1993354

Мне необходимо запустить vbs скрипт (только на Windows 7 и выше), после долгих мучений у меня получилось но уж очень долго выполняется данная команда может её можно как то модернизировать?
Код:

RunProgram="hidcon:cmd /c Ver | Find \"6.1\" >Nul && wscript.exe \"%%T\\runQ.vbs"

_syd_ 23-09-2012 02:00 1993363

Цитата:

Цитата timon45
Мне необходимо запустить vbs скрипт (только на Windows 7 и выше) »

В Вашем скрипте этого сделать не получится, поскольку Windows 8 имеет номер 6.2.

Проверьте отдельно запуск runQ.vbs. В настоящий момент данных для ответа на вопрос о скорости выполнения недостаточно.

P.S. Попробуйте так:
Код:

RunProgram="hidcon:cmd /c Ver | Find \"6.\" >Nul && wscript.exe \"%%T\\runQ.vbs\""

specialist 23-09-2012 02:37 1993366

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

nibble74 21-10-2012 06:53 2009379

Как экспортировать путь к SFX архиву в реестр, во время его запуска ? Пробую варианты с переменной %%S, но чёт никак.

К примеру:
hidcon:cmd /c Reg Add \"HKLM\\SOFTWARE\\имя\" /ve /t REG_SZ /d \"%%S\\Имя.exe\" /f"

Имя.exe - этот файл расположен рядом с SFX архивом. Вот и нужно путь к этому файлу экспортировать в реестр. Просто, при распаковке из другого инсталлятора, путь к самому SFX и этому файлу может быть разным.

Дайте пример. Как реализовать этот вариант?

gora 21-10-2012 11:09 2009428

Цитата:

Цитата nibble74
чёт никак »

Может быть ОС х64? Или путь %%S содержит спец символы? Это нужно указывать в вопросе.
Цитата:

Цитата nibble74
Дайте пример. Как реализовать этот вариант? »

Код:

RunProgram="hidcon:%%P:Reg Add \"HKLM\\SOFTWARE\\имя\" /ve /t REG_SZ /d \"%%S\\имя.exe\" /f"

nibble74 21-10-2012 14:22 2009533

Цитата:

Цитата gora
Может быть ОС х64? Или путь %%S содержит спец символы? »

Нет нет, ОС х86 и никаких спец символов. Пробовал без %%S прописывал полный путь, но не экспортируется.
Таких комманд у меня несколько, причём первая экспортируется, а все последующие (их всего 6 штук) нет.
Смотрю в процессах висит Sfx.exe, Reg.exe и не закрываются, причём временная папка Sfx архива из темпа тоже не удаляется.
Приходится вручную процессы убивать. Иногда Sfx процессов одновременно бывает 2 и даже 3 :)
Пробовал с cmd /c и без, как в вашем коде выше.
Префикс waitall тоже не помогает.

Походу, вроде бы, не успевает все комманды экспорта в реестр обработать и зависает.

nibble74 21-10-2012 14:47 2009552

Только что понял в чём дело. В конце каждой строки у меня прописано "%%1". Убрал этот параметр и %%S заработало.
Как же так ? Этот параметр очень нужен, без него никак.

Походу, кнопочку надо пересмотреть.

Quattroman 05-11-2012 22:27 2019566

Парни, подскажите плиииииз!!!!
Сегодня появилась задача, передать файл, открыв, просмотрев и закрыв который, самостоятельно бы самоуничтожился без следов.
В программирования я полный нуб......но пришлось разбираться ))

Собрал в корне диска С следующие файлы:

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-архиву, вводим пароль, далее как обычно (открывается файл, просматриваем, закрываем и все удаляется)??

Спасибо!

specialist 05-11-2012 23:13 2019611

Quattroman, бинго! это жесть конечно. изобретать колесо вместо внимательного изучения возможностей sfx...
ознакомьтесь http://7zsfx.info/ru/parameters.html#SelfDelete
один вопрос только - как вы собираетесь бороться с копиями файла которые удаляться не будут (если кто-то их сделает)?
существуют модули в которые можно вбить пароль и его потребуется знать чтобы запустить и распаковать такой sfx (вроде бы даже общедоступны)
но модули, которые нельзя распаковать и которые под паролем, который однако не нужно указывать при запуске файла доступны только его величеству автору модифицированных модулей и лицам особо приближенным к нему (заслужившим)

Quattroman 06-11-2012 08:21 2019797

specialist, лана вам.....жесть.....
вам, конечно, легко рассуждать, продвинутый )))
времени изучать не было вообще ((

Т.е. Конфиг *.TXT надо по другому записать??
Далее также через командную строку?
Помогите написать файл этот конфиг.....
То, что я в первом пункте написАл - CMD уже не нужен будет?
О каких копиях идет речь? Т.е. даже при использовании SelfDelete всё равно где-то копия будет валяться?

PS В голове полная каша........Последний раз чем то подобным занимался в школе. когда на паскале табличку умножения писАл. Это все мои познании в информатике и программировании ((
PPS Сорри, за большое количество вопросов....

gora 06-11-2012 11:00 2019860

Quattroman, все значительно проще.
1 cmd файла не надо, его заменит параметр SelfDelete="1"
2 Заботится об удалении распакованного не надо, если не указывать параметр InstallPath. При этом распаковка происходит во временную папку модуля и по завершении его работы она удаляется со всем содержимым автоматически.
3 Для добавления ввода пароля достаточно:
- при создании 7z архива указать этот пароль
- использовать модуль с поддержкой шифрования 1.6 develop (сборка 2478) 10.05.12 и выше. Обратите внимание, что ветки 1.4 и 1.5 шифрования не поддерживают.

Конфиг получится таким:
Код:

;!@Install@!UTF-8!
RunProgram="rundll32 shimgvw.dll,ImageView_Fullscreen 1.jpg"
SelfDelete="1"
GUIMode="2"
;!@InstallEnd@!

Если в окне ввода пароля нужно что-то написать для пользователя, то см. параметры в справке: PasswordTitle, PasswordText

Цитата:

Цитата specialist
доступны только его величеству автору модифицированных модулей »

2 specialist, как-то неспортивны мне кажутся Ваши выпады в сторону автора. Он с Вас денег не брал, он Вам сделал модули, а что Вы сделали для него? :dont-know Ничего! Тогда не надо наезжать.

Quattroman 06-11-2012 11:40 2019877

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
Кликаем по нему, просит ввести пароль, несколько секунд и архив удаляется. Все вроде как надо...и пароль, и удаляется, но картинки нет ((
Мне надо, что бы после ввода пароля, картинка открывалась в стандартном мелкософтовском просмотрщике, а после закрытия картинки - архив удалялся..

Что делаю не так??

gora 06-11-2012 11:49 2019880

Quattroman, Ваша строка
Код:

rundll32 shimgvw.dll,ImageView_Fullscreen 1.jpg
у меня не захотела работать ни в каком виде, ни из конфига, ни из батника расположенного рядом с картинкой. Причины этого мне неизвестны, но, т.к., Вы написали что у Вас она работает, то я и не стал ее трогать. У себя тестировал проще, в конфиге была строка
Код:

RunProgram="1.jpg"
и файл запускался программой с которой у меня в системе ассоциировано данное расширение, а именно IrfanView. Возможно нечто похожее происходит и у Вас.
Вы не указываете свою систему, у меня все написано в профиле. Конфиги и куски кода вставляйте в тегах [code] - значок # на панели "Быстрого ответа".

Quattroman 06-11-2012 12:12 2019908

Профиль подправил
С этим кодом
Код:

rundll32 shimgvw.dll,ImageView_Fullscreen 1.jpg
баловался вчера на ХРюше...

Попробовал сделать с таким конфиг-файлом...
Код:

;!@Install@!UTF-8!
RunProgram="1.jpg"
SelfDelete="1"
GUIMode="2"
;!@InstallEnd@!

Теперь по двойному клику по SFX-архиву предлагается ввести пароль, вводим, далее открывается просмотрщик.....через секунду архив удаляется и.....



Т.е. как я понял, архив с картинкой удалился раньше, чем она (картинка) успела открыться ((

gora 06-11-2012 12:25 2019922

Quattroman, попробуйте:
1 Добавить префикс, может поможет:
Код:

RunProgram="waitall:1.jpg"
2 Добавить вторую строку после запуска картинки:
Код:

RunProgram="hidcon:cmd /c Ping -n 4 localhost"
В последнем случае временная папка модуля может не удалиться.

Quattroman 06-11-2012 12:37 2019928

Первый вариант не проканал
В случае, если добавить
Код:

RunProgram="hidcon:cmd /c Ping -n 4 localhost"
все работает!!
Открывается картинка из временной папки .......\Local\Temp\7Zipsfx.000, далее видно как удаляется сам архив, далее удаляется папка 7Zipsfx.000. Закрываем картинку и никаких следов!

СПАСИБО!

specialist 06-11-2012 21:14 2020344

Цитата:

Цитата gora
2 specialist, как-то неспортивны мне кажутся Ваши выпады в сторону автора. Он с Вас денег не брал, он Вам сделал модули, а что Вы сделали для него? Ничего! Тогда не надо наезжать. »

это не выпады, а констатация фактов в шутливой форме. очень жаль если мое высказывание показалось вам язвительным.

Quattroman 06-11-2012 21:21 2020347

Попробовал распаковать WINRARом след. способом: правая клик мыши, извлечь файлы, вводим пароль и.........получаем обычную папку с файлом ((((
Как-то можно обойти такой способ распаковки? Так, что бы распаковать можно было только запустив SFX-архив?
Просто многие (я в том числе) если видят архив, то распаковывают именно первым способом.......

gora 06-11-2012 21:45 2020361

Цитата:

Цитата Quattroman
Как-то можно обойти такой способ распаковки? »

Нет. Если пароль известен, то распаковку запретить нельзя.
Цитата:

Цитата specialist
констатация фактов »

Написанное Вами про модули, истиной не является - значит, написанное Вами, не факты, а ложь.

apozlevich 15-12-2012 21:36 2046046

Немного странный вопрос: как создать папку в меню пуск/программы? Именно папку, пустую :)

dee.jack 16-12-2012 08:18 2046260

apozlevich,
В 7-й винде это можно сделать простым перетаскиванием из проводника в меню пуск - наводим свою папку на "все программы" , только надо чтоб в настройках меню пуск было разрешено перетаскивание.


apozlevich 16-12-2012 09:19 2046272

dee.jack, это спасибо, но мне-то средствами модифицированного модуля надо :)

gora 16-12-2012 10:03 2046283

Цитата:

Цитата apozlevich
как создать папку в меню пуск/программы? Именно папку, пустую »

Код:

;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c MD \"%7zSfxFolder02%\\Пустая папка\""
;!@InstallEnd@!

Версия модуля 1.6.0.2478. Об изменениях в переменных модуля см. "История изменений" в справке модулей.

Vitaliy21 17-12-2012 16:37 2047328

Здравствуйте, есть такой конфигурационный файл
Код:

;!@Install@!UTF-8!
SetEnvironment="InstallDir=%%S"
ExtractDialogText="Extracting files"
ExecuteFile="setup.exe"
ExecuteParameters="/SILENT"
GUIMode="2"
;!@InstallEnd@!

Подскажите, как к нему прикрепить подхват reg файл настроек внутри или рядом с архивом после запуска setup.exe?

Пробовал вроде что-то этого, RunProgram="REGEDIT /S Settings.reg" но не подхватывает...

alert30 17-12-2012 16:44 2047336

Цитата:

Цитата Vitaliy21
Пробовал вроде что-то этого, RunProgram="REGEDIT /S Settings.reg" но не подхватывает... »

Подхватывает, но "тихо", потому что прописали после REGEDIT ключ /S.

Vitaliy21 17-12-2012 17:12 2047364

Цитата:

Цитата alert30
Подхватывает, но "тихо", потому что прописали после REGEDIT ключ /S. »

Тут ключ ни при чём, т.к. после выполнения SFX, изменений в реестре нет, а если вручную запускать рег-файл - то изменения видны. Наверное что-то в конфигурационном файле не так?

alert30 17-12-2012 22:13 2047621

Цитата:

Цитата Vitaliy21
Тут ключ ни при чём »

Не знаю как у Вас, у меня работает.

Можно сделать из REG-файла в конфигурационный файл тут.

Valerkan 18-12-2012 02:16 2047780

Можно ли кнопкам "Да" и "Нет", "ОК" и "Отмена" задать своё значение, например "Установить" и "Отменить"?

alert30 18-12-2012 07:41 2047812

Valerkan, никак, но можно ковырять модуль с Dialogs (на ваше усмотрение).

gora 18-12-2012 08:42 2047823

Цитата:

Цитата Valerkan
Можно ли кнопкам "Да" и "Нет", "ОК" и "Отмена" задать своё значение »

Можно.
Код:

;!@Install@!UTF-8!
Title="Стринги модуля"
BeginPrompt="        Проверка стрингов модуля

Нажмите '%7zSfxString27%', для завершения теста"
FinishMessage="Модуль завершил работу"
; OK
SetEnvironment="7zSfxString25=Завершить"
; Отмена
SetEnvironment="7zSfxString26=Отменить"
; Да
SetEnvironment="7zSfxString27=Показать"
; Нет
SetEnvironment="7zSfxString28=Не надо"
RunProgram="hidcon:cmd /c Echo"
GUIMode="2"
GUIFlags="2+4+8+16+32+2048"
;!@InstallEnd@!


Valerkan 18-12-2012 16:28 2048101

Можно ли чтобы при запуске SFX архива вместо иконки отображалась картинка?

alert30 18-12-2012 18:04 2048206

Valerkan, непонятно, можно предоставить скриншоты где, каким образом...

Valerkan 18-12-2012 20:36 2048295

Вложений: 1
Цитата:

Цитата alert30
Valerkan, непонятно, можно предоставить скриншоты где, каким образом... »

Нужно, чтобы было так: Делал в фотошопе.

alert30 19-12-2012 17:28 2049038

Valerkan, в модуле пока не сделали эту функцию, но можно GIF - 480x74.

Oleg_Sch 20-12-2012 02:42 2049386

alert30, неправда Ваша...
Подробно расписывать не буду, скажу кратко.
Возьмите за пример LZMA_Dialogs и правьте ресурсы с обязательным сохранением ID контролов и диалогов каким-нибудь ResourceHacker'ом.
Valerkan, в Вашем случае достаточно подправить диалог с ID=2001, а остальные - удалить, если не нужны.

alert30 20-12-2012 11:26 2049544

Oleg_Sch, и вправда, спасибо. Первый раз заработал.

sov44 14-01-2013 08:31 2066251

Подскажите, как через файл конфигурации удалить ярлык
Код:

%ALLUSERSPROFILE%\Главное меню\Программы\прога.lnk

gora 14-01-2013 09:11 2066264

Код:

Delete="%SfxFolder23%\\прога.lnk"
или для старых модулей:
Код:

Delete="%7zSfxFolder23%\\прога.lnk"

specialist 14-01-2013 11:29 2066341

sov44, список переменных http://forum.oszone.net/showthread.p...42#post1850742

gora 14-01-2013 11:41 2066346

Цитата:

Цитата specialist
список переменных »

В последней справке переменным модуля посвящена целая страница. Там есть пример конфига для вывода (на экран или в файл) полного списка всех переменных модуля со всеми вновь появившимися и переименованными переменными.

specialist 24-01-2013 14:04 2073960

испытываю странную проблему:
в файле установщика есть команда на распаковку файлов рядом с ним, если они есть (переменная %unpack%)
ключ -aiu передаваемый им просто распаковывает их содержимое в тот же каталог куда и основной sfx (шаблон ниже под спойлером)

проблема в следующем: была такая мысль - если файлы есть они распаковываются и дополняют функционал, если их нет - ничего не распаковывается и функционал базовый, а получается, что если файлы все есть, то все отлично копируется, распаковывается как следует, а если хоть одного файла из списка в переменной %unpack% нет ничего из остальных не дораспаковывается, какой то затык с символом & чтоли происходит (если каждую команду отдельной переменной прописать вроде все в порядке, но уж очень много переменных придется натыкать по конфигу).
и дополнительный вопрос. можно ли как то реализовать в конфиге команду на запуск выполняющуюся при любом из запусков
runprogram / autoinstall / autoinstallx чтобы ее не нужно было прописывать к каждому autoinstallx
пробовал executefile с ExecuteParameters но что то она сложные комбинации не воспринимает, вечно сыплясь на "файл не найден" или просто запуская командную строку и не выполняя то что прописано в ExecuteParameters в наборе типа "%windir%\\system32\\cmd.exe" /c if exist ...

читать дальше »

Код:

;!@Install@!UTF-8!
SetEnvironment="Vers=2013"
SetEnvironment="Name=Microsoft Office "
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"
SetEnvironment="pa=hidcon:cmd /c start /wait setup.exe /config "
InstallPath="%Temp%\\%Vers%"
GUIMode="1"
GUIFlags="2048"
MiscFlags="4"
Title="Установка %Name%%Vers% V13.1 RePack by SPecialiST"
OverwriteMode="1"
ExtractTitle="Распаковка файлов Office ..."

ExtractDialogText="Придется немного подождать..."

BeginPrompt="Сейчас будет установлен %Name%%Vers%

Нажав  [Да]  можно  сделать выбор устанавливаемых компонентов
или выполнить другие операции.
При  удерживании  клавиши  [Shift]  и  нажатию  [Да]  происходит
установка  всех  приложений в автоматическом  видимом  режиме.

Другие опции запуска можно посмотреть запустив файл с ключом /?"

; -'Да' - ручная установка с возможностью выбора компонентов и опций
RunProgram="%unpack%"
RunProgram="setup.cmd"

; -'Да' с зажатым Shift - видимая автоматическая установка всего набора
AutoInstall="%unpack%"
AutoInstall="%pa%ProPlus.WW\visible.xml"
AutoInstall="hidcon:cmd /c if exist VisPro.ww start /wait setup.exe /config VisPro.ww\visible.xml"
AutoInstall="hidcon:cmd /c if exist prjpro.ww start /wait setup.exe /config prjpro.ww\visible.xml"
AutoInstall="hidcon:cmd /c if exist sharepointdesigner.ww start /wait setup.exe /config sharepointdesigner.ww\visible.xml"

; -ais - полная версия ProPlus
AutoInstalls="%unpack%"
AutoInstalls="%pa%ProPlus.WW\visible.xml"
AutoInstallS="%unpack%"
AutoInstallS="%pa%ProPlus.WW\invisible.xml"

; -aiw - Word+Excel
AutoInstallw="%unpack%"
AutoInstallw="%pa%ProPlus.WW\visible.xml /adminfile ProPlus.WW\we.MSP"
AutoInstallW="%unpack%"
AutoInstallW="%pa%ProPlus.WW\invisible.xml /adminfile ProPlus.WW\we.MSP"

; -aip - Word+Excel+PowerPoint
AutoInstallp="%unpack%"
AutoInstallp="%pa%ProPlus.WW\visible.xml /adminfile ProPlus.WW\wep.MSP"
AutoInstallP="%unpack%"
AutoInstallP="%pa%ProPlus.WW\invisible.xml /adminfile ProPlus.WW\wep.MSP"

; -aio - Word+Excel+PowerPoint+Outlook
AutoInstallo="%unpack%"
AutoInstallo="%pa%ProPlus.WW\visible.xml /adminfile ProPlus.WW\wepo.MSP"
AutoInstallO="%unpack%"
AutoInstallO="%pa%ProPlus.ww\invisible.xml /adminfile ProPlus.ww\wepo.MSP"

; -aie - Word+Excel+Outlook
AutoInstalle="%unpack%"
AutoInstalle="%pa%ProPlus.WW\visible.xml /adminfile ProPlus.WW\weo.MSP"
AutoInstallE="%unpack%"
AutoInstallE="%pa%ProPlus.ww\invisible.xml /adminfile ProPlus.ww\weo.MSP"


; -aiv - Visio Professional
AutoInstallv="%unpack%"
AutoInstallv="hidcon:cmd /c if exist VisPro.ww start /wait setup.exe /config VisPro.ww\visible.xml"
AutoInstallV="%unpack%"
AutoInstallV="hidcon:cmd /c if exist VisPro.ww start /wait setup.exe /config VisPro.ww\invisible.xml"

; -aij - Project Professional
AutoInstallj="%unpack%"
AutoInstallj="hidcon:cmd /c if exist prjpro.ww start /wait setup.exe /config prjpro.ww\visible.xml"
AutoInstallJ="%unpack%"
AutoInstallJ="hidcon:cmd /c if exist prjpro.ww start /wait setup.exe /config prjpro.ww\invisible.xml"

; -aid - SharePoint Designer
AutoInstalld="%unpack%"
AutoInstalld="hidcon:cmd /c if exist sharepointdesigner.ww start /wait setup.exe /config sharepointdesigner.ww\visible.xml"
AutoInstallD="%unpack%"
AutoInstallD="hidcon:cmd /c if exist sharepointdesigner.ww start /wait setup.exe /config sharepointdesigner.ww\invisible.xml"


HelpText="Основные ключи:
-ais = полная версия ProPlus*
    ИЛИ       
-aiw = Word+Excel*
-aie = Word+Excel+Outlook*
-aip = Word+Excel+PowerPoint*
-aio = Word+Excel+PowerPoint+Outlook*

+ В случае наличия рядом файла репака
VisPro_Project_SPD_%Vers%_RePack.exe :
-aiv = MS Office VisPro Professional*
-aij = MS Office Project Professional*
-aid = MS Office SharePoint Designer*

*    = Чувствительно к регистру, например:
-aie = ВИДИМАЯ установка Word+Excel+Outlook
-aiE = СКРЫТАЯ установка Word+Excel+Outlook

Дополнительные ключи:
-gm2 = скрыть диалог распаковки файлов

Примеры использования
-ais        = видимая установка полной версии
-aiS -gm2 = скрытая установка полной версии
-aiw        = видимая установка Word + Excel
"
Delete="%Temp%\\%Vers%"

;!@InstallEnd@!



как проверить в чем косяк

gora 24-01-2013 15:08 2073983

Цитата:

Цитата specialist
испытываю странную проблему »

Проблема в cmd строке. В том, что она не соответствует задуманной Вами логике, а выполняет именно то, что в ней написано.
Для выполнения задуманного нужно каждое условие заключить в отдельный блок, примерно так:
Код:

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)"
Цитата:

Цитата specialist
можно ли как то реализовать в конфиге команду на запуск выполняющуюся при любом из запусков »

Нельзя.
Но можно повесить эту команду на отдельный ключ, сделав, например:
Код:

AutoInstall0="%unpack%"
И дописывать этот ключ в команды запуска:
Цитата:

-ai0w = Word+Excel*
-ai0e = Word+Excel+Outlook*
-ai0p = Word+Excel+PowerPoint*
-ai0o = Word+Excel+PowerPoint+Outlook*
Не пренебрегайте заглавными буквами в начале предложений при написании постов, читать Ваш текст затруднительно.

specialist 24-01-2013 16:33 2074040

gora, в очередной раз огромное спасибо за помощь, теперь все заработало так, как задумывалось.

popt2t 30-01-2013 01:09 2078205

Приведите пожалуйста пример файла конфигурации с определение разрядности системы и автоматической установки необходимого приложения.

alert30 31-01-2013 18:28 2079528

popt2t, ну к примеру, в теме аддона LibreOffice, Apache OpenOffice и InfraResurs пользователь ks7715 аттачил пример батников и автоустановки (там MSI, но IS и NSIS тоже наверняка успешно повезет) программ: http://forum.oszone.net/post-1950387-962.html

Там только батники, можете попробовать копипастить в config-файле по каждой команде.

popt2t 01-02-2013 10:19 2079922

alert30, это немного не то. Да и не охота возиться с батниками. По идеи все можно реализовать непосредственно через сам файл конфигурации, как например сделано в аддоне WinRAR от gora. Но как это сделать я не знаю. Вот и решил здесь спросить.

alert30 01-02-2013 12:42 2080055

popt2t, http://forum.oszone.net/post-1908642.html#post1908642

sov44 06-02-2013 14:22 2083675

Проблема в том, что после тихой установки Your Uninstaller происходит её автоматический запуск. Пробовал убить процесс после установки, и удалить директорию из "c:\Documents and Settings\All Users\Главное меню\Программы\Your Uninstaller! 7", но не получается. Подскажите, в чем ошибка?
Код:

RunProgram="hidcon:no_upd.cmd"
RunProgram="%%P:hidcon:cmd /c yusetup7p.exe /VERYSILENT /SUPPRESSMSGBOXES /NORESTART /SP-"
RunProgram="%%P:hidcon:cmd /c TASKKILL /F /IM urmain.exe"
RunProgram="%%P:hidcon:cmd /c del /q \"%SfxFolder23%\Your Uninstaller! 7\""
RunProgram="fm5:hidcon:cmd /c Move %NameInf% %WINDIR%\\INF"
RunProgram="rundll32 advpack,LaunchINFSection %NameInf%,DefaultInstall,0"


popt2t 06-02-2013 14:57 2083702

Можно ли для параметра AutoInstallX использовать буквенно-циферный идентификатор? Например AutoInstallX32.

gora 06-02-2013 15:00 2083704

Цитата:

Цитата popt2t
буквенно-циферный идентификатор »

Нет, нельзя. Литера должна быть только одна.
Цитата:

X - литера варианта. В качестве литеры X допустимы [0...9], [A...Z], [a...z].

popt2t 06-02-2013 15:20 2083720

Цитата:

Цитата gora
Нет, нельзя. Литера должна быть только одна. »

Спасибо за скорый ответ. Я так и предполагал, но решил спросить здесь для уверенности.

specialist 06-02-2013 17:53 2083831

Цитата:

Цитата popt2t
Можно ли для параметра AutoInstallX использовать буквенно-циферный идентификатор? Например AutoInstallX32. »

но можно вероятно приколоться и наделать пустых действий на установку или разбить существующие действия по
AutoInstallX=
AutoInstall3=
AutoInstall2=
а потом запускать инсталлятор .exe /aiX32
:)

nakula 06-02-2013 23:31 2084091

Ребята здравствуйте, подскажите пожалуйста такую вещь, как реализовать в самораспаковающем архиве такую вещь:
Например в InnoSetup создается инсталлятор, при его запуске в конце, когда установилась прога, запускается вызов sfx модуля. Вот тут проблема в чем? Самораспаковывающий архив в тихом режиме должен распаковать свое содержимое, но зная куда пользователь поставил инсталлятором так сказать свою программу, путь полный, например это может быть любой диск\Программа\ и вот в папку программы sfx и должен выгрузить свои файлы. Есть ли команды, какие пути абсолютные или другие прописывать и какими ключами необходимо пользоваться? Надеюсь описал доступно и понятным языком. Не могу создать такой интеллектуальный самораспаковывающийся архив, который бы знал куда доставлять необходимые дополнительные файлы в программу, умел бы находить путь, а именно диск и папку, куда юзер установить решил программу.
Спасибо. Опишите хоть метод или надо батник какой дополнительный писать, но может есть возможность указать какие либо строки и команды при создании sfx? В общем намекните алгоритм.

gora 08-02-2013 11:39 2085204

nakula, возможны три варианта решения задачи (т.к. конкретных названий программы и ее путей не указано, будет все делать на примере программы "Punto Switcher ":
1 Заранее прописать путь распаковки в конфиге SFX:
Код:

InstallPath="c:\\Program Files (x86)\\Yandex\\Punto Switcher"
2 Если заранее путь неизвестен, но известен на момент запуска SFX, то будем использовать ключ для запуска SFX:
Код:

sfx.exe -InstallPath="c:\\Program Files (x86)\\Yandex\\Punto Switcher"
Вариант 2 можно использовать одновременно с вариантом 1. Тогда при отсутствии ключа установка будет происходить по "умолчальному" пути, а, в случае необходимости, этот путь можно изменить на другой ключом.

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"
SFX будет искать указанный файл на всех дисках в папках любой глубины вложенности и как только найдет его, то скопирует все содержимое своего архива в указанную папку Punto Switcher с сохранением всей структуры папок и файлов в архиве. После этого поиск прекратится. Если на разных дисках или в разных папках будут установлены другие копии программы Punto Switcher с искомым файлом, они будут проигнорированы, ибо SFX не может знать в какою именно копию программы нужно произвести распаковку.

nakula 08-02-2013 17:03 2085662

gora
Огромная благодарность. Ваше объяснение доступно для понимание и разжевано в деталях. Очень полезно и информативно. Я давно искал метод решения и вы, очень помогли. Полезное пояснение не только для меня одного, надеюсь. Еще раз, спасибо, буду пробовать. ) Отпишусь позже!

ZoRRo1 22-02-2013 21:13 2096942

можете пожалуйста помочь с наработоспособным конфигом? ))) нужно для 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\"")
которая заносит в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce параметр REG_SZ с именем 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"
если её переделываю в конфиг по всем правилам (которые прописаны в хелпе по модифицированным модулям), то не работает )) (похоже из-за экранизации скобочек, т.к. команда нормально работает в x86, само собой с другими путями)
Код:

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"
з.ы. : нужна именно одна команда (батник не устроит), причём рабочая )))

gora 22-02-2013 22:29 2097006

Код:

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"

ZoRRo1 23-02-2013 10:01 2097196

gora, спасибо огромное! всё работает :up
а в чем именно заключалась моя ошибка? (ну, кроме необязательных слэшекавычек вокруг пути реестра)
а то скобочки там как раз должны были быть ))) (хотя без усложнения этой команды они там и необязательны)

ZoRRo1 27-02-2013 18:59 2100503

gora, не то, чтобы я вас тороплю, но может вы просто пропустили оповещение о моём предыдущем сообщении? :hi:

gora 27-02-2013 20:22 2100558

Цитата:

Цитата ZoRRo1
кроме необязательных слэшекавычек вокруг пути реестра »

1 Кавычки и слеши расставляет SetTools и они здесь не мешают, хотя, при большом желании укоротить строку, можно и убрать.
Цитата:

Цитата ZoRRo1
скобочки там как раз должны были быть »

2 Необязательно. Я не стал заключать одну команду после условия в блок. Команда сама содержит скобки, а скобки в блоке - это лишняя головная боль.
3 Для экранирования скобок в команде в данном случае достаточно одного знака "^", два уже лишку (они экранируют сами себя)
4 Добавил в конце команды Reg Add ключ /f.

Конфиг проверен перед выкладыванием и работает (после перезагрузки батник запускается).

ZoRRo1 27-02-2013 21:32 2100603

Цитата:

Цитата gora
они экранируют сами себя »

вот про это я не знал... хотя при 3-ёх экранах все работало, правда не так, как надо, но правильно (занося в реестр то, что и должно было занести) :sorry:
нда, с командной строкой нелегко совладать )))
ну и еще вопросик, но уже не совсем по теме (но в том же контексте команды конфига) - получается, что даже при усложнении (команды конфига в целом) не обязательно заключать подкоманду в блок?

gora 27-02-2013 21:43 2100617

Цитата:

Цитата ZoRRo1
получается, что даже при усложнении (команды конфига в целом) не обязательно заключать подкоманду в блок? »

Это из синтаксиса батников, у нас по ним есть специальный форум, где можно получить любую консультацию от специалистов.
Блоки нужно использовать там, где в них есть необходимость, а где можно обойтись без них, там лучше их избегать. Пример необходимого использования блоков: посты 165, 166.

ZoRRo1 27-02-2013 22:06 2100632

gora, а есть вообще способы узнать, что за ошибку выдаёт команда в конфиге при запуске?
про перенаправление вывода я знаю, но в конфиге (в командной строке всё нормально) у меня это почему-то не работает (если указать перед последней кавычкой и после всей основной команды)
Код:

> \"%%S\\1.txt\"
собственно интересует, почему не работает вышеназванный вывод, и какими методами определения ошибок бат-команд в конфиге пользуетесь/пользовались вы ))

gora 28-02-2013 12:36 2101013

Цитата:

Цитата ZoRRo1
какими методами определения ошибок бат-команд в конфиге пользуетесь/пользовались вы »

Удаляю префикс hidcon в строке и меняю ключ запуска cmd /c на cmd /k. При запуске видно окно консоли и видны ошибки, если они есть, в тестируемой строке.
Код:

RunProgram="%%P:cmd /k ......

ZoRRo1 28-02-2013 12:51 2101026

Цитата:

Цитата gora
меняю ключ запуска cmd /c на cmd /k »

О! Про это я забыл, исправлюсь :sorry: :wink: . Может в FAQ добавить, чтобы и другие помнили? )))
Ещё раз Огромное Спасибо :yes:

ZoRRo1 28-02-2013 14:50 2101116

(проблема решена, см. ниже)
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\""
;
;пауза для проверки успешности копирования в папку распаковки
RunProgram="cmd /c pause"
;!@InstallEnd@!

проблему решил (посмотрел на похожее построение в вашем конфиге для 7-Zip 9.20 Final) - лишний знак % перед названием переменной d, т.к. в командной строке при использовании команды FOR нужен только один знак %, а в командном файле - уже два ))

правильно получилось так:
Код:

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\""

Fortress1 28-03-2013 08:45 2120496

Доброго утра всем! Вопрос такой - что я делаю неправильно - когда запускаю репак какой -либо программы сделанный на основе 7z SFX выдается ошибка "не является приложением вин32"? Заранее благодарю

gora 28-03-2013 09:03 2120504

Fortress1
1 Приведите скриншот ошибки
2 Дайте ссылку на этот
Цитата:

Цитата Fortress1
репак какой -либо программы »

Этот репак не должен содержать вареза, ибо здесь он запрещен.
3 Возможная причина состоит в том, что этот SFX сделан специально для х64 систем и в нем использован х64 модуль. В этом случае x86 система (а не модуль) выдает подобное сообщение об ошибке.

sov44 10-04-2013 09:38 2129536

Немного забуксовал с командой xcopy. Классическое файл или папка, как исправить?
Код:

RunProgram="fm5:cmd /c xcopy /y /n \"Program Options.xml\" \"%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6\""

specialist 10-04-2013 09:55 2129552

sov44, если нужно скопировать не каталог, а простой файл - имхо проще воспользоваться командой copy /y

sov44 10-04-2013 10:06 2129564

Необходимо создать структуру каталогов и скопировать туда файл Program Options.xml, потому и xcopy.

specialist 10-04-2013 10:21 2129583

Код:

RunProgram="fm5:hidcon:cmd /c md \"%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6\" & copy /y \"Program Options.xml\" \"%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6\""

бУРов 10-04-2013 10:39 2129597

Может быть как-то вот так?
Код:

ROBOCOPY "%ALLUSERSPROFILE%\\Martau\\Total Uninstall 6" <destination> "Program Options.xml" /S

sov44 26-06-2013 12:09 2174580

задача: если установлена 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%\")"

ошибка - http://savepic.org/3768911.jpg

gora 26-06-2013 12:25 2174592

Удалите лишние кавычки в строке (веделил цветом)
Код:

RunProgram="hidcon:cmd /c Ver | Find \""6.1"\" >Nul && (md \"%w7%\"& move \y \"%%T\\picpick.ini\" \"%w7%\")"

timon45 21-07-2013 18:48 2188257

Как удалить папку (defaults) после распаковки (по пути ...\core\browser\defaults) внутри архива.
Нашел 3 варианта но что то не срабатывает
Код:

AutoInstall="hidcon:cmd /c del \\core\\browser\\defaults /q"
AutoInstall="hidcon:cmd /c Echo RD /s /q %2 >>..\\core\\browser\\defaults"
AutoInstall="hidcon:cmd /c RD /S /Q \\core\\browser\\defaults"


specialist 21-07-2013 21:09 2188315

timon45, попробуй
AutoInstall="hidcon:cmd /c rd /s /q \"%%T\\core\\browser\\defaults\""

gora 21-07-2013 21:19 2188318

Цитата:

Цитата timon45
Как удалить папку (defaults) после распаковки (по пути ...\core\browser\defaults) внутри архива. »

Должно удалить это (если путь без пробелов):
Код:

AutoInstall="hidcon:cmd /c RD /S /Q core\\browser\\defaults"

timon45 21-07-2013 21:22 2188319

specialist, gora не удаляет.

dee.jack 09-08-2013 08:44 2198842

Такой вопрос, имеется файл конфигурации:
;!@Install@!UTF-8!
Title="Extract"
RunProgram="setup.exe"
;!@InstallEnd@!
как правильно прописать в файле конф. чтоб запустился х64-х битный установщик(модуль). Именно чтоб он работал в 64-х битном режиме, знаю что есть переменные %SfxVarSystemPlatform% и %SfxVarModulePlatform%,
но до конца не понимаю как прописать, и может ли СФЭкс работать в 64 битном режиме. Или эти переменные могут лишь давать запрет на распаковку не в той среде?

P.S.

И еще касательно этого:
Цитата:

Цитата gora
о разных утилитах regedit (x86\x64), присутствующих в x64 системах »

Можно ли применить с помощью SFX reg файл, чтоб сработал 64-х битный regedit.

Limonica 10-08-2013 20:57 2199609

Ребят, а в конфиге можно сделать логичную установку, например:
Код:

cmd /c ver
cmd /c pause

Что бы обе команды выводились в одно консольное окно, в дальнейшем это определение версии Windows и раздельная установка...

sov44 10-08-2013 21:07 2199612

Limonica, можно.
Строчка из конфига picpick
Код:

RunProgram="hidcon:cmd /c Ver | Find \"6.1\" >nul && (md \"%SFXfolder26%\\picpick\"& move /y \"%%T\\picpick.ini\" \"%SFXfolder26%\\picpick\" >nul)"

Limonica 10-08-2013 21:41 2199622

Не катит такой вариант, слишком длинная строка будет, более 5000 тысяч символов, а в ХР на такое ошибка.

nibble74 09-10-2013 12:13 2231260

gora, заметил такую особенность на windows 8, при запуске SFX архива выдаёт ошибку, что файл не является 7z архивом. Причём такое происходит не на всех созданных кнопкой инсталляторах. Пробовал разные методы сжатия результат тот-же. На XP и W7 эти архивы работают. Скажите, в чём загвоздка.

Рабочие


Эти не работают

vahe-91 09-10-2013 12:38 2231272

Цитата:

Цитата nibble74
заметил такую особенность на windows 8, при запуске SFX архива выдаёт ошибку »

Когда ставил свой репак на SFX архиве в Windows 8, на некоторых работало, на других ошибка :dont-know
SFX-и сделанные не кнопкой работают везде без проблем.

gora 11-10-2013 16:30 2232733

Цитата:

Цитата nibble74
заметил такую особенность на windows 8, при запуске SFX архива выдаёт ошибку, что файл не является 7z архивом. »

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

МИШАНЧИК 12-10-2013 14:28 2233160

Подскажите пожалуйста. Стоит кис 2013, сегодня появилась проблема, при создании архива с помощью кнопки выскакивает ошибка:

Если же касперского отключить, то архив собирается без проблем. Пробовал добавить Button.exe и всю папку SFX Tool в исключения-проблему не решило. Раньше такого не было.
Прошу прощения если нужно было писать в тему по касперскому.

Oracle2k 14-12-2013 15:25 2272368

Необходимо сделать раздельную установку в зависимости от прав пользователя (user,admin). Подскажите как реализовать, не прибегая к bat файлам?

Для полноты картины приведу пример:
Код:

-------------------------------------------------------------------------------
Detection Privileges OS
-------------------------------------------------------------------------------
AT > NUL
IF %ERRORLEVEL% EQU 0 (
    ECHO you are Administrator
) ELSE (
    ECHO you are NOT Administrator. Exiting...
    PING 127.0.0.1 > NUL 2>&1
    EXIT /B 1
)


The_Immortal 07-02-2014 01:34 2304501

Друзья, подскажите, пожалуйста, как прекратить установку в случае, если разрядность ОС x86?

Не могу сообразить, как это оформить в конфигурационном файле...


Спасибо!


И еще, быть может, кто-нибудь подскажет, почему данный простецкий код:

Код:

;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c echo Hello"
;!@InstallEnd@!

В cmd ничего не выводит? При запуске сформированного exe-шника по вышеуказанному конфигурационному файлу, разумеется.

popt2t 07-02-2014 11:57 2304698

Цитата:

Цитата The_Immortal
И еще, быть может, кто-нибудь подскажет, почему данный простецкий код:
Код:
;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c echo Hello"
;!@InstallEnd@!
В cmd ничего не выводит? При запуске сформированного exe-шника по вышеуказанному конфигурационному файлу, разумеется. »

Из-за hidcon:. Этот префикс скрывает окно командной строки.

Iska 07-02-2014 12:02 2304700

The_Immortal, используйте «msg.exe».

The_Immortal 07-02-2014 13:02 2304741

Цитата:

Цитата The_Immortal
Друзья, подскажите, пожалуйста, как прекратить установку в случае, если разрядность ОС x86? »

Пытаюсь сделать это следующим образом:

Код:

;!@Install@!UTF-8:x86!
Progress="no"
RunProgram="cmd /c echo Unsupported OS (x86)"
;!@InstallEnd@:x86!

...

Как сделать, чтобы сообщение выводилось в той cmd, где запускается exe? Просто в варианте
Цитата:

RunProgram="cmd /c echo Unsupported OS (x86)"
- сообщение выскакивает в отдельном окне...

Пример того, что я хочу увидеть при запуске sfx-архива из-под CMD на 86-разрядной ОС:
Код:

C:\Users\The_Immortal>program.exe
Unsupported OS (x86)

C:\Users\The_Immortal>

Iska,
Цитата:

Цитата Iska
используйте «msg.exe». »

Увы, это немного не то, что мне надо...

gora 07-02-2014 13:30 2304754

Цитата:

Цитата The_Immortal
что я хочу увидеть »

Не увидите. Модуль ни чего в консоль не пишет и не передает.

Iska 07-02-2014 14:06 2304776

Цитата:

Цитата The_Immortal
Как сделать, чтобы сообщение выводилось в той cmd, где запускается exe? »

Во-первых, это не «cmd», а окно консоли, как я сужу с Ваших слов. Чтобы сделать вывод в него, Вам нужно написать своё приложение, которое будет:

а) искать при запуске своего родителя;
б) делать (возможно) detach от своей консоли;
в) делать attach к консоли родительского процесса (если она есть)
г) осуществлять вывод в присоединённую ранее консоль
д) делать detach присоединённой ранее консоли и завершать свою работу.

Цитата:

Цитата gora
Модуль ни чего в консоль не пишет и не передает. »

Так там вообще консоли нет, и коллега The_Immortal что-то:
Цитата:

Цитата The_Immortal
Код:

C:\Users\The_Immortal>program.exe
Unsupported OS (x86)

C:\Users\The_Immortal>

»

не так понял?!

Valerkan 09-02-2014 18:58 2306097

После распаковки SFX-архива в временной папке у нас есть файл Proga.exe, который нужно
запустить или не запускать в зависимости от реестра. Вот такая запись пишется в реестр
если установить файл Proga.exe, который находится внутри SFX-архива:
Код:

RunProgram="hidcon:Reg Add \"HKCU\\Software\\Proga\" /v \"InstallPath\" /t REG_SZ /d \"C:\\Program Files\\Proga\" /f"
Так вот при первом запуске SFX-архива такой записи в реестре может и не быть, если этой
записи в реестре нет или имеет любое другое значение, нужно запустить файл Proga.exe,
если значение равно "C:\Program Files\Proga", то Proga.exe запускать не надо. Я думаю
как то так сделать:
RunProgram="hidcon:cmd /c (Если значения "C:\Program Files\Proga" в реестре нет, то
запустить файл Proga.exe)" В скобочках нужно заменить на правильное решение. Получается
если такая запись "C:\Program Files\Proga" в реестре есть ничего устанавливаться
не будет, если такой записи нет или имеется другая запись, то программа будет
устанавливаться опять, что мне и нужно. Как в конфиге сделать проверку в реестре?
Проверять нужно только в реестре. Надеюсь понятно выложил суть проблемы.

Amigos 09-02-2014 19:29 2306112

Цитата:

Цитата Valerkan
есть файл Proga.exe, который нужно
запустить или не запускать в зависимости от реестра. »

пишешь батник, который проверяет реестр, и в зависимости от результатов проверки запускает/не запускает программу.
батник пихается в архив вместе с программой, в конфиге прописывается запуск батника.

Valerkan 09-02-2014 19:41 2306123

Цитата:

Цитата Amigos
пишешь батник, который проверяет реестр, и в зависимости от результатов проверки запускает/не запускает программу.
батник пихается в архив вместе с программой, в конфиге прописывается запуск батника. »

Только вот я не знаю какая команда проверяет реестр и как правильно батник написать.

nibble74 10-02-2014 02:30 2306325

Valerkan

батник должен находиться в папке с Prog.exe

читать дальше »
Код:

@echo off
set verif=NOT значение
REG QUERY "путь в реестре" /v параметр | find "значение"
if "%ERRORLEVEL%" == "0" set verif=значение

if "%verif%" == "значение" (
        exit
)

echo NOT значение
"%~dp0Prog.exe"
exit



или

читать дальше »
Код:

REG QUERY "путь в реестре" /v параметр | find "значение"
if "%ERRORLEVEL%" == "0" (goto:2) else (goto:1)
:1
"%~dp0Prog.exe"
exit
:2
exit


Valerkan 10-02-2014 13:35 2306490

Цитата:

Цитата nibble74
батник должен находиться в папке с Prog.exe »

В батник подставил свои значения, оба варианта работают.

nfs911 19-02-2014 22:09 2312086

Вопрос:
Вот типичный архив - модуль+конфиг+архив=exe который можно открыть архиватором
а можно ли поставить пароль на архив,при этом запуская exe без пароля

gora 19-02-2014 22:24 2312095

nfs911, ответ звучал уже много раз и даже добавлен в шапку в FAQ пункт2 ну и последний ответ Олега.

Metabolic 27-02-2014 22:42 2316951

Знатоки подскажите! У меня есть 2-ва разных *.exe (1-й x86, 2-й x64) файла которые я хочу запаковать в 7z SFX. Мне необходимо составить файл конфигурации - чтоб эти 2 файла в тихом режиме распаковывались во временную папку temp и на операционной системе любой разрядности автоматически запускался нужный file.exe и все! (далее инсталляция будет проходить по средствам вложенного исполняемого файла)
И по завершению процесса установки - необходимо чтоб распакованные в папку temp файлы удалялись.

gora 27-02-2014 23:29 2316989

Metabolic

Код:

;!@Install@!UTF-8!
SetEnvironment="Name=7-Zip [%%P]"
Title="Установка %Name%"
BeginPrompt="Сейчас будет установлен %Name%"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
FinishMessage="%Name% установлен!"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"

RunProgram="x86:setup_x32.exe"
RunProgram="x64:setup_x64.exe"

;!@InstallEnd@!


Metabolic 27-02-2014 23:55 2317004

gora Спасибо! проверил работает - единственное я просил распаковку в тихом режиме без всяких окон вначале и в конце, ну с этим попробую сам разобраться!

Metabolic 28-02-2014 15:29 2317276

А можно сделать так чтоб в распакованном и запущенном *.exe инсталляторе в окне выбора каталога установки модуль - 7z SFX архива автоматически подставлял вместо "Program Files" значение "Program Files (x86)" на системах x64? (просто сам инсталлятор не поддерживает переменную - %PROGRAMFILES% и не может определить тип системы).
И ещё такой вопрос - можно ли скрыть процесс самого архива 7z SFX.exe чтоб он не фигурировал в процессах одновременно с запущенным распакованным файлом?

Amigos 28-02-2014 19:22 2317430

Цитата:

Цитата Metabolic
автоматически подставлял вместо "Program Files" значение "Program Files (x86)" на системах x64? »

если инсталлятор 32битный, то так само будет



посмотрите - если cmd запущен "сам по себе" то %PROGRAMFILES% указывает на c:\Program Files
а если cmd запустить из-под 32 битного тотала, то уже на c:\Program Files (x86)

Metabolic 28-02-2014 21:45 2317493

"Amigos" вы не так поняли! - я создаю 7z SFX.exe который в тихом режиме распаковывает в папку temp установочный файл (*.exe) (который я в него запаковал) и запускает его. Но этот установочный файл (*.exe) не понимает что такое x32 и x64! в нем просто прописано C:\Program Files\.... (и на системе x64 он пишет тоже самое, хотя должен писать C:\Program Files (x86)...).
Вот я и спрашиваю - можно ли осуществить подстановку значения "Program Files (x86)" на x64 в распакованном с 7z SFX.exe файле, который потом запускается?

gora 28-02-2014 21:53 2317499

Цитата:

Цитата Metabolic
в распакованном и запущенном *.exe инсталляторе в окне выбора каталога установки модуль - 7z SFX архива автоматически подставлял »

Модуль не может вводить нужные Вам значения в "чужие" окна (окна стороннего инсталлятора), он для этого не предназначен. Если этот инсталлятор не может различить х86\х64 системы и подставить в окно по умолчанию нужное значение, то это не вина модуля, а беда такого инсталлятора.

Metabolic 28-02-2014 22:16 2317513

Цитата:

Цитата gora
а беда такого инсталлятора.

- я это прекрасно понимаю, вот поэтому и спросил может быть что с помощью 7z SFX можно сделать.
теперь знаю что ничего нельзя сделать.
-у меня остался ещё один вопрос: "можно ли скрыть процесс самого архива 7z SFX.exe чтоб он не фигурировал в процессах одновременно с запущенным распакованным файлом"?

popt2t 01-03-2014 00:11 2317559

Цитата:

Цитата Metabolic
"можно ли скрыть процесс самого архива 7z SFX.exe чтоб он не фигурировал в процессах одновременно с запущенным распакованным файлом"? »

На сколько я понял, нет. Процесс будит висеть до завершения работы запущенного им файла. Самого ка-то интересовал этот вопрос. В принципе можно насильно скриптом убивать процесс по его имени. Но это как-то не правильно, ИМХО.

gora 22-03-2014 21:24 2327195

Цитата:

Цитата Metabolic
"можно ли скрыть процесс самого архива 7z SFX.exe чтоб он не фигурировал в процессах одновременно с запущенным распакованным файлом"? »

Можно не скрыть, а прекратить процесс SFX после запуска распакованных файлов. При этом процесс убивать не требуется, SFX завершит свою работу корректно. Достаточно использовать префикс nowait или forcenowait для запуска распакованных файлов.

Metabolic 23-03-2014 20:24 2327524

Цитата:

Цитата gora
Достаточно использовать префикс nowait или forcenowait для запуска распакованных файлов.

Спасибо, попробовал с префиксом "forcenowait" - получилось! НО есть маленький недостаток «По завершению операции распакованные файлы не удаляются из папки Temp» что не есть хорошо.

levjenia 07-05-2014 11:58 2348236

подскажите пожалуйста где взять "файл конфигурации" для создания sfx с помощью 7zip кнопки для тотала командера? Заранее спасибо!

Painkiller 07-05-2014 15:28 2348347

Цитата:

Цитата levjenia
подскажите пожалуйста где взять "файл конфигурации" для создания sfx с помощью 7zip кнопки для тотала командера? Заранее спасибо! »

Написать самому

Shift85 07-05-2014 15:41 2348354

Цитата:

Цитата levjenia
подскажите пожалуйста где взять "файл конфигурации" для создания sfx с помощью 7zip кнопки для тотала командера? Заранее спасибо! »

levjenia, http://7zsfx.info/ru/

Limonica 10-05-2014 15:46 2349627

7z не поддерживает архивы последней версии WinRar :(

Dean_Winchester 14-06-2014 20:11 2364074

Привет всем. Ребят, помогите пожалуйста, вопрос такой: добавил в sfx архив портативные программы, нужно чтобы при запуске программы, программа определяла виндовс, то есть если это виндовс хр то запускается файл допустим 1.ехе если нет до запускается файл допустим 2.ехе, как это правильно прописать в sfx архиве? Заранее огромное спасибо.

gora 14-06-2014 20:25 2364082

Цитата:

Цитата Dean_Winchester
виндовс хр то запускается файл допустим 1.ехе если нет до запускается файл допустим 2.ехе »

Попробуйте так:
Код:

;!@Install@!UTF-8!
; для Win XP
RunProgram="hidcon:cmd /c Ver | Find \"5.2\" >Nul && 1.ехе"
; для НЕ Win XP
RunProgram="hidcon:cmd /c Ver | Find \"5.2\" >Nul || 2.ехе"
;!@InstallEnd@!


Dean_Winchester 14-06-2014 20:33 2364087

Цитата:

Цитата gora
RunProgram="hidcon:cmd /c Ver | Find \"5.2\" >Nul || 2.ехе" »

да забыл если во втором случаем там 2 файла x32 и x64 то тогда как добавить еще чтобы и разрядность определял?
ага у меня получилось так
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 то запустить ее, а если нет, то распаковать и запустить... Спасибо Огромное за помощь.

gora 14-06-2014 21:09 2364094

Цитата:

Цитата Dean_Winchester
в sfx прописано что при запуске она распаковывается в %appdata% как сделать чтобы при следующем запуске, программа не распаковывала »

Такое сделать невозможно. Сначала распаковка, а уже потом все действия. Читайте п1 FAQ в шапке.

Dean_Winchester 02-07-2014 15:43 2371124

Ребят подскажите пожалуйста, как сделать, чтобы при установки программы 7zSFX ярлычок устанавливаемой программы закреплялся на панели задач и в меню пуск? То-есть как это прописать в config ?

Николй 07-07-2014 15:40 2373181

Вложений: 1
Доброе время суток
Подскажите пожалуйста как избавиться от перезагрузки компьютера после тихой установки программы

Config.txt

;!@Install@!UTF-8!
RunProgram="AdobePhotoshopCS6.exe /VERYSILENT"
RunProgram="stop.bat"
GUIMode="2"
;!@InstallEnd@!

у меня вот так написан config.
Какую еще нужно прописать команду чтобы компьютер не перезагружался?
Если не в этом файле то где необходимо это сделать?

Amigos 07-07-2014 15:44 2373183

Цитата:

Цитата Николй
как избавиться от перезагрузки компьютера после тихой установки программы »

найти ключ для AdobePhotoshopCS6.exe который отложит перезагрузку

Dean_Winchester 08-07-2014 22:20 2373856

Подскажите пожалуйста, у меня есть программа но на виндовс 8.1 она не устанавливается, а устанавливается только в режиме совместимости с виндовс 7, так вот хотел узнать, как прописать это в конфиге, чтобы программа устанавливалась в режиме совместимости с виндовс 7(желательно чтобы команда определяла что это виндовс 8 и если это 8ка то она выполняет ее в режими совместимости с 7? Спасибо огромное.

gora 08-07-2014 22:45 2373865

Dean_Winchester
Вопрос не имеет отношения к конфигам. Нет такого функционала у модуля и это ясно из справки, которую Вы должны были уже изучить.
Вам надо сначала решить задачу "чтобы программа устанавливалась в режиме совместимости с виндовс 7". Найдите возможность сделать это из батника \ vbs \ autoit и т.д. Это за Вас ни кто делать не будет. Потом это найденное решение (батник) запихните в архив и в конфиге пропишите его запуск. Получите что хотите.

Цитата:

Цитата Dean_Winchester
ярлычок устанавливаемой программы закреплялся на панели задач и в меню пуск? »

Это тоже не вопрос модуля. Эта проблема решается на VBS и решение есть [решено] Создание ярлыка с помощью VBS .

nibble74 31-07-2014 14:17 2383646

gora, Приветствую,

Возможно ли добавить параметр "type" который будет устанавливать ярлык exe-файла в папку "SendTo" ?

gora 31-07-2014 14:50 2383664

nibble74, да, возможно, пример:
Код:

; Ярлык в контекстном меню->Отправить
Shortcut1="09,{%%T\\UniExtract.exe},{},{},{},{%CMENU%},{%%T},{%%T\\UniExtract.exe}"


timon45 31-07-2014 15:14 2383678

Цитата:

Цитата Dean_Winchester
Подскажите пожалуйста, у меня есть программа но на виндовс 8.1 она не устанавливается, а устанавливается только в режиме совместимости с виндовс 7, так вот хотел узнать, как прописать это в конфиге, чтобы программа устанавливалась в режиме совместимости с виндовс 7(желательно чтобы команда определяла что это виндовс 8 и если это 8ка то она выполняет ее в режими совместимости с 7? Спасибо огромное. »

Всвое время тоже искал данный функцинал, и нашел выход как писал тебе gora, через VBS
Код:

RunProgram="hidcon:cmd /c Ver | Find \"6.\" >Nul && wscript.exe \"%%T\\runQ.vbs\""
runQ.vbs должен лежать внутри архива, команда будет игнорироваться при запуске на XP

sov44 09-09-2014 22:22 2400567

Нужно проверить наличие определённого файла, если не найден, прекращать исполнение sfx. Попробовал первой командой строку
Цитата:

RunProgram="hidcon:cmd /c \"if not exist \"c:\\1\\7ZSplit.exe\" rd /s /q \"%%T\"\""
однако последующие команды "сыплются" ошибками, что естественно, т.к. файлы удалены. Вариант писать в каждой команде if exist не радует. Есть ли идея в случае отсутствия файла в системе спокойно закончить sfx, "подтерев" за собой следы распаковки?

nibble74 10-09-2014 07:43 2400646

sov44, а чем в конфиге Delete= не устраивает ?

sov44 10-09-2014 08:00 2400648

Цитата:

Цитата nibble74
а чем в конфиге Delete= не устраивает ? »

Не прописать условие на проверку файла, только тупое удаление.

nibble74 10-09-2014 08:12 2400650

sov44, в таком случае лучше все команды в батник прописать, а в конфиге делете. Вариантов множество. Хотя посмотрим, что gora, скажет.

gora 10-09-2014 08:35 2400653

Цитата:

Цитата sov44
если не найден, прекращать исполнение sfx »

Команда RD не прекращает исполнение SFX, прекратить его можно командой TaskKill, но убирать мусор будет некому.
Цитата:

Цитата sov44
писать в каждой команде if exist не радует. »

Можно создать переменную и использовать ее много раз, это хоть немного, но скрасит конфиг.
Пример
Код:

;!@Install@!UTF-8!
SetEnvironment="Name=EmEditor Pro"
SetEnvironment="Vers= v14.5.900 Rus [%%P]"
;
SetEnvironment="PFx86=%ProgramFiles%\\EmEditor"
SetEnvironment="PFx64=%ProgramW6432%\\EmEditor"
;
SetEnvironment="pathfile=custompath.lst"
SetEnvironment="InputPathx86=x86:hidcon:cmd /c InputPath.exe -SetEnvironment=\"pathfile=%pathfile%\" -InstallPath=\"%PFx86:\\=\\\\%\" -ExtractPathTitle=\"Установка %Name% [x86\x64]\""
SetEnvironment="InputPathx64=x64:hidcon:cmd /c InputPath.exe -SetEnvironment=\"pathfile=%pathfile%\" -InstallPath=\"%PFx64:\\=\\\\%\" -ExtractPathTitle=\"Установка %Name% [x86\x64]\""
SetEnvironment="GetInstallPath=%%P:hidcon:cmd /c For /F \"usebackq delims=\" %a In (\"%pathfile%\") Do"
;
SetEnvironment="DelOldVer=%%P:hidcon:cmd /c For /F \"tokens=2 delims={}\" %a In ('Dir /b /s %windir%\\installer\\EmEditor*.exe 2^>Nul') Do MsiExec /x{%a}"
SetEnvironment="DelLang=%GetInstallPath% For %i In (1028 1029 1031 1036 1040 1041 1042 1043 1057 2052 2057 3082) Do (RD /S/Q \"%a\\mui\\%i\" \"%a\\PlugIns\\mui\\%i\")"
SetEnvironment="DelEula=%GetInstallPath% Del /Q \"%a\\eula_*.rtf\" \"%a\\PlugIns\\mui\\%i\""
SetEnvironment="CopyMacros=%GetInstallPath% xCopy \"My Macros\" \"%a\\My Macros\" /s /e /i /y"
SetEnvironment="swM_Folder=%GetInstallPath% Reg Add \"HKCU\\Software\\EmSoft\\EmEditor v3\\Common\" /v \"MacroFolder\" /t REG_SZ /d \"%a\\My Macros\" /f"
SetEnvironment="number_x86=64A899C7-1C64-40EE-814E-22757A8EACA8"
SetEnvironment="number_x64=F33C06EF-F3AC-40CC-9A28-77BD5FBE708E"
SetEnvironment="AutoUpdateOff=%%P:hidcon:Reg Add \"HKCU\\Software\\Caphyon\\Advanced Updater\\{%number_%%P%}\\Settings\" /v \"AutoUpdatePolicy\" /t REG_DWORD /d \"0x0\" /f"
SetEnvironment="reg=EmEditor.reg"
SetEnvironment="AddReg=%%P:hidcon:cmd /c If Exist \"%%S\\%reg%\" (REGEDIT /S \"%%S\\%reg%\") Else REGEDIT /S %reg%"
SetEnvironment="cmdline=TRANSFORMS=\":1049\" EXE_CMD_LINE=\"/exenoupdates /exelang 1049\""
;
Title="Установка %Name% [x86\x64]"
BeginPrompt="Сейчас будет установлен %Name%%Vers%

Если в системе будет обнаружена старая версия EmEditor, то
она будет удалена автоматически перед началом установки.

Нажав 'OK', удерживая [Shift], можно выбрать путь установки"
FinishMessage="%Name%%Vers% установлен!"
ExtractTitle="Распаковка файлов..."
ExtractDialogText="Придется подождать..."
; Простая установка
RunProgram="%InputPath%%P% -y"
RunProgram="%DelOldVer% /qb"
RunProgram="fm20:%GetInstallPath% emed_%%P\\emed_%%P.msi /qb APPDIR=\"%a\\\" %cmdline%"
RunProgram="%DelLang%"
RunProgram="%DelEula%"
RunProgram="%AutoUpdateOff%"
; Настройки
RunProgram="%AddReg%"
RunProgram="%CopyMacros%"
RunProgram="%swM_Folder%"
;
; Установка с выбором папки установки
AutoInstall="%InputPath%%P%"
AutoInstall="%DelOldVer% /qb"
AutoInstall="fm20:%GetInstallPath% emed_%%P\\emed_%%P.msi /qb APPDIR=\"%a\\\" %cmdline%"
AutoInstall="%DelLang%"
AutoInstall="%DelEula%"
AutoInstall="%AutoUpdateOff%"
; Настройки
AutoInstall="%AddReg%"
AutoInstall="%CopyMacros%"
AutoInstall="%swM_Folder%"
;
; Скрытая установка
AutoInstall1="%InputPath%%P% -y"
AutoInstall1="%DelOldVer% /qn"
AutoInstall1="%GetInstallPath% emed_%%P\\emed_%%P.msi /qn APPDIR=\"%a\\\" %cmdline%"
AutoInstall1="%DelLang%"
AutoInstall1="%DelEula%"
AutoInstall1="%AutoUpdateOff%"
; Настройки
AutoInstall1="%AddReg%"
AutoInstall1="%CopyMacros%"
AutoInstall1="%swM_Folder%"
;
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"
SfxAuthor="gora-sah <gora@7zsfx.info>"
;!@InstallEnd@!


Цитата:

Цитата nibble74
лучше все команды в батник прописать »

Вполне резонное предложение.

sov44 09-10-2014 10:06 2412941

Нужно найти определённую программу через батник (по хитрому, exist не катит) и присвоить переменной путь до этой программы. Затем создать ярлык на рабочем столе для запуска этой программы. Экспериментировал, но путь в ярлыке не раскрылся.
батник 1.cmd
Код:

"set pt=d:\1\name.exe"
файл конфигурации
Цитата:

;!@Install@!UTF-8!
Title="бла-бла"
BeginPrompt="Создать на рабочем столе ярлык на запуск бла-бла?"
FinishMessage="Ярлык создан!"
GUIFlags="2+4+8+16+32+2048"
MiscFlags="4"
GUIMode="1"
RunProgram="%%P:hidcon:cmd /c \"\"%%T\\1.cmd\"\""
SetEnvironment="put=%pt%"
Shortcut="Du,{%put%\\hidcon_%%P.exe},{\"%put%\\1.cmd\"},{},{Запуск с повышенными правами},{бла-бла},{тоже что-то},{0}"
;!@InstallEnd@!

gora 09-10-2014 10:15 2412942

sov44, вернуть переменную %pt% из батника в конфиг невозможно. Модуль не видит переменных в дочерних процессах и не может их использовать. :(

PS Но переменные из родительского процесса модуль видит и это можно использовать.
Код:

set pt=d:\1\name.exe
Start "" sfx.exe


sov44 09-10-2014 11:10 2412982

Цитата:

Цитата gora
PS Но переменные из родительского процесса модуль видит и это можно использовать. »

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

gora 09-10-2014 11:48 2412993

Цитата:

Цитата sov44
как повторно запустив самого себя можно создать ярлык на рабочем столе с переменной. »

Конфиг:
Код:

;!@Install@!UTF-8!
; переменная с полным путем к SFX
; используется в батнике для рекурсивного запуска
SetEnvironment="pSFX=%%S\\%%M"

SetEnvironment="put=%pt%"
Title="бла-бла"
BeginPrompt="Создать на рабочем столе ярлык на запуск бла-бла?"
FinishMessage="Ярлык создан!"
GUIFlags="2+4+8+16+32+2048"
MiscFlags="4"
GUIMode="1"
RunProgram="%%P:1.cmd"
; при рекурсивном запуске будет использоваться AutoInstall1 и соответствующий параметр Shortcut1
AutoInstall1="hidcon:cmd /c Echo"
Shortcut1="Du,{%put%\\hidcon_%%P.exe},{\"%put%\\1.cmd\"},{},{Запуск с повышенными правами},{бла-бла},{тоже что-то},{0}"
;!@InstallEnd@!

Батник:
Код:

:: Создаем переменную pt и запускаем рекурсивно SFX
:: в этом случае модуль сможет прочитать переменную pt из родительского процесса (батник в данном случае)
:: переменную можно было передать SFX и через ком строку из батника, но нас интересует передача через рабочую среду.
set pt=x:\1
"%pSFX%" -ai1 -fm0


sov44 13-10-2014 14:04 2414658

В продолжение темы. Появилось потребность перенести содержимое sfx из временной папки, куда распаковывается, на новое место, определённое AutoInstall1. Через переменную %%T что-то не получается.
Код:

;!@Install@!UTF-8!
; переменная с полным путем к SFX
; используется в батнике для рекурсивного запуска
SetEnvironment="pSFX=%%S\\%%M"

SetEnvironment="put=%pt%"
Title="бла-бла"
BeginPrompt="Создать на рабочем столе ярлык на запуск бла-бла?"
FinishMessage="Ярлык создан!"
GUIFlags="2+4+8+16+32+2048"
MiscFlags="4"
GUIMode="1"
RunProgram="%%P:1.cmd"
; при рекурсивном запуске будет использоваться AutoInstall1 и соответствующий параметр Shortcut1
AutoInstall1="hidcon:cmd /c Echo"
SetEnvironment="put=%pt%"
AutoInstall1=%%P:hidcon:cmd /c move /y \"%%T\" \"%put%\"
Shortcut1="Du,{%put%\\hidcon_%%P.exe},{\"%put%\\1.cmd\"},{},{Запуск с повышенными правами},{бла-бла},{тоже что-то},{0}"
;!@InstallEnd@!


gora 13-10-2014 14:57 2414678

Цитата:

Цитата sov44
что-то не получается. »

Что именно не получается можно посмотреть:
Код:

AutoInstall1=%%P:cmd /k move /y \"%%T\" \"%put%\"
Учтите также следующее: Move перемещает файл/файлы, но не папку. Папку она только переименовывает. Подробнее Move /?

Iska 13-10-2014 15:18 2414692

Цитата:

Цитата gora
Учтите также следующее: Move перемещает файл/файлы, но не папку. Папку она только переименовывает. Подробнее Move /? »

Э… это не совсем так:
читать дальше »
Код:

╔═════════════════ E:\Песочница\0401\01 ══╤════════╤═════╗╔═════════════════ E:\Песочница\0401\02 ══╤════════╤═15:15
║и              Имя                │Размер│  Дата  │Время║║и              Имя                │Размер│  Дата  │Время║
║⌂..                              │ Вверх│13.10.14│15:15║║⌂..                              │ Вверх│13.10.14│15:15║
║├03                              │ Папка│13.10.14│15:14║║                                  │      │        │    ║
║                                  │      │        │    ║║                                  │      │        │    ║

║                                  │      │        │    ║║                                  │      │        │    ║
╟──────────────────────────────────┴──────┴────────┴─────╢╟──────────────────────────────────┴──────┴────────┴─────╢
║⌂..                                                    ║║⌂..                                                    ║
╚════════════════ 0 (0) ═══ 492,908,544 ═════════════════╝╚════════════════ 0 (0) ═══ 492,908,544 ═════════════════╝

E:\Песочница\0401\01>@move E:\Песочница\0401\01\03 E:\Песочница\0401\02\                                          ↑

Код:

╔═════════════════ E:\Песочница\0401\01 ══╤════════╤═════╗╔═════════════════ E:\Песочница\0401\02 ══╤════════╤═15:16
║и              Имя                │Размер│  Дата  │Время║║и              Имя                │Размер│  Дата  │Время║
║⌂..                              │ Вверх│13.10.14│15:16║║⌂..                              │ Вверх│13.10.14│15:16║
║                                  │      │        │    ║║├03                              │ Папка│13.10.14│15:14║
║                                  │      │        │    ║║                                  │      │        │    ║
║                                  │      │        │    ║║                                  │      │        │    ║


gora 13-10-2014 15:31 2414697

Цитата:

Цитата Iska
не совсем так »

Согласен, :sorry: хотя это и противоречит документации.
Действительно перемещает, но только в пределах диска.

Iska 13-10-2014 15:47 2414704

Цитата:

Цитата gora
но только в пределах диска. »

Именно.

P.S. Не удивляйтесь — я сам ровно так же «купился», до недавнего времени полагая, что файлы могут перемещаться только в пределах того же раздела (как было раньше в DOS).

МИШАНЧИК 26-10-2014 04:51 2420537

Подскажите пожалуйста, как правильно записать батник
Код:

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 14-01-2015 23:42 2456190

Цитата:

Цитата gora
;!@Install@!UTF-8!
; для Win XP
RunProgram="hidcon:cmd /c Ver | Find \"5.2\" >Nul && 1.ехе"
; для НЕ Win XP
RunProgram="hidcon:cmd /c Ver | Find \"5.2\" >Nul || 2.ехе"
;!@InstallEnd@! »

Так на XP не получается( ну по крайней мере на хр х64) Если запускаю, то ничего не происходит... А вот на 7ке все отрабатывает... В чем может быть причина и как ее побороть? Спасибо.

sov44 15-01-2015 00:41 2456207

Dean_Winchester, попробуйте вместо 5.2 написать 5.

Dean_Winchester 15-01-2015 00:43 2456208

Цитата:

Цитата sov44
Dean_Winchester, попробуйте вместо 5.2 написать 5. »

пробовал не получается(

nibble74 15-01-2015 01:28 2456217

Dean_Winchester,

Можно реализовать с помощью батника

читать дальше »
Код:

@echo off
cd /d %~dp0
reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | find "Windows 7" >nul
if "%ERRORLEVEL%" == "0" set SYSTEMID=Windows 7
if "%SYSTEMID%" == "Windows 7" (
start Win7.exe
exit
)

reg QUERY "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName | find "Windows 8" >nul
if "%ERRORLEVEL%" == "0" set SYSTEMID=Windows 8
if "%SYSTEMID%" == "Windows 8" (
start Win8.exe
exit
)

start WXP.exe
exit



или в файле конфигурации

читать дальше »
Код:

SetEnvironment="WinXP=1.exe"
SetEnvironment="Win7=2.exe"
RunProgram="hidcon:cmd /c ver|find \"5.\"&&(%WinXP%)||(%Win7%)"


Dean_Winchester 15-01-2015 10:08 2456295

Цитата:

Цитата nibble74
SetEnvironment="WinXP=1.exe"
SetEnvironment="Win7=2.exe"
RunProgram="hidcon:cmd /c ver|find \"5.\"&&(%WinXP%)||(%Win7%)" »

Попробую спасибо большое... Только вот мне теперь интересно, во второй команде для вин7 как быть, в том плане что в остальных 7-8-8.1-10 мне нужно чтобы тоже запускалась программа, а так получается, что она только на 7 будет выполнятся.... то-есть если это ХР то выполняется 1.ехе если все остальные виндовс то 2.ехе


Хотя щас проверил все равно на XP x64 не отрабатывает команда.... на 7ке все отлично а вот на XP нет (((

nibble74 15-01-2015 15:38 2456466

Цитата:

Цитата Dean_Winchester
Хотя щас проверил все равно на XP x64 не отрабатывает команда.... »

Запустите для начала батником, посмотрите что получится. У меня под рукой XPx64 нет.

Может gora, что нибудь посоветует.

Dean_Winchester 15-01-2015 16:18 2456489

Цитата:

Цитата nibble74
Может gora, что нибудь посоветует. »

я тоже на это очень надеюсь ))) Кстате сейчас попробовал и понял одну вещь, команда не выполняется, так как в свинье не выполняется команда find пробовал в cmd прописать Find /? на что получил в ответ что не является внутренней или внешней командой, исполняемой программой или пакетным файлом... а так как указано что при && невыполнении 1ой команды и 2я не исполняется... то по сути все понятно, теперь же стоит вопрос, как это все исправить...

gora 15-01-2015 16:32 2456498

Цитата:

Цитата Dean_Winchester
так как в свинье не выполняется команда »

Я не понимаю Вашего сленга. Что это!?!? :dont-know
Цитата:

Цитата Dean_Winchester
Может gora, что нибудь посоветует. »
я тоже на это очень надеюсь »

Я уже отвечал на Ваш аналогичный вопрос:
Цитата:

Цитата gora
Dean_Winchester
Вопрос не имеет отношения к конфигам. Нет такого функционала у модуля и это ясно из справки, которую Вы должны были уже изучить.
Вам надо сначала решить задачу "...". Найдите возможность сделать это из батника \ vbs \ autoit и т.д. Это за Вас ни кто делать не будет. Потом это найденное решение (батник) запихните в архив и в конфиге пропишите его запуск. Получите что хотите. »


nibble74 15-01-2015 16:33 2456499

Dean_Winchester,

Только что проверил на виртуальной машине XPx64, нормально отработало.
И на всех остальных версиях windows тоже.

Скорее всего у вас проблема в самом windows xp64

Dean_Winchester 15-01-2015 16:38 2456505

Всем спасибо... Думаю дальше разберусь сам...

sov44 24-01-2015 17:47 2460694

Подскажите, как передать в sfx значение?
пробовал так, но параметр не передаётся.
Код:

;!@Install@!UTF-8!
Title="обработка"
SetEnvironment="rr=%~1"
BeginPrompt="Меняем размер картинок [система %%P]"
FinishMessage="Готово!"
RunProgram="%%P:hidcon:cmd /c for /d %a in (%%S\\*) do (for /f \"delims=\" %b in ('dir /b /a-d \"%a\"') do (nconvert_%%P.exe -resize shortest %rr% -max_filesize 1048576 -o \"%a_new\\%~nxb\" \"%a\\%b\"))"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
;!@InstallEnd@!


gora 24-01-2015 18:06 2460703

Цитата:

Цитата sov44
SetEnvironment="rr=%~1" »

Это переменная из cmd.exe и модуль ее не понимает.
Модулю можно передавать ключи после ключа ! и тогда он их передаст куда надо.
Цитата:

Цитата справка
Все ключи, указанные после него, могут быть переданы (как есть) только в первую выполняемую программу ('RunProgram', 'ExecuteFile', 'AutoInstall' или 'AutoInstallX').

Кроме этого эти ключи будут присвоены переменным модуля и их можно использовать в конфиге:
Цитата:

Цитата справка
%SfxVarCmdLine0% - командная строка целиком (как есть с кавычками и лидирующими слешами)
%SfxVarCmdLine1% - командная строка до ключа '-!' или до первого ключа, неподдерживаемого модулем (лишние пробелы удаляются с двух сторон)
%SfxVarCmdLine2% - командная строка после ключа '-!' или начиная с первого ключа, неподдерживаемого модулем (лишние пробелы удаляются с двух сторон)

Важно! Использование переменных SfxVarCmdLine не отменяет передачи ключей после ! "в первую выполняемую программу" и это может изменить работу этой "первой выполняемой программы".

spectat0r 31-01-2015 20:47 2464423

sov44,
Можно передать так
Код:

set "var1=%~1"
:: преобразование путей
::set "var2=%var1:~-1%"
::if "%var2%"=="\" set "var1=%var1:~0,-1%"
::set "var1=%var1:\=\\%"
start "" /b name.exe -SetEnvironment="rr=%var1%"

Код:

;!@Install@!UTF-8!
Title="обработка"
BeginPrompt="Меняем размер картинок [система %%P]"
FinishMessage="Готово!"
RunProgram="%%P:hidcon:cmd /c for /d %a in (%%S\\*) do (for /f \"delims=\" %b in ('dir /b /a-d \"%a\"') do (nconvert_%%P.exe -resize shortest %rr% -max_filesize 1048576 -o \"%a_new\\%~nxb\" \"%a\\%b\"))"
GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
;!@InstallEnd@!


frankiesimon 01-02-2015 00:00 2464523

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!       
RunProgram="\"MyProgDir\\run.exe\""
GUIMode="1"
;!@InstallEnd@!

The problem: run.exe has .dll dependencies that require the current dir to be MyProgDir.

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"
The problem here was very weird - run.exe complained that some of its dependencies .dll files were missing. To check, I went to the Temp folder during the message box display - and true, the files were not there, as if the extraction (or copying?) was terminated.

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
exit

and in the config:
Код:

RunProgram="hidcon:\"MyProgDir\\run.bat\""
This works great for running the .exe BUT if MyProgDir has special characters, like if it's called "BüüüFolder" - the start command fails (if I remove the hidcon prefix I see that the ü turned into some mess of characters.

Is there a way to have just one simple RunProgram command to handle this?

spectat0r 01-02-2015 01:29 2464552

Цитата:

Цитата frankiesimon
Is there a way to have just one simple RunProgram command to handle this? »

1. Может быть лучше не создавать каталог с "üüü"?
2. В текущем каталоге есть какие-то другие файлы, каталоги?
\..
\MyProgDir\
Если нет, то можно упаковать содержимое MyProgDir\ в корневой каталог
7z.exe a "MyProgDir.7z" -r "MyProgDir\*" -mx5
Далее распаковка в:
InstallPath="%TEMP%\\CustomFolder"
RunProgram="run.exe"
...

sas2242 01-02-2015 03:50 2464566

Уважаемый 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

spectat0r 01-02-2015 06:51 2464575

del

gora 01-02-2015 07:28 2464577

Цитата:

Цитата frankiesimon
The problem here was very weird - run.exe complained that some of its dependencies .dll files were missing. To check, I went to the Temp folder during the message box display - and true, the files were not there, as if the extraction (or copying?) was terminated. »

Это может быть проблема с дочерними процессами файла run.exe. То есть, файлы не "не успели" распаковаться, а уже начали удаляться модулем.
Вы не указываете параметр InstallPath и модуль ведет распаковку во временную папку. Затем он запускает run.exe и ждет завершения процесса run.exe, но он (файл run.exe) может породить один или несколько дочерних процессов и при этом закрыть родительский, т.е сам run.exe. Дочерние процессы продолжают свою работу, а модуль получил команду о завершении процесса run.exe и начал все удалять из своей временной папки (такова логика его работы во временной папке). Вот в этот момент Вы и можете получать сообщения об отсутствующих dll.
Здесь можно попробовать использовать префикс waitall, но это не всегда срабатывает.
Можно отказаться от временной папки и указывать конкретный путь распаковки в параметре InstallPath, но тогда после окончания установки убирать "мусор" в виде этой папки придется самостоятельно, а не ждать этого от модуля.
Цитата:

Цитата frankiesimon
This works great for running the .exe BUT if MyProgDir has special characters, like if it's called "BüüüFolder" - the start command fails (if I remove the hidcon prefix I see that the ü turned into some mess of characters. »

А кодировка файла конфигурации UTF-8 или иная? Она обязательно должна быть UTF-8 при работе с национальными алфавитами.
Цитата:

Цитата frankiesimon
Код:

start /w /d "MyProgDir" run.exe
»

Вообще это не правильно, корректнее так:
Код:

start "" /w /d"%%T\MyProgDir" run.exe
Вначале пустые кавычки для "Заголовка окна", а %%T для указания полного, а не относительного пути.


sas2242, боюсь, что в одну строку все засунуть не получиться, для таких проверок лучше использовать батник.

frankiesimon 28-02-2015 03:18 2476954

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 20-03-2015 20:58 2485372

подскажите как добавить в файле конфигурации ярлык на рабочий стол!

sov44 20-03-2015 21:02 2485377

agrei678, в справке
Цитата:

Shortcut="type,{src_file_path},
{command_line_for_file},
{folder_for_shortcut},{decription},
{shortcut_name},{working_directory},
{icon_file},{icon_index}"

41275jur 18-05-2015 20:39 2508828

Доброго время суток.
Подскажите пожалуйста - можно сделать ярлык программы при помощи Shortcut, чтобы запускался от имени администратора.


Dean_Winchester 25-06-2015 18:02 2522458

Ребят, подскажите пожалуйста, есть необходимость выполнить такую команду RunProgram="hidcon:Reg Add \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"%Name%\" /t REG_SZ /d \"%PathInst%\\%NameEXE%\" /f"
но почему то она не отрабатывает, а если быть точнее, то запись в реестре не появляется, где я чего упустил? Спасибо.

gora 25-06-2015 18:47 2522468

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"

Dean_Winchester 25-06-2015 19:13 2522472

Цитата:

Цитата gora
x64: »

Да, приложение x86 Вот только одна беда, если в 7ке автозапуск работает и из HKCU\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\"
то в 8-8.1 приложение запускается при старте только из \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" но добавить туда эту ветку не получается... как и в 7ке она туда не добавляется (хотя в 7ке и так работает) с префиксом пробовал, тоже не выходит...

nibble74 25-06-2015 20:09 2522488

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 25-06-2015 20:22 2522492

Цитата:

Цитата nibble74
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" »

Спасибо получилось... Премного благодарен...

nibble74 25-06-2015 20:26 2522495

Dean_Winchester

Ж.Д.А.Л.К.Е.Р. 25-06-2015 20:27 2522497

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"
и на х86 ОС получаем запись в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, а в х64 системах HKLM\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Run. Если использовать х64 модуль, то пере направлений не будет. Для самообразования почитай про wow64.

nibble74, CMD тут без надобности, потому что Reg.exe идет отдельным файлом.

nibble74 25-06-2015 20:38 2522502

Ж.Д.А.Л.К.Е.Р., приветствую,

в свою очередь хочу сказать, что зачастую, не срабатывало без cmd /c на некоторых машинах

не знаю с чем это связано... может антивирусы блокировали, поэтому для надёжности передаю команду cmd /c

Dean_Winchester 21-08-2015 01:04 2544163

Здравствуйте, подскажите пожалуйста, сделал себе аддон программы, так вот в вин 8-10 чтобы программа правильно работала и подхватывала все настройки, нужно запускать ее от имени админа, собственно вопрос: можно ли как то с помощью 7zSFX прописать это или сделать, чтобы ярлыку программы присваивался статус запуск от админа? В принципе, программа устанавливается простым копированием и добавлением веток в реестр. Надеюсь на вашу помощь.

Dean_Winchester 21-08-2015 21:40 2544544

:) Спасибо за помощь... :)

sov44 25-08-2015 13:07 2545786

Что-то запутался. :) Нужно, чтобы содержимое папки х64 копировалось в Program Files а не в Program Files (x86)
Код:

RunProgram="%%P:hidcon:xcopy /s /e /i /y \"%%T\\%%P\\*\" \"%ProgramFiles%\\%Name%\\\""
модуль 7zsd_LZMA2.sfx 160_2478

gora 25-08-2015 13:13 2545796

Цитата:

Цитата sov44
запутался »

Посмотрите здесь.

Desmodeus 01-10-2015 07:38 2559569

Ощущаю себя полным идиотом. Пытаюсь сделать простой установщик сборки для rainmaker(кастомный виджет для предприятия +вырезана возможность подгружать свои) на основе портабл версии программы. Все собрано в одну папку, которую надо поместить в Program Files, плюс ярлык для помещения в автозапуск. Написал простой установочник, но проблема - при старте сразу же выдается ошибка "указанный файл не найден"
Код:

;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c xcopy \"Rainmeter\" \"%ProgramFiles%\\Rainmeter\" /s /e /i /y /h /r /k"
RunProgram="hidcon:cmd /c copy \"Rainmeter.lnk\" \"%ProgramData%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\""
;!@InstallEnd@!


gora 01-10-2015 08:15 2559575

Цитата:

Цитата Desmodeus
выдается ошибка "указанный файл не найден" »

Правильно выдает.
Ваш конфиг распакует Ваш архив (предполагаю, что это папка Rainmeter) в свою временную папку (с рандомным именем которую создаст сам SFX), а не в папку %TEMP%.
Попробуйте убрать упоминание %TEMP% из конфига, ибо текущей папкой является папка распаковки, т.е. в данном случае как раз его временная папка с рандомным именем.

Desmodeus 01-10-2015 08:18 2559578

Не работает по прежнему
Код:

;!@Install@!UTF-8!
RunProgram="hidcon:cmd /c xcopy \"Rainmeter\" \"%ProgramFiles%\\Rainmeter\" /s /e /i /y /h /r /k"
RunProgram="hidcon:cmd /c copy \"Rainmeter.lnk\" \"%ProgramData%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\""
;!@InstallEnd@!

Ошибка та же самая - файл не найден. Даже если поставить .\\ перед файлами, все равно не находит

Архив состоит из ярлыка и папки Rainmeter, да)

gora 01-10-2015 08:27 2559581

Desmodeus, поиск неисправностей неоднократно описывался.

Первый вариант
1 удалите префикс hidcon
2 замените ключ в строке с cmd /c на cmd /k
3 начните с одной строки в конфиге, а вторую закомментируйте или удалите
После запуска смотрите, что напишет в окне консоли

Второй вариант
1 создайте батник из Ваших двух строк конфига (конечно по правилам батников, без лидирующих слешей, префиксов и прочего).
2 положите батник рядом с распакованной папкой и ярлыком и запустите батник.
После запуска смотрите, что напишет в окне консоли

Если в окне консоли будет ругань, то вопрос не к конфигу, а к написанию батников. Наши специалисты всегда помогут новичку грамотным советом в соответствующем форуме.

Desmodeus 01-10-2015 10:52 2559633

Так, разобрался. Да, ошибка была в самой бат команде.

Так, а теперь как добиться того чтоб установщик сам завершался? На данный момент он после копирования зависает и остается висеть в процессах. Должна ли быть это какая-то команда в конфиге чтобы по выполнению финальной команды установочник завершался?
Код:

;!@Install@!UTF-8!
RunProgram="hidcon:cmd /k xcopy \"Rainmeter\" \"%ProgramFiles%\\Rainmeter\" /I /E"
RunProgram="hidcon:cmd /k copy  \"Rainmeter.lnk\" \"%ProgramData%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\" /I /E"
;!@InstallEnd@!


gora 01-10-2015 10:55 2559635

Цитата:

Цитата Desmodeus
cmd /k »

А кто ключ /c вернет на место?

Desmodeus 01-10-2015 11:02 2559637

Цитата:

Цитата gora
А кто ключ /c вернет на место? »

Вернул. Пересобрал exe Все ещё висит в процессах по выполнению

gora 01-10-2015 12:02 2559657

Цитата:

Цитата Desmodeus
copy \"Rainmeter.lnk\" \"%ProgramData%\\Microsoft\\Windows\\Start Menu\\Programs\\Startup\" /I /E" »

1 у команды Copy нет таких ключей.
2 при необходимости перезаписи файлов команды xCopy и Copy могут выдавать запрос о перезаписи в консоль, т.к. ключей, для подавления этого запроса, у Вас в конфиге я не вижу.

Desmodeus 15-10-2015 14:08 2564167

Так, спасибо, с этим разобрался. ЕЩё один вопрос - если я хочу чтобы мой установочник перед стартом проверял наличие .net и при необходимости его ставил, можно ли такое реализовать через файл конфигураций или же это лучше в вызываемый bat файл помещать?

gora 15-10-2015 14:19 2564173

1
Цитата:

Цитата Desmodeus
перед стартом проверял наличие .net »

2
Цитата:

Цитата Desmodeus
его ставил »

Desmodeus, если Вы сможете написать п.1 и п.2 в одну строку батника, то можете использовать любой из вариантов
Цитата:

Цитата Desmodeus
реализовать через файл конфигураций или же это лучше в вызываемый bat файл помещать »

Ну а если для Вас это сложно, то начните со второго варианта (использования батника)

Leon3721 12-11-2015 13:14 2573997

Не получается передать консоли символ "или" (в тексте как две вертикальные полоски - || ).
Часть кода:

Код:

SetEnvironment="Commands=-Параметр1 -Параметр2 -и т.д."
...
RunProgram="hidcon:cmd /c \"File1.exe %Commands%\" ||\"File2.exe %Commands%\" ||\"File3.exe %Commands%\" "

Запускается только при наличии файл File3.exe со всеми своими параметрами указанными в переменной "Commands"
Если вместо File3.exe поставить File2.exe, то он не запускается.

Через батник:
Код:

File1.exe || File2.exe || File3.exe
Запускается File1.exe, если нету File2.exe, а если нет первых 2-х, то запускается File3.exe
Как достичь того же эффекта ? Что я делаю не правильно ?
Писать \|\| пробовал. Толку 0.

Leon3721 16-11-2015 10:56 2575277

Не дождался помощи :) Всё равно спасибо. Сам разобрался. Использовал проверку на присутствия файла:
Код:

...
RunProgram="hidcon:cmd /c if exist File1.exe (File1.exe %Commands%) else (if exist File2.exe (File2.exe %Commands%) else (if exist File3.exe (File3.exe %Commands%) else (msg * /time:20 Отсутствуют файлы для запуска ! & TaskKill /f /im \"%%M\"))) "
...

Может кому понадобиться пример.

41275jur 02-12-2015 18:05 2580751

Здравствуйте, подскажите как можно прописать в файле конфигурации, чтобы архив Soft.7z расположенный рядом с SFX архивом распаковывался в папку с установленной программой.

gora 02-12-2015 19:18 2580778

Цитата:

Цитата 41275jur
как можно прописать в файле конфигурации »

Код:

; автономный архиватор 7zr.exe положить внутрь sfx
; c:\soft - папка с установленной программой, куда надо распаковывать
RunProgram="hidcon:7zr.exe x \"%%S\\Soft.7z\" -o\"c:\\soft\""


41275jur 02-12-2015 20:49 2580799

Цитата:

Цитата gora
RunProgram="hidcon:7zr.exe x \"%%M\\Soft.7z\" -o\"c:\\soft\"" »

Не распаковывает.

gora 02-12-2015 20:58 2580804

Цитата:

Цитата 41275jur
Не распаковывает. »

И все? Вы не считаете нужным что либо еще сообщить? Тогда разбирайтесь сами, я по такой фразе диагноз не ставлю.
p.s. Поправил переменную, проверьте.

41275jur 03-12-2015 23:25 2581227

gora, Спасибо за помощь.
Цитата:

Цитата gora
И все? Вы не считаете нужным что либо еще сообщить? »

Я не думал, что при вопросе – распаковка, где сборка и установка SFX архива проходит без ошибок нужно писать что-то большее.
Код:

RunProgram="hidcon:7zr.exe x \"%%S\\Soft.7z\" -aoa -o\"%SystemDrive%\\soft\""
Не знаю правильно я дописал ключ -aoa. Не хотело перезаписывать файл. После добавления этого ключа все получилось.

nibble74 09-12-2015 16:35 2583107

gora, приветствую,

Где тут ошибка ?

Код:

SetEnvironment="SYS=%SystemRoot%\\папка"
AutoInstall="hidcon:cmd /c FOR /R %SYS% %%i IN (*.exe) DO (start %%i -параметр)"

Файл (*.exe) время от времени меняет имя, поэтому хотелось бы использовать эту команду для автоматического определения нового имени и дальнейшего запуска с -параметром

В ком строке работает, а в sfx архиве не срабатывает.

gora 09-12-2015 16:44 2583112

Цитата:

Цитата nibble74
В ком строке работает »

В бат файле, наверное, а не в ком. строке, ибо в конфиге, как и в ком. строке, переменная цикла (%%i) пишется в одним знаком процента (%i), а не с двумя, как у Вас.

nibble74 09-12-2015 16:58 2583121

Цитата:

Цитата gora
В бат файле, наверное, а не в ком. строке »

Упустил я это дело. Исправил на "hidcon:cmd /c FOR /R %SYS% %i IN (*.exe) DO start %i -параметр"
теперь работает.

Спасибо за помощь.

МИШАНЧИК 20-12-2015 05:32 2586625

Подскажите пожалуйста. Возможно ли в файле конфигурации задать параметр, чтоб после окончания установки FinishMessage закрывался самостоятельно через определенное кол-во времени?

gora 20-12-2015 07:47 2586633

Цитата:

Цитата МИШАНЧИК
FinishMessage закрывался самостоятельно через определенное кол-во времени »

Прочтите про префикс fmX в справке.

timon45 11-01-2016 11:04 2593362

Нужно выполнить команду удаления ключа в реестре:
Код:

AutoInstall="hidcon:Reg Delete \"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"Skype\" /f"
при следующем входе в систему, т.е. после перезагрузки однократно.
как это можно реализовать?

Iska 11-01-2016 11:18 2593366

Рядом есть раздел «RunOnce».

gora 11-01-2016 11:34 2593370

Цитата:

Цитата timon45
как это можно реализовать? »

Попробуйте так:
Код:

SetEnvironment="ADD_RunOnceEx=hidcon:REG ADD HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\RunOnceEx\\666"
; Создание записей в реестре для удаления ключа после перезагрузки
AutoInstall="%ADD_RunOnceEx% /VE /D \"Delete AutoRun Skype\" /f"
AutoInstall="%ADD_RunOnceEx% /V 1 /D \"Reg Delete \\\"HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\\" /v \\\"Skype\\\" /f\" /f"


timon45 13-01-2016 10:39 2594186

gora, спасибо, только заработало как:
Цитата:

AutoInstall="%ADD_RunOnceEx% /VE /D \"DelAutoRunSkype\" /f"

МИШАНЧИК 16-01-2016 16:09 2595766

Подскажите пожалуйста. Можно ли создать архив предназанченный только для х64? Чтоб при попытке запустить распаковку на х86 появлялось сообщение что то вроде - система не соответствует.

gora 16-01-2016 16:12 2595770

Цитата:

Цитата МИШАНЧИК
Можно ли создать архив предназанченный только для х64? »

Используйте х64 модуль.

timon45 19-01-2016 10:19 2596733

А как правильно записать эту команду:
Код:

TaskList|Find /I "iexplore.exe">nul&&(Taskkill /im "iexplore.exe")
(если есть процесс "iexplore" то завершить его.)

gora 19-01-2016 10:26 2596737

timon45
1 Это не конфиг, а синтаксис cmd.
2 А зачем проверять наличие процесса? Завершайте его в любом случае это будет проще.

minutka15 22-01-2016 00:47 2597940

...

vavun 03-02-2016 02:26 2601970

Приветствую всех!

Первый вопрос:
Существует ли документация по разметке и оформлению текста в модулях с диалогами ?

Имеется ввиду это



Код:

BeginPrompt="{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fswiss\fprq2\fcharset204 Century Gothic;}{\f1\fswiss\fprq2\fcharset204 Tahoma;}}
{\colortbl ;\red36\green88\blue178;\red255\green0\blue0;}
\viewkind4\uc1\pard\b\f0\fs26
Архив содержит инструменты для 7z SFX:
\f1\cf2\b0\i\fs18\par\par
    \bullet  Модифицированные 7z SFX модули\par
    \bullet  Специальный модифицированный модуль с диалогами\par
    \bullet  7z SFX Splitter для извлечения компонентов из SFX архива\par
    \bullet  Файл справки для модуля (CHM формат)\par
\i0\fs16\par
\cf1
Ярлык к файлу справки будет помещен на ваш Рабочий стол.\par
Файл справки откроется автоматически после извлечения.
}"


На офсайте на нашел и даже не уверен как это искать (и что искать), а изучения методом тыка и выборочного удаления параметров проходит менее продуктивно, чем хотелось бы.
Прошу меня простить, если уже было.

Второй вопрос:
Есть ли способ (или обходной путь) научить модуль раскрывать переменные, такие как %DATE% ?

Автор модуля мне ответил следующее
Цитата:

Раскрываются только системные переменные, которые Вы можете посмотреть с
помощью "set", %DATE% к ним не относится. Насколько я понимаю, это
внутренняя переменная cmd.
Суть вопроса в картинках



Заранее благодарю :)

vavun 03-02-2016 05:19 2601984

Еще один вопрос. Но тут интерес больше спортивный, чем практический :)

Длиннопост
Допустим:

Имеется main.bat, который запускается модулем после распаковки.

config.txt
Код:

;!@Install@!UTF-8!
BeginPrompt="Install this program?"
FinishMessage="Done"
RunProgram="hidcon:waitall:main.bat"
;!@InstallEnd@!

main.bat
Код:

@echo off
SetLocal EnableExtensions

REM В процессе работы скрипта создаются некоторые переменные,
REM которые должны быть перезадны двум консольным программам.
REM При этом работа данного скрипта должна быть продолжена
REM без ожидания завершения консольных пррограмм и вне зависимости
REM от результатов выполения этих программ.

set /a var1=2+2
start "First" cmd /c "Console_1.bat %var1%"

set /a var2=4+6
start "Second" cmd /c "Console_2.bat %var2%"

REM тем временем работа основного скрипта продолжается
timeout 3
echo.Result: Any text >%UserDesktop%\main.txt

exit /b

В процессе сложной и кропотливой работы main.bat создаются некоторые переменные, которые должны быть переданы двум консольным программам (в данном случае Console_1.bat и Console_2.bat)
Так что еще одним RunProgram не отделаться (или я просто не знаю как)
И работа всех трех (main.bat, Console_1.bat и Console_2.bat) должна продолжиться параллельно и независимо друг от друга

Console_1.bat
Код:

@echo off
SetLocal EnableExtensions

REM имитация бурной деятельности
timeout 10
echo.The arguments is: %* >>%UserDesktop%\Console_1.txt
exit /b

Console_2.bat
Код:

@echo off
SetLocal EnableExtensions

REM имитация бурной деятельности
timeout 7
echo.The arguments is: %* >>%UserDesktop%\Console_2.txt
exit /b

В результате все работает хорошо, модуль дожидается завершения всех дочерних процессов и после этого рапортует "Done", но появляются консольные окна условных консольных программ Console_1.bat и Console_2.bat, так как hidcon: на них уже не действует.



Вопрос1: как скрыть эти консольные окна средствами модуля? (при этом не распаковывая sfx.exe заново) Console_1.bat и Console_2.bat обязательно должны быть запущены из main.bat, чтобы можно было передать им переменные созданные main.bat в качестве аргументов
и
Вопрос2: Как можно передать модулю некую переменную полученную в результате работы запущенной им программы из предыдущего RunProgram, для использования её в следующем по порядку RunProgram ?
Пример:
Код:

RunProgram="main.bat"
RunProgram="prog2.exe %main.bat_result%"

На данный момент пришло в голову только создание следующего костыля:
Скрытый текст
В конфигурационном файле объявляется переменная содержащая полный путь к sfx.exe
Допустим так
SetEnvironment="WRAP=%%S//%%M"

config.txt
Код:

;!@Install@!UTF-8!
BeginPrompt="Install this program?"
FinishMessage="Done"
SetEnvironment="WRAP=%%S//%%M"
RunProgram="hidcon:waitall:main.bat"
;!@InstallEnd@!


Вызов Console_1.bat и Console_2.bat из main.bat происходит следующим образом:

Код:

start "" "%WRAP%" -sfxwaitall:1 cmd /c "Console_1.bat %var1%"
main.bat
Код:

@echo off
SetLocal EnableExtensions

REM В процессе работы скрипта создаются некоторые переменные,
REM которые должны быть перезадны двум консольным программам.
REM При этом работа данного скрипта должна быть продолжена
REM без ожидания завершения консольных пррограмм и вне зависимости
REM от результатов выполения этих программ.

set /a var1=2+2
REM start "First" cmd /c "Console_1.bat %var1%"
start "" "%WRAP%" -sfxwaitall:1 cmd /c "Console_1.bat %var1%"


set /a var2=4+6
REM start "Second" cmd /c "Console_2.bat %var2%"
start "" "%WRAP%" -sfxwaitall:1 cmd /c "Console_2.bat %var2%"

REM тем временем работа основного скрипта продолжается
timeout 3
echo.Result: Any text >%UserDesktop%\main.txt

exit /b


Console_1.bat и Console_2.bat остаются без изменений и более не показывают консольные окна и переменные полученные в результате работы main.bat передаются далее.
sfx.exe как положено дожидается завершения последнего дочернего процесса и рапортует "Done".

Опять же хочу напомнить, что интерес больше спортивный, чем практический :)

Заранее благодарю за ответы

gora 03-02-2016 12:44 2602130

Цитата:

Цитата vavun
Существует ли документация по разметке и оформлению текста в модулях с диалогами ? »

Нет, не существует, но могу кратко рассказать как я делал то, что показано на Вашем скриншоте.
Открыл WordPad, написал нужный текст, подобрал нужные размеры и типы шрифта, цвета, отступы и т.д. Получил следующее:



Сохранил текст в формате rtf, вставил его в конфиг, удалил теги, которые мне показались лишними (каждый раз проверяя полученный результат запуском конфига через Кнопку).
Все! :)

Цитата:

Цитата vavun
Есть ли способ (или обходной путь) научить модуль раскрывать переменные, такие как %DATE% ? »

Автор Вам ответил - нет, модуль этого не умеет, оно ему и не надо. Я вот подумал и не нашел реального применения такой фиче. Опишите конкретный случай такой необходимости, может быть можно найти другие пути. Но случай должен быть конкретный и реальный, а не высосанный из пальца.

Цитата:

Цитата vavun
Но тут интерес больше спортивный, чем практический »

Как только станет практическим, приходите, порешаем...

vavun 03-02-2016 13:05 2602140

Цитата:

Цитата gora
Открыл WordPad, написал нужный текст, подобрал нужные размеры и типы шрифта, цвета, отступы и т.д »

Вот за это огромнейшее спасибо :clapping:
Поглядим, что из этого получится )

Цитата:

Цитата gora
Опишите конкретный случай такой необходимости, может быть можно найти другие пути »

Цитата:

Цитата gora
Как только станет практическим, приходите, порешаем »

Ну а как же интерес ? )
Практическая цель на данный момент одна: изучение возможностей модуля )
С реальными практическими целями пока трудностей не возникло, благо все довольно неплохо задокументировано )

Наверно вставить ссылку (кликабельную) таким образом не получится, а жаль :(

Код:

BeginPrompt="{\rtf1\ansi\ansicpg1251\deff0\deflang1049{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
{\colortbl ;\red0\green0\blue255;}
{\*\generator Msftedit 5.41.21.2510;}\viewkind4\uc1\pard\sa200\sl276\slmult1\lang9\f0\fs22{\field{\*\fldinst{HYPERLINK "http://forum.oszone.net/post-2602130-335.html"}}{\fldrslt{\ul\cf1 http://forum.oszone.net/post-2602130-335.html}}}\f0\fs22\par
}"


vavun 03-02-2016 13:36 2602164

Блин, никак :(

Скрин

gora 03-02-2016 15:04 2602209

Цитата:

Цитата vavun
Ну а как же интерес ? )
Практическая цель на данный момент одна: изучение возможностей модуля »

Изучайте, экспериментируйте... Многие "нетрадиционные функции" SFX на базе модифицированного модуля есть результат таких экспериментов...
Вот как пример использования переменной %DATE% в диалогах модуля.
Код:

;!@Install@!UTF-8!
RunProgram="fm0:hidcon:cmd /c \"\"%%S\\%%M\" -ai -SetEnvironment=\"dat=%DATE%\"\""
AutoInstall="fm20:hidcon:cmd /c Echo"
FinishMessage="Сегодня %dat%"
GUIMode="2"
;!@InstallEnd@!

Цитата:

Цитата vavun
вставить ссылку (кликабельную) таким образом не получится »

Да, не получится, не поддерживается, не мучайтесь.

vavun 03-02-2016 15:11 2602214

Цитата:

Цитата gora
RunProgram="fm0:hidcon:cmd /c \"\"%%S\\%%M\" -ai -SetEnvironment=\"dat=%DATE%\"\"" »

Занятно )
Только условный sfx.exe дважды распаковывается, а это минус в случае больших архивов.

Поковыряюсь вечерком, может что придумаю

Цитата:

Цитата gora
Да, не получится, не поддерживается, не мучайтесь. »

Да, я уже понял )

vavun 03-02-2016 15:43 2602218

Еще интересно, какие еще есть параметры на подобие -sfxwaitall ?

-sfxwaitall:0 равноценно RunProgram="
-sfxwaitall:1 равноценно RunProgram="hidcon:

Больше пока выяснить не удалось.
В исходниках смотрел, но я в этом ничерта не понимаю.

Пробовал действовать по логике
-sfxnowait
-sfxforcenowait

Но это не сработало )

Куда смотреть ?

gora 03-02-2016 15:52 2602221

Цитата:

Цитата vavun
Только условный sfx.exe дважды распаковывается»

Я знаю минусы рекурсивного запуска, но тем не менее реально использую его в своих SFX.
Цитата:

Цитата vavun
это минус в случае больших архивов »

Критиковать всегда легче чем искать решение. :sorry: Есть вариант без двойной распаковки, но от объяснений увольте ибо
Цитата:

Цитата gora
Я вот подумал и не нашел реального применения такой фиче. Опишите конкретный случай такой необходимости, может быть можно найти другие пути. Но случай должен быть конкретный и реальный, а не высосанный из пальца. »

Цитата:

Цитата vavun
на подобие -sfxwaitall »

Я не знаю такого ключа.

vavun 03-02-2016 16:19 2602233

Цитата:

Цитата gora
Критиковать всегда легче чем искать решение. »

И в мыслях не было критиковать :)

Цитата:

Цитата gora
Я не знаю такого ключа. »

А он есть


Используется самим модулем, как враппер. С помощью этого ключа можно, например вызвать любое консольное приложение со скрытием окна (или вообще как угодно) при этом не распаковывая сам sfx.exe.

Код:

any_sfx.exe -sfxwaitall:1 cmd /c "any_bat.bat"
Пример был под вторым спойлером тут
http://forum.oszone.net/post-2601984-334.html

vavun 03-02-2016 16:46 2602238

Так нагляднее:
Простейший пример случая, при котором модуль использует враппер (возможно я это не верно обзываю, если что, прошу меня простить)

config.txt
Код:

;!@Install@!UTF-8!
BeginPrompt="Install this program?"
FinishMessage="Done"
RunProgram="hidcon:waitall:cmd /c pause"
;!@InstallEnd@!

Так выглядят дочерние процессы


Но никто же не запрещает использовать не совсем по прямому назначению )
Например вы говорили, что в некоторых своих sfx используете двойную распаковку, возможно этим способом можно было бы обойтись без двойной.
Вот я и хотел узнать какие еще параметры "умеет" модуль.

Наверное имеет смысл дождаться автора модуля :happy:

nibble74 18-02-2016 23:48 2607728

gora, приветствую,

Тут возникла проблема с созданием ярлыка к файлу или папке в названии которой присутствуют символы xxx{xxxx}.
Возможно ли реализовать как нибудь в конфиге, чтобы созданный ярлык имел путь к файлу имя которого содержит знаки {} ?

gora 19-02-2016 05:40 2607751

nibble74, попробуйте сделать как это описано в справке:
Цитата:

Если вам потребуется указать где-нибудь фигурную скобку (например, в 'decription') используйте двойную, т.е. {"Это описание со {{скобками}}"} даст результат "Это описание со {скобками}".

timon45 23-02-2016 15:44 2609285

есть параметр SelfDelete="1" самоудаление после выполнения, а можно ли удалить и папку (вместе с её содержимым) из которой была запущена программа.
пробовал с nowait и ping
RunProgram="nowait:hidcon:cmd /c Ping -n 4 localhost && rd /S /Q \"%%S\""
но пока удалось удалить только содержимое каталога.
Это нужно для того чтобы написать своего рода программу Uninstaller

vavun 23-02-2016 15:51 2609290

timon45, почему бы не использовать inf файл для установки и создание записи о деинсталяции ? Или не о том речь ?

Цитата:

Цитата timon45
но пока удалось удалить только содержимое каталога »

Возможно потому, что он занят во время удаления, так как является текущим для cmd.exe при выполнении cmd /c. (зависит о того, куда происходит распаковка)
Сделайте сначала переход в другую директорию, потом удаляйте.

Код:

RunProgram="nowait:hidcon:cmd /c Ping -n 2 localhost & cd /d %temp% && rd /S /Q \"%%S\""
А вообще идея удалять папку архивом - так себе идея.

gora 23-02-2016 16:51 2609310

timon45, в SetTools есть файл UnInstall.exe - это SFX на маленьком модуле. Он расположен в папке программы которую должен удалять при деинсталляции. Посмотрите его содержимое, может пригодится при решении Вашей задачи.

timon45 23-02-2016 23:08 2609443

Цитата:

Цитата vavun
почему бы не использовать inf файл для установки и создание записи о деинсталяции »

запарился уже с ними, вроде делаю все правильно, на XP x-32 работает на 7-ке нужно править пути для x-64 прописывать отдельные условия, при удалении на 7-ке иногда не удаляет папку с программой??? хотя в inf-е как бы все правильно, править его парой бывает очень сложно конвертировать ключи реестра команды запуска и т.п., одним словом я запарился, вот и пришла такая идея делать средствами модуля.
Цитата:

Цитата gora
timon45, в SetTools есть файл UnInstall.exe »

ок гляну.

nibble74 17-03-2016 14:44 2617072

gora,

Не удаётся создать ярлыки для файлов (*.chm и *.url). Нет поддержки ???

Ошибка - не найден exe файл.

gora 17-03-2016 15:31 2617080

Цитата:

Цитата nibble74
Не удаётся создать ярлыки для файлов (*.chm и *.url). Нет поддержки ??? »

Для *.url я ярлыков не создавал, а для *.chm можете посмотреть пример в 7z SFX Tools

nibble74 17-03-2016 15:52 2617086

Я даже не знал, что новая версия модулей вышла. :oszone: Спасибо посмотрю.

Iska 17-03-2016 16:11 2617091

Цитата:

Цитата nibble74
Не удаётся создать ярлыки для файлов (*.chm и *.url). »

«.url» — это и есть ярлык. Особого типа.

nibble74 17-03-2016 18:30 2617147

Походу и так всё нормально отображается

Shortcut="P,{%%T\\Website.url},{},{ProgFolderName},{},{Веб сайт},{},{shell32.dll},{13}" - shell32.dll windows 8.1

Shortcut="P,{%%T\\Help.chm},{},{ProgFolderName},{},{Справка},{},{hh.exe}"

dhtima 24-03-2016 14:39 2619342

Вложений: 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 ;)

gora 24-03-2016 14:55 2619353

Цитата:

Цитата dhtima
неполучается сделать - это назначить значение %sfx_homepage% »

Задайте одноименную переменную в конфиге:
Код:

SetEnvironment="sfx_homepage=http://7zsfx.info"
Цитата:

Цитата dhtima
не получается поменть все иконки в 7zsd_LZMA_Dialogs.sfx »

В модуле имеется только одна иконка, других иконок в модуле нет.

21f1nger@vk 07-04-2016 10:30 2623858

Вложений: 1
Почему при запуске с -ai и -ai1 висит 2 процесса в диспетчере и можно ли сделать так чтобы процесс был 1?
Скриншот http://forum.oszone.net/attachment.p...1&d=1460013636

Готовый файл:
https://cloud.mail.ru/public/6xwH/2NDr53EvK

Конфиг:
Код:

;!@Install@!UTF-8!
Title="Media Player Classic - Home Cinema - x86"

BeginPrompt="Media Player Classic HomeCinema - удобный во всех планах мультимедийный проигрыватель.
Он построен на базе классического плеера Media Player Classic и одного из лучших наборов
медиа-кодеков ffdshow, и благодаря этому может проигрывать многие форматы видео
и аудио файлов без установки внешних кодеков.

Этот плеер имеет большое количество различных функциональных возможностей:
он умеет воспроизводить DVD диски, умеет аппаратно декодировать популярный формат
H.264 на видеокартах последнего поколения, умеет корректно работать со вторым
монитором (телевизором), поддерживает различные виду субтитров, умеет работать
с форматами QuickTime и RealVideo и т.д. Плеер имеет небольшой размер и полностью
понятный и не перегруженный излишними функциями интерфейс.

- Для установки в папку Program Files - нажмите OK
- Для установки в желаемую папку - укажите путь установки и нажмите OK
- Для запуска из самоудаляемой временной папки - нажмите OK, удерживая SHIFT
- Для запуска из НЕудаляемой временной папки выполните этот файл с ключем -ai1
- Для установки в НЕудаляемую временную папку выполните этот файл с ключем -ai2
"

ExtractPathText="Пожалуйста, выберите путь установки:"
ExtractDialogText="Подождите, пожалуйста..."
CancelPrompt="Вы хотите прервать установку?"
FinishMessage="Установка завершена!"
ExtractTitle="Выполняется распаковка..."
HelpText="Тут пока что пусто))"
BeginPromptTimeout="-120"
ExtractDialogWidth="400"

;показывать таймеры и окна отмены/распаковки/завершения (0-1-2)
GUIMode="1"
;возможно изменить путь извлечения (для отключения убрать 64)
GUIFlags="2+8+32+64+256+2048+4096"
;запрашивать права администратора при выполнении
MiscFlags="4"
;перезаписывать только те файлы, которые старее + пропускать файлы заблокированные системой
OverwriteMode="2"

;получаем полный путь распаковки в переменную InstallPath, которая не указана в конфиге
SetEnvironment="InstallPath=%%T"
;создаем переменую с именем папки программы
SetEnvironment="PF=MPC-HC-x86"
;создаем переменую с именем файла программы
SetEnvironment="PN=mpc-hc.exe"

;установка в Program Files по умолчанию или в выбранную папку
;Если в названии пути есть 7ZipSfx, значить копируем и устанавливаем в Program Files.
RunProgram="fm10:hidcon:x86:cmd /c if not \"%InstallPath%\" equ \"%InstallPath:7ZipSfx=%\" (xCopy * \"%ProgramFiles%\\\" /s /e /i /y && \"%ProgramFiles%\\%PF%\\%PN%\" /regvid /regpl) else (\"%PF%\\%PN%\" /regvid /regpl)"
RunProgram="fm10:hidcon:x64:cmd /c if not \"%InstallPath%\" equ \"%InstallPath:7ZipSfx=%\" (xCopy * \"%ProgramW6432%\\\" /s /e /i /y && \"%ProgramW6432%\\%PF%\\%PN%\" /regvid /regpl) else (\"%PF%\\%PN%\" /regvid /regpl)"

;запуск из самоудаляемой временной папки
;AutoInstall="hidcon:shc0:cmd /c \"%PF%\\%PN%\""
AutoInstall="waitall:shc0:\"%PF%\\%PN%\""

;запуск из НЕудаляемой временной папки
AutoInstall1="hidcon:cmd /c xCopy * \"%TEMP%\\PORTABLE\\\" /s /e /i /y && start /w /d \"\" \"%TEMP%\\PORTABLE\\%PF%\\\" %PN%"

;установка в НЕудаляемую временную папку
AutoInstall2="fm10:hidcon:cmd /c xCopy * \"%TEMP%\\PORTABLE\\\" /s /e /i /y && start /w /d \"\" \"%TEMP%\\PORTABLE\\%PF%\\\" %PN% /regvid /regpl && start /w /d \"\" \"%TEMP%\\PORTABLE\\%PF%\\\" %PN%"

;Создание ярлыков
Shortcut="Su,{%SystemDrive%\\Program Files\\%PF%\\%PN%},{},{Мультимедиа},{Media Player Classic Home Cinema - удобный во всех планах мультимедийный проигрыватель.},{%PF%}"
Shortcut2="Su,{%TEMP%\\PORTABLE\\%PF%\\%PN%},{},{Мультимедиа},{Media Player Classic HomeCinema - удобный во всех планах мультимедийный проигрыватель.},{%PF%}"
;!@InstallEnd@!


sov44 07-04-2016 11:22 2623877

21f1nger@vk, попробуйте разделить копирование и запуск ai1
Код:

;запуск из НЕудаляемой временной папки
AutoInstall1="hidcon:cmd /c xCopy * \"%TEMP%\\PORTABLE\\\" /s /e /i /y"
AutoInstall1="\"%TEMP%\\PORTABLE\\%PF%\\%PN%\""


21f1nger@vk 07-04-2016 23:32 2624171

sov44, но в -ai прописан обычный запуск, ничего вроде бы сложного нет. Все равно 2 процесса висит, при запуске с -ai

vavun 08-04-2016 01:42 2624180

21f1nger@vk, архив сам себя перезапускает для элевации прав.
Это нормально

Чем мешает второй процесс ?


Если очень хочется, то поправьте манифест в sfx модуле:
Измените строку
Код:

<requestedExecutionLevel level="asInvoker" uiAccess="false">
на
Код:

<requestedExecutionLevel level="highestAvailable" uiAccess="false">
Или сразу запускайте с правами администратора

21f1nger@vk 08-04-2016 03:22 2624187

vavun, теперь понятно, спасибо.
Запуск от администратора все же лучше пускай будет. Для -ai процесс висящий не убрать потому что папка удаляется после выполнения,
а вот с -ai1 и -ai2 разобрался - проблема была в ключе start /w

Поправил вот так и все работает без лишних процессов:
Код:

AutoInstall="waitall:shc0:\"%PF%\\%PN%\""
AutoInstall1="hidcon:cmd /c xCopy * \"%TEMP%\\PORTABLE\\\" /s /e /i /y && start /d \"%TEMP%\\PORTABLE\\%PF%\" %PN%"
AutoInstall2="hidcon:cmd /c xCopy * \"%TEMP%\\PORTABLE\\\" /s /e /i /y && start /d \"%TEMP%\\PORTABLE\\%PF%\" %PN% /regvid /regpl && start /d \"%TEMP%\\PORTABLE\\%PF%\" %PN%"


21f1nger@vk 08-04-2016 13:59 2624387

А можете написать пару примеров использования 'ExecuteOnLoad', 'PreExtract' и 'PreExtractX'. В мануале мало информации по их использованию. И я что-то никак прикинуть не могу где они могу пригодится. Может с их помощью можно частично распаковывать архив, например х86 или х64 версию?

minutka15 31-05-2016 19:17 2639208

Застрял в недоумении,
собираю установщик acdsee и не могу понять почему папка с файлами русификации не копируются в указанную директорию...
Вот кусок кода:
модуль 7zsd_All.sfx v1.7.0.3873
Код:

SetEnvironment="ACD64=%ProgramW6432%"
SetEnvironment="ACD86=%ProgramFiles%"
;=======Установка с русификатором х86===========
AutoInstall1="86\86.msi /qn"
AutoInstall1="hidcon:cmd /c xcopy \"RUS86\" \"%ACD86%\\\" /s /e /i /y"
;=======Установка с русификатором х64===========
AutoInstall2="x64:64\64.msi /qn"
AutoInstall2="hidcon:cmd /c xcopy \"RUS64\" \"%ACD64%\\\" /s /e /i /y"

Вот убей, но не копирует:
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%"
InstallPath="%ACD64%"

Копирует так-же если просто оставить одну строчку в конфиге:
Код:

; AutoInstall2="x64:64\64.msi /qn"
AutoInstall2="hidcon:cmd /c xcopy \"RUS64\" \"%ACD64%\\\" /s /e /i /y"

Может кто сталкивался с подобной проблемой ?
Уже чисто ради любопытства хочу узнать...

nibble74 31-05-2016 20:08 2639230

minutka15,

Так у вас копирует в %ProgramFiles%, а надо в
AutoInstall2="hidcon:cmd /c xcopy \"RUS64\" \"%ACD64%\\имя папки программы\" /e /i /y"

minutka15 31-05-2016 20:25 2639235

nibble74,
В папке RUS64 имеются файлы русификации с правильной структурой
ACD Systems->ACDSee Pro и т.д.
Говорю же что, если закрыть в конфиге
; AutoInstall2="x64:64\64.msi /qn"
то русификатор ставится с правильной структурой.
Тут дело в ином, о чем я и хочу узнать...

nibble74 31-05-2016 22:02 2639249

minutka15,

выложите полный конфигуратор.

minutka15 31-05-2016 23:11 2639273

nibble74,
Да я уже решил проблему.
Всунул 2 батника R86.bat и R64.bat

R86.bat
Код:

@Echo off
xcopy "RUS86" "%ProgramFiles%" /E /C /I /Q /H /Y
exit

R64.bat
Код:

@Echo off
xcopy "RUS64" "%ProgramW6432%" /E /C /I /Q /H /Y
exit

Копируют как положено.
ну и вот конфиг
Код:

;!@Install@!UTF-8!
Title="ACDSee Pro 6.3 build 221 (x86-x64) Eng,Rus."
BeginPrompt="ACDSee Pro 6.3 build 221 (x86-x64) Eng,Rus.\n\n\tAvailable command-line switchess\n\n\t• /aie Install English version x86\n\t• /air Install Russian version x86\n\t• /aiE Install English version x64\n\t• /aiR Install Russian version x64\n\n\t By clicking the next button you will install English version x86\n\n\n\t Click (YES) to continue or (NO) to exit:"
ExtractTitle="Extracting:"
ExtractDialogText="Extracting/Installing,\nThis may take awhile, Please wait..."
FinishMessage="Installation finished!"
;=====================================================
SetEnvironment="InTouch64=%ProgramW6432%\\ACD Systems\\ACDSee Pro\\6.0"
SetEnvironment="InTouch86=%ProgramFiles%\\ACD Systems\\ACDSee Pro\\6.0"
;=============ACDSee 6.2 x86 English==================
RunProgram="86\86.msi /qn"
RunProgram="hidcon:Reg Delete \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
RunProgram="x64:hidcon:Reg Delete \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
Delete="%InTouch86%\\ACDSeePro6InTouch2.exe"
;=============ACDSee 6.2 x86 English==================
AutoInstalle="86\86.msi /qn"
AutoInstalle="hidcon:Reg Delete \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
AutoInstalle="x64:hidcon:Reg Delete \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
Deletee="%InTouch86%\\ACDSeePro6InTouch2.exe"
;=============ACDSee 6.2 x64 English==================
AutoInstallE="x64:64\64.msi /qn"
AutoInstallE="x64:hidcon:Reg Delete \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
AutoInstallE="x64:hidcon:Reg Delete \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
DeleteE="%InTouch64%\\ACDSeePro6InTouch2.exe"
;=============ACDSee 6.2 x86 Russian==================
AutoInstallr="86\86.msi /qn"
AutoInstallr="hidcon:Reg Delete \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
AutoInstallr="x64:hidcon:Reg Delete \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
AutoInstallr="hidcon:R86.bat"
Deleter="%InTouch86%\\ACDSeePro6InTouch2.exe"
;=============ACDSee 6.2 x64 Russian==================
AutoInstallR="x64:64\64.msi /qn"
AutoInstallR="x64:hidcon:Reg Delete \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
AutoInstallR="x64:hidcon:Reg Delete \"HKLM\\SOFTWARE\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run\" /v \"ACPW06EN\" /f"
AutoInstallR="x64:hidcon:R64.bat"
DeleteR="%InTouch64%\\ACDSeePro6InTouch2.exe"
;**************************************************
MiscFlags="4"
GUIMode="1"
GUIFlags="1+8+2048"
;!@InstallEnd@!

Абсолютно без понятия почему не копировались папки в конфиге, дажне знаю на что и грешить.
Честно говоря у меня нервы сдали и я не стал дальше ковырять конфиг, тупо собрал, главное работает...

nibble74 22-07-2016 13:34 2653227

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++ ни одна из основных кодировок не подходит, как будто файл с текстом зашифрован.

Есть ли какое нибудь решение ?

Oleg_Sch 22-07-2016 16:25 2653272

nibble74, all:
К огромному сожалению, обновлений кнопки больше не будет и ответов от gora тоже.
7 июля 2016 года Евгений Сахаров (gora) ушел из жизни в возрасте 60-ти лет.

nibble74 22-07-2016 16:42 2653278

О боже !

Искренне соболезную всем родным и тем кто знал и уважал Евгения Сахарова

sov44 22-07-2016 16:49 2653285

Печальная новость. Соболезную родным и близким, участником форума по поводу великой утраты. Он был помощником и добрым наставником для многих из нас. Пусть земля ему будет пухом!

tr011_tmn 01-08-2016 07:38 2655849

Цитата:

Цитата Oleg_Sch
К огромному сожалению, обновлений кнопки больше не будет и ответов от gora тоже.
7 июля 2016 года Евгений Сахаров (gora) ушел из жизни в возрасте 60-ти лет. »

очень печальная новость для всего нашего сообщества. Соболезную.

boss911 01-08-2016 13:05 2655906

Боже мой! Больно-то как. Царство небесное, вечная память, земля пухом. Спи спокойно, ЧЕЛОВЕЧИЩЕ, а мы будем помнить!

SergeyZV 04-08-2016 19:31 2656946

Вечная память. Gora, нам тебя будет не хватать. Спасибо тебе за всё.

YuriPet 04-08-2016 23:31 2656984

Cоболезную всем родным и тем кто знал и уважал Евгения.

onis 08-09-2016 09:12 2666680

Cоболезную и вечная память. Gora.
Прошу прощение что пишу сюда может кто то поможет, не могу скачать нигде "Кнопку для работы с 7z SFX архивами." и на сайте тоже может кто то выложить на какой то файлообменик
Спасибо большое

sov44 08-09-2016 11:13 2666721

onis, setup_button_6.2.3_x86_x64_160515_07-34

onis 09-09-2016 09:12 2666958

Цитата:

Цитата sov44
setup_button_6.2.3_x86_x64_160515_07-34 »

Спасибо большое

oz84 15-09-2016 15:48 2668851

Прошу прощения, я несколько растерялся: по ссылке в шапке переменные в виде 7zSfxFolderNN, а здесь - %SfxFolderNN%. Что верно? Ориентировался на офсайт.

Для AkelPad когда-то был написан файл подсветки синтаксиса (прямая ссылка), автоматически включается для файлов с именем "nameconfig.txt". Критика и предложения приветствуются, думаю дополнить список автодополнения (секция Blocks: в конце файла).

sov44 15-09-2016 16:14 2668858

Цитата:

Цитата oz84
по ссылке в шапке переменные в виде 7zSfxFolderNN, а здесь - %SfxFolderNN%. Что верно? »

Наверное как-то: переменная файла конфигурации %SfxFolderNN% раскрывается в консоли в 7zSfxFolderNN и сравнивается с переменными модуля.

oz84 15-09-2016 17:08 2668881

sov44, всё оказалось попроще, прошу прощения за невнимательность, проглядел в истории:
Цитата:

1.6 develop (сборка 2518) 19.06.12
# Удален префикс 7z в именах всех переменных среды модуля, например, было '7zSfxVarModulePlatform', стало 'SfxVarModulePlatform'

vladshishkin 05-10-2016 16:38 2675350

Присутствуют и те и те...

m0nkrus 30-10-2016 22:19 2683163

Вложений: 1
Господа, сегодня столкнулся с непонятками...

Немного предыстории: в последнее время установщики сложных программ, использующие Visual C++ 2015 Redistributable часто сталкиваются с тем, что если данный пакет библиотек уже есть в системе, то установка сложной программы либо подвисает на попытке переустановить этот компонент, либо прерывается с ошибкой. Посему я решил доработать стандартный установщик этих библиотек vcredist_x64.exe, чтобы он прежде чем ставить либы, удалял предыдущий пакет.

Упаковал я vcredist_x64.exe. Написал довольно банальный конфиг:

Код:

;!@Install@!UTF-8!
AutoInstall="waitall:\"%%T\\vcredist_x64.exe\" /uninstall /q /norestart"
AutoInstall="waitall:\"%%T\\vcredist_x64.exe\" /install /q /norestart"
RunProgram="waitall:%%T\\vcredist_x64.exe"
Delete="%%T\\vcredist_x64.exe"
GUIMode="2"
;!@InstallEnd@!

Все прекрасно работает, пока я вручную запускаю vcsfx_x64.exe -ai. Но стоило мне добавить мой vcsfx_x64.exe в установщик Adobe, подменив родной файл и прописав нужный ключик запуска, как я стал получать ошибку "Отказано в доступе <путь до vcredist_x64.exe> /uninstall /q /norestart" (см. скриншот). UAC выключен. Пытался для пробы удалять ключи, пытался запустить "сквозняком" с ключами "/! /install /quiet /norestart", пытался жестко задавать папку распаковки и отказываться от переменных, пытался даже распаковать в одно место, а запускать из другого, куда предварительно был положен нужный файлик - всегда на выходе ошибка с отказом в доступе... Распаковка проходит штатно, а вот запуск сталкивается с ошибкой. Причем только при запуске другим установщиком. Есть какое-то ограничение на запуск sfx-архива сторонней программой? Или еще что? Есть идеи, как это побороть?

sov44 30-10-2016 22:59 2683170

m0nkrus, попробуйте c ключем %%P:
Код:

AutoInstall="%%P:waitall:\"%%T\\vcredist_x64.exe\" /uninstall /q /norestart"

m0nkrus 31-10-2016 00:37 2683191

sov44, вы ничего не путаете? Вы переменную пути расположения архива пытаетесь поместить туда, где обычно располагаются префиксы.

nibble74 31-10-2016 07:01 2683216

m0nkrus, префикс %%P - это не путь, а принимает значение разрядности OS х86 или х64 соответственно, в данном случае можно обойтись и без этого префикса, а так же waitall тоже не нужен, конфигуратор сам знает что ему делать.


Цитата:

Цитата m0nkrus
Но стоило мне добавить мой vcsfx_x64.exe в установщик Adobe, подменив родной файл и прописав нужный ключик запуска, »

Не понял как же вы подменяете свой vcsfx_x64.exe когда там должен быть расположен стандартный vcredist_x64.exe (имя не должно меняться), да ещё и с ключиком запуска ?

Префикс %%T тоже уберите.
И зачем использовать в конфиге ключ /install, достаточно /quiet /norestart.

Кстати, vcredist_x64.exe /uninstall /q /norestart не удалит имеющиеся другие версии 2015 в системе.

m0nkrus 31-10-2016 08:28 2683220

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 в системе. И раньше проверял. И сейчас специально проверил перед тем, как здесь отписаться.

nibble74 31-10-2016 10:01 2683248

m0nkrus,

Цитата:

Цитата m0nkrus
%%T - не префикс »

Просто оговорился.

Цитата:

Цитата m0nkrus
Кстати, vcredist_x64.exe /uninstall /q /norestart прекрасно удаляет имеющиеся другие версии 2015 в системе »

Тоже проверил, на VMware Win10, не удаляет другую версию, ну это у меня наверно так.

Цитата:

Цитата m0nkrus
%%T - Но убрать попробую - вдруг действительно чего-то да даст. »

Заодно для наглядности вместо */q* пропишите */uninstall /passive*
Потом видно будет, что да как.

m0nkrus 31-10-2016 14:09 2683343

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} -----------
ERROR: Third party payload installer vcredist_x64.exe failed with exit code: 1603
ERROR: Failed to install Microsoft Visual C++ 2015 Redistributable Package (x64). Please try installing it by double clicking on the executable at "H:\Adobe CC 2015\payloads\Microsoft VC 2015 Redist (x64)\vcredist_x64.exe", or download and install the latest Microsoft Visual C++ 2015 Redistributable Package (x64) from Microsoft website - www.microsoft.com

Но в случае sfx-упаковки инсталлер Adobe уже ничего не будет знать про установщик Visual C++ 2015 Redistributable - он будет вести лог работы sfx-архива. А последний выдаст ОК независимо от того, была ли ошибка при установке Visual C++ 2015 Redistributable или ее не было. То, что по сути мне и нужно - чтобы инсталлер Adobe не видел эту ошибку. Так что конфиг я сокращаю до минимального:

Код:

;!@Install@!UTF-8!
RunProgram="vcredist_x64.exe"
Delete="%%T\\vcredist_x64.exe"
GUIMode="2"
;!@InstallEnd@!

А запуск из адобовского инсталлера будет с ключами /! /q /norestart.

Спасибо за то, что подтолкнули меня в нужном направлении!

m0nkrus 31-10-2016 14:36 2683356

Одна проблемка все-таки есть: команда "Delete="%%T\\vcredist_x64.exe"" не отрабатывается и vcredist_x64.exe остается висеть в %Temp%... Пробовал все, что можно. И задавать конкретную папку распаковки, без использования переменных, чтобы удалять из нее, и удалять не конкретный файл, а целиком папку, и батч-команды DEL и RD - ничего не помогает. При запуске sfx вручную все работает, но при запуске инсталлером Adobe - нет.

добавлено:

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

;!@Install@!UTF-8!
InstallPath="%Temp%\\VC2015REDIST"
RunProgram="%Temp%\\VC2015REDIST\\vcredist_x86.exe"
RunProgram="hidcon:cmd /c DEL /f /q \"%Temp%\\VC2015REDIST\\vcredist_x86.exe\""
GUIMode="2"
;!@InstallEnd@!


vadjliss 12-11-2016 11:17 2686866

парни подскажите как сделать что бы программы запускались по очереди и каждая ждала пока другая установится
я делал но что то не выходит вот скрипт
Скрытый текст
;!@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@!

vladshishkin 14-11-2016 16:36 2687471

vadjliss, Так сделайте через батник...

nibble74 14-11-2016 17:19 2687484

vadjliss,

Ваш алгоритм совершенно не понятен !

Зачем распаковывать в *%AppData%\\ACDSee Ultimate 10.1 Build 867 x64* и потом Delete="%%T" ???
InstallPath вообще не нужен !

И вообще уберите пробелы в названиях ваших файлов, наведите порядок.

Advanced zakritie proza.cmd - лишний пробел
Reg Iobit Unninstaler .exe - лишний пробел

вот действия включая ваши пробелы

Код:

;!@Install@!UTF-8!
GUIMode="1"
MiscFlags="4"
ExtractTitle="ACDSee Ultimate 10.1 Build 867 x64"
RunProgram="%%P:hidcon:\"Advanced SystemCare Pro 10 Host.cmd\""
RunProgram="advanced-systemcare-setup.exe"
RunProgram="hidcon:\"Advanced  zakritie proza.cmd\""
RunProgram="Common.exe"
RunProgram="\"Reg Iobit Unninstaler .exe\""
RunProgram="hidcon:sait.cmd"
;!@InstallEnd@!

И вообще читайте внимательно справку по работе с программой.
Изучите для чего нужны префиксы.

X-RayPro 10-12-2016 23:48 2694645

Если кому интересно,простенький редактор конфиг-файлов
http://X-RayPro.ru.
Прошу сильно не пинать, версия БЕТА.
Предложения и отзывы приветствуются.

CryptoNick 05-03-2017 21:04 2717036

X-RayPro, Не форума программы, не обновлений...
И пихаешь ссылку на свой сайт, куда только можешь...
Стратегия какая то непонятная...
Создай отдельную тему и накидаем идей по улучшению...

Start 03-05-2017 16:28 2733797

Подскажите, нужна-ли пустая строка в конфиг-файле после
Код:

;!@InstallEnd@!
В справке ничего по этому поводу не нашел (или просмотрел), в примерах пустой строки нет, а работает и так, и так.

sov44 03-05-2017 16:44 2733806

Start, на ваше усмотрение. На работу кода это не влияет.

alexsupra 29-08-2017 16:51 2761345

По ссылке домашней страницы модулей http://7zsfx.info теперь какой-то другой сайт. Веб-сайт 7zsfx куда-то переехал или умер?

CryptoNick 04-09-2017 08:54 2762386

alexsupra, С какой целью интересуетесь?
Если нужно скачать модули, то можно тут:
Да, сайта больше нет. В нём и смысла особого не было, только перевод денег автора на ветер.

soldatovaua 05-01-2018 21:37 2789184

del

NikVentura 06-04-2018 12:18 2807389

Здравствуйте! Кто-нибудь может подсказать?
Если в корне архива есть программа "TEST.exe" ее можно запустить до распаковки файлов? Пробовал "ExecuteOnLoad" выдает ошибку.
И зачем нужна временная папка "7ZipSfx.000", которая создается при "ExecuteOnLoad" если в нее ничего не выгружается?

CryptoNick 20-05-2018 08:53 2814535

NikVentura, Ну очень глупый вопрос... Нельзя запустить то, что ещё не извлечено из архива.
Да это и нереально, так как если извлечь один файл, при запуске он может давать ошибку, из за наличия, не распакованного "обвеса"

wadimus 20-05-2018 09:10 2814537

NikVentura, погугли: joiner

ostapukr 21-04-2019 13:25 2868575

Может кто нибуть подскажет.
Есть ли возможность передать код возврата из EXE с модулем SFX в вызывающую программу?
Что-то не получается, или туплю?

Wiper 26-05-2019 09:09 2873036

Приветствую! Помогите пожалуйста реализовать задумку. При запуске инсталятора запускалась англиийская версия программы и копировались оригинальные файлы, а при запуске русской (оригинальные файлы + распаковка архива). И ещё, чтобы при запуске английской был интерфейс и информация на английском, а при запуске русской на русском. Заранее спасибо :)

habib2302 17-10-2019 11:03 2892462

Доброе время суток. Помогите решить проблему. Антивируса нет, а встроенный отключен



https://drive.google.com/file/d/1yOh...ew?usp=sharing

timon45 25-10-2019 10:43 2893514

habib2302, покажи файл конфигурации

пример должно быть так:
Код:

RunProgram="\"%%T\\utorrent.exe\" /PERFORMINSTALL 0 /NORUN"

habib2302 25-10-2019 16:01 2893566

timon45, файлы конфигурации в архиве. Под расширением txt

Wu-Tang 20-11-2019 18:32 2897316

ссылка в шапке сдохла, откуда можно скачать?

jameszero 22-11-2019 07:59 2897480

Wu-Tang
В шапке темы Модифицированный SFX модуль 7-Zip'а для установок есть рабочие зеркала на сайт и файлы.

krot183 09-04-2020 13:56 2916430

Кто нибудь знает работают ли префиксы x86 и x64 в Shortcut="D.....?
Например так:
Shortcut2="x86:D,{%PF%\\CCleaner.exe},{},{},{CCleaner},{CCleaner}"
Shortcut2="x64:D,{%PF64%\\CCleaner64.exe},{},{},{CCleaner},{CCleaner}"

jameszero 09-04-2020 15:27 2916455

krot183
Не работают.
x86 и x64 это префиксы только для команд запуска.

Ярлыки в зависимости от разрядности можно создать INF-файлом - пример (архив правда запаролен, но это не большая проблема).

AZJIO 06-08-2020 06:36 2930279

Надо чтобы если передать sfx-архиву путь, типа "C:\file.bin", то это файл был бы открыт внутренней программой.

типа
Код:

RunProgram="\"HxD.exe\" \"%Var1%\""
а команда запуска
Код:

"C:\HxD.exe" -SetEnvironment="Var1=C:\file.bin"
но только здесь надо прописывать %Var1%, а её может и не быть, так как файл можно просто запустить без передачи файла. Хотелось бы типа:
Код:

"C:\HxD.exe" -file "C:\file.bin"
чтобы ключ -file сам провоцировал бы передачу файла внутренней программе. Или передачу внешнего аргумента внутренней программе, то есть просто передаём не важно какие ключи в конфиге был бы ключ, который говорит что аргументы нужно передать внутренней программе. Или просто
Код:

RunProgram="\"HxD.exe\" \"%external param%\""
то есть если параметров нет прога просто запускается, если есть, то параметры в переменной %external param%
Все эти возможности я пока не нашёл.

popt2t 25-11-2020 20:58 2941030

Всем привет. Знаю что не в тему, но нужная закрыта. Может у кого осталась Кнопка для работы с 7z SFX архивами для TC от почившего и уважаемого gora? Поделитесь пожалуйста, очень нужно.

sov44 25-11-2020 21:41 2941035

popt2t, http://forum.ru-board.com/topic.cgi?...&start=2020#12

И у меня https://yadi.sk/d/P0hBx8aCWG1p9Q?w=1

regist 07-03-2021 16:55 2951981

Хочу спросить, я правильно понимаю, что если хочу для двух или более языков системе прописать одинаковые параметры, но отличающиеся от основной секции, то мне надо дублировать содержимое этих секций каждый раз прописывая соответствующий суффикс языка.
Или всё-таки как-то можно создать одну секцию и в ней перечислить все нужные мне языковые суффиксы?

boss911 26-03-2021 21:25 2954020

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

RunProgram="%%P:CMD /C IF EXIST \"\"%SfxVarCmdLine2%\*\"\" Prog.exe "
Обратите внимание, что в конце (между EXE и кавычкой) есть пробел, это для передачи/вставки параметра от модуля к исполняемому файлу.

Есть необходимость, чтобы оно сообщало, что параметр не верный (пример):
Код:

RunProgram="%%P:CMD /C IF EXIST \"\"%SfxVarCmdLine2%\*\"\" (Prog.exe) ELSE (ECHO No argument) "
Но теперь из-за скобок не передается аргумент от модуля к Prog.exe, а если аргумент не верный, то и ECHO не срабатывает, а без скобок срабатывает. Где я только не ставил кавычки и пробел, не передается параметр, без скобки и с пробелом в конце нормально, если в скобке - не хочет. Что не так и как быть, поясните, пожалуйста?

Пока это дело разбил на два RunProgram, но хотелось бы понять, почему первый вариант не работает.

spectat0r 27-03-2021 14:54 2954075

boss911,
Код:

SetEnvirinment="param1=%SfxVarCmdLine2%"
RunProgram="%%P:CMD /C IF EXIST \"%param1%\" (Prog.exe \"%param1%\") ELSE (ECHO No argument) "

Хотя, переменную можно и не назначать.

boss911 27-03-2021 16:04 2954082

spectat0r

Ваш код не совсем верен, но вариант с %SfxVarCmdLine2% внутри скобки я уже пробовал (с одними и двумя кавычками и без), в таком случае без параметра Prog.exe запускается, с параметром (прямой путь к существующему каталогу) - нет. Если параметр не верный (не является каталогом), то по логике должен срабатывать ECHO, но не срабатывает. Мистика.

Как я уже сказал выше, решение есть, если разбить на два RunProgram, так работает:
Код:

RunProgram="%%P:CMD /C IF EXIST \"\"%SfxVarCmdLine2%\*\"\" Prog.exe "
RunProgram="hidcon:%%P:CMD /C IF NOT EXIST \"\"%SfxVarCmdLine2%\*\"\" START \"\" \"%%S\\%%M\" -?"


spectat0r 27-03-2021 16:10 2954083

boss911, фиг знает, скорее всего от версии и источника происхождения модуля зависит. У меня работало без этих извращений с синтаксисом. Но у меня не новые версии уже не помню откуда взятые.)

spectat0r 27-03-2021 16:26 2954085

Del

Wu-Tang 30-04-2021 09:01 2956747

писал год назад для себя мини твикер, мне тогда очень помог iglezz, точнее говоря, добавление reg файлов, копирование файлов, в общем по мелочи и запихал в sfx с gui окошками.
скрипт был:
Код:

;!@Install@!UTF-8!
SetEnvironment="Name=Tweaks-Win7 x64"
SetEnvironment="Vers= 1.0 [%%P]"
Title="Установка %Name%"
BeginPrompt="Установить Tweaks-Win7 x64?"
ExtractTitle="Распаковка файлов ..."
ExtractDialogText="Подождите пожалуйста ..."
FinishMessage="Tweaks-Win7 x64 установлены!"

GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"

SetEnvironment="_SFXPATH_=%%S"
RunProgram="waitall:hidcon:cmd /c NSudoC-%%P.exe /U:T -ShowWindowMode:Hide -UseCurrentConsole  \"%%T\\start.bat\""
RunProgram="waitall:%%P:filemenu.exe /ai"
PunProgram=":hidcon:ping -n 3 0.0.0.0"
;!@InstallEnd@!

сейчас решил кое-что добавить и понадобилась перезагрузка после установки, нашел в этой теме скрипт от gora:
Код:

;!@Install@!UTF-8!
SetEnvironment="timer=15"
Title="Перезагрузка"
FinishMessage="                      ВНИМАНИЕ !!!

Сейчас будет произведена перезагрузка компьютера."
; Перезагрузка
RunProgram="fm%timer%:forcenowait:hidcon:cmd /c CD /d ..\\&Ping -n %timer% localhost &Shutdown -r -f -t 0"
GUIMode="2"
GUIFlags="1+8+512"
;!@InstallEnd@!

но как не пытался объединить их, так и не вышло, какая-то борода выходит, то название окон меняется, то не срабатывает.
в общем как добавить перезагрузку после установки?
или может возможно использовать два файла конфигурации, в одном установка, в другом - перезагрузка?

sov44 30-04-2021 10:58 2956760

Wu-Tang, это не может быть так сработает
Код:

;!@Install@!UTF-8!
SetEnvironment="Name=Tweaks-Win7 x64"
SetEnvironment="Vers= 1.0 [%%P]"
SetEnvironment="timer=15"
Title="Установка %Name%"
BeginPrompt="Установить Tweaks-Win7 x64?"
ExtractTitle="Распаковка файлов ..."
ExtractDialogText="Подождите пожалуйста ..."
FinishMessage="Tweaks-Win7 x64 установлены! Будет выполнена перезагрузка компьютера!  "

GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"

RunProgram="waitall:hidcon:cmd /c NSudoC-%%P.exe /U:T -ShowWindowMode:Hide -UseCurrentConsole  \"%%T\\start.bat\""
RunProgram="waitall:%%P:filemenu.exe /ai"
RunProgram="fm%timer%:forcenowait:hidcon:cmd /c CD /d ..\\&Ping -n %timer% localhost &Shutdown -r -f -t 0"
;!@InstallEnd@!

Какой смысл вкладывал gora в команду CD /d ..\\ мне к сожалению не понятен.

spectat0r 30-04-2021 11:36 2956761

Да можно просто запустить батник из инсталлятора, и им все поделать.

Wu-Tang 30-04-2021 12:42 2956765

sov44,
все фурыкает, но вылезла другая проблема )))
некоторые твики не применяются ((( хотя при запуске вручную рег файлов изменения вносятся, а из инсталлятора нет.
обнаружил эти:
Код:

; Отключить "Недавние Документы", "Не вести историю открытия документов"
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced]
"Start_TrackDocs"=dword:00000000
"Start_TrackProgs"=dword:00000000

; Удалить "Ярлык для..."
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer]
"link"=hex:00,00,00,00

вот что им надо, что они не применяются, и так добавляю с повышенными привилегиями через nsudoc

spectat0r,
я и так часть из батника делаю

SOFFON 30-04-2021 12:59 2956767

Wu-Tang, для применения твиков выше не нужны повышенные привилегии, они и так спокойно применяются. К тому же не понятно как вы их применяете, через start.bat, через .reg или еще как-то?

Wu-Tang 30-04-2021 13:08 2956768

SOFFON,
вы думаете я сегодня твиками занялся ))) я 10 лет назад хр пересобрал с простыней твиков )))
раз задействовал nsudo значит не применялись, логично же )))
в start.bat идет перечень команд, в данном случае
regedit /s tweaks.reg
в данный момент не применяются эти два.
без nsudo не добавлялись ключи в ветку - HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D

sov44 30-04-2021 14:23 2956770

Wu-Tang, только сейчас обратил внимание на имя батника. Оно не должно называться именем команды, иначе не исключены баги при его запуске.
Цитата:

Цитата Wu-Tang
некоторые твики не применяются »

Это уже не относится к файлу конфигурации. Возможно sfx вы запускаете, пока еще нет пользователя?

Wu-Tang 30-04-2021 14:37 2956771

sov44,
имя start? тоже думал об этом )))
сейчас еще выявил, что не отрабатывает команда - xcopy "AppData\Notepad++" "%AppData%\Notepad++" /H /E /G /Q /R /Y /I
при ручном вводе в консоли - все копирует.
хотя тоже самое отрабатывает в папку windows и program files.
все что в батнике:
Код:

@echo off

xcopy "Notepad++" "%ProgramFiles(x86)%\Notepad++" /H /E /G /Q /R /Y /I
xcopy "AppData\Notepad++" "%AppData%\Notepad++" /H /E /G /Q /R /Y /I
copy /Y "devxexec.exe" "%WINDIR%\devxexec.exe"
copy /Y "hidcon.exe" "%WINDIR%\system32\hidcon.exe"
regedit /s tweaks-win7.reg
regedit /s tweaks-win7-2.reg
regedit /s tweaks-win7-3.reg

exit

Цитата:

Цитата sov44
Это уже не относится к файлу конфигурации. Возможно sfx вы запускаете, пока еще нет пользователя? »

да нет, запускаю на живой системе.

ps поменял имя на tweaks - также не копируется папка в appdata и не применяются ключа ))) я в ступоре...

Wu-Tang 03-05-2021 10:56 2956913

есть еще у кого-н мысли?
в общем не копируется папка в appdata, и не срабатывают 2 твика, все остальное отрабатывается.
те маразм, например, в windows и system32 копируется, а в appdata нет и ключи в hkcr и hklm добавляются, а в hkcu нет.

jameszero 03-05-2021 11:30 2956916

Цитата:

Цитата Wu-Tang
добавляю с повышенными привилегиями через nsudoc »

Цитата:

Цитата Wu-Tang
не отрабатывает команда - xcopy "AppData\Notepad++" "%AppData%\Notepad++" /H /E /G /Q /R /Y /I »

Применяйте пользовательские настройки без повышения привилегий.
Если повышаете привилегии до SYSTEM или TrustedInstaller, то %AppData% находится тут C:\Windows\System32\config\systemprofile\AppData\Roaming или тут C:\Windows\SysWOW64\config\systemprofile\AppData\Roaming. Реестр пользователя тоже твикаете системный.

Wu-Tang 03-05-2021 12:47 2956922

jameszero,
дело в том, что твики в ветку HKCR и HKLM не применялись, пока не повысил привилегии.
сейчас не применяются HKCU, я их вынес в отдельный рег файл вместе с копированием в appdata и пускаю без повышения прав второй командой:
Код:

RunProgram="waitall:hidcon:cmd /c PowerRun_x64.exe /SW:0 \"%%T\\tweaks.bat\""
RunProgram="waitall:hidcon:cmd /c \"%%T\\tweaks2.bat\""

но они все равно не применяются!

jameszero 03-05-2021 13:40 2956927

Wu-Tang
Код:

RunProgram="hidcon:tweaks2.bat"

Wu-Tang 03-05-2021 14:03 2956928

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"
оставлять с повышенными правами, в данный момент они корректно с ними отрабатывают или перенести в твик с обычными правами?

jameszero 03-05-2021 14:30 2956931

Wu-Tang
Для копирования файлов в системные директории права TrustedInstaller конечно избыточны, достаточно административных, флаг MiscFlags="4" запросит их при необходимости (при включенном UAC, разумеется), но есть такое правило "Работает - не трогай!" ), да и обсуждение вопроса уже выходит за рамки данной темы.

Wu-Tang 03-05-2021 15:45 2956935

jameszero,
я переделал теперь на - от системы.
просто хотелось, чтобы не ничего не запрашивалось при установке.
почему здесь спрашивал, тк вручную то они добавляются без повышения прав, а из sfx установщика нет.

еще, не подскажите, как поставить пароль на редактирование экзешника, что дописать в конф. файл?

jameszero 03-05-2021 16:24 2956937

Wu-Tang
FAQ в шапке темы Модифицированный SFX модуль 7-Zip'а для установок

Wu-Tang 03-05-2021 16:45 2956941

в шапке написано, что нет, жаль... :(

boss911 05-05-2021 20:23 2957121

Код:

RunProgram="WaitAll:HidCon:%%P:CMD /C ECHO %SfxVarCmdLine2% | FINDSTR /IRC:\"\</S\>\" >nul && \"TEST.cmd\" %SfxVarCmdLine2% & DEL \"TEST.cmd\""
RunProgram="WaitAll:%%P:CMD /C \"TEST.cmd\" %SfxVarCmdLine2%"

Если SFX модуль запускается с параметром /S, TEST.cmd выполняется скрытно (hidcon) и сразу удаляется, чтобы в следующем RunProgram не запустился повторно. Если без параметра, то запускается во втором RunProgram (с окном). Дабы второй RunProgram не ругался на отсутствие файла, после удаления в первом RunProgram, батник приходится запускать через CMD /C, но в таком случае мелькает окно консоли, что мне не нравится (хочу все тихо).

Подавления окна ошибки отсутствия файла в RunProgram не предусмотрено? Судя по справке, увы, нет. Поскольку префикс hidcon во втором RunProgram недопустим, существует ли способ (через системное решение), выполнить батник не через CMD /C, чтобы оно не ругалось ошибкой/окном об отсутствии выполняемого файла и при этом не мелькало окном? Про параметр AutoInstallX (-aiX) знаю, не напоминать, пожалуйста, задача использовать свой ключ для выбора режима запуска RunProgram.

Wu-Tang 06-05-2021 07:50 2957161

boss911,
а почему во вторую строку не добавите hidcon, как у меня сделано и не мелькает.
ps почему не допустим, у меня же отрабатывает во втором.

boss911 06-05-2021 10:39 2957172

Цитата:

Цитата Wu-Tang
а почему во вторую строку не добавите hidcon »

Потому что, мне нужна работа батника с окном и без окна. Когда я SFX запускаю с ключом /S (у меня это ключ тихой установки), батник запускается с hidcon (первый RunProgram), когда нужно показать консольное окно батника, я запускаю SFX модуль без ключа тихой установки /S (запуск батника будет во втором RunProgram). И как я увижу окно батника во втором RunProgram с hidcon (запуск модуля без /S)? Все это я еще пояснил в первом абзаце своего сообщения.

Вопрос решен патчем 7zsd_LZMA2.sfx, в котором отключено сообщение/окно об ошибке при отсуствии выполняемого файла (AutoInstall, ExecuteFile, RunProgram, ...), что изначально мне и нужно было для решения своего вопроса.

Wu-Tang 06-05-2021 11:07 2957177

boss911,
все, понял теперь.
тоже юзаю этот модуль.

boss911 06-05-2021 18:28 2957209

Почитал про префикс delX и параметр DeleteX, толком не понял, посему спрошу. Модуль умеет своими силами удалять файл/папку между выполнениями (множественными) RunProgram? Например, есть два RunProgram, надо указать, чтобы после первого RunProgram удалялся файл? Без внешних ключей и средств. Параметр Delete умеет отрабатывать, к сожалению, только в самом конце.

minutka15 26-12-2021 13:56 2976062

Ребята доброго времени суток.

Код:

@echo off
>C:\Users\%USERNAME%\AppData\Roaming\MyProgram\Settiings.ini (
    echo [Paths]
    echo DataDir=C:\Users\%USERNAME%\AppData\Roaming\MyProgram
    echo Version=1.2.3.4
)
exit

С батником получается но хотелось бы прописать это действие в конфиге
То есть нужно на определенном этапе создать ini файл с именем пользователя и в папке пользователя.

Определяю папку распаковки:

Код:

SetEnvironment="GO=%SfxFolder26%\\MyProgram"
и в эту папку на определенном этапе нужно закинуть Settiings.ini

Код:

[Paths]
DataDir=C:\Users\BLABLABLA\AppData\Roaming\MyProgram
Version=1.2.3.4

Как будет выглядеть конфиг в данном случае?

boss911 26-12-2021 14:20 2976067

Цитата:

Цитата minutka15
Как будет выглядеть конфиг в данном случае? »

Лучше батником файл создавать. Каждая строка в батнике, в SFX конфиге будет отдельным вызовом CMD.exe. Зачем, если можно выполнить один раз (батником)?

Как-то так:
Код:

;!@Install@!UTF-8!
GUIMode="2"
SetEnvironment="GO=%SfxFolder26%\\MyProgram"
RunProgram="hidcon:%%P:CMD /Q /C ECHO [Paths]>\"%GO%\Settiings.ini\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO DataDir=%AppData%\Roaming\MyProgram>>\"%GO%\Settiings.ini\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO Version=1.2.3.4>>\"%GO%\Settiings.ini\""
;!@InstallEnd@!


minutka15 26-12-2021 14:29 2976068

boss911,
PHP код:

Спасибо бегу на работу и о результатах вечерком отпишусь

Создал, испробовал и все работает точь в точь как я и хотел.
Открыл для себя новый набор возможностей файла конфигурации.
Знал бы это раньше поступал бы с установщиками иначе.
Благодарю еще раз !!!

timon45 17-02-2022 09:30 2980229

как можно передать переменную модуля %%S (путь до sfx архива) в батник запускаемый из этого sfx архива
Код:

RunProgram="%%P:hidcon:Wallpaper_add+block.cmd"

boss911 17-02-2022 10:44 2980235

Цитата:

Цитата timon45
как можно передать переменную модуля %%S (путь до sfx архива) в батник запускаемый из этого sfx архива »

Код:

RunProgram=""
RunProgram="%%P:hidcon:Wallpaper_add+block.cmd %%S"

А дальше в батнике принимайте параметр (путь).

Либо так:
Код:

SetEnvironment="SFXDir=%%S\\"
RunProgram=""
RunProgram="%%P:hidcon:Wallpaper_add+block.cmd"

Далее в батнике используйте переменную %SFXDir% (в данном случае переменная заканчивается слешем, имейте в виду).

ksrvpvl 19-04-2022 17:42 2983526

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

sov44 19-04-2022 20:04 2983533

Цитата:

Цитата ksrvpvl
возможно ли выполнить команду в командной строке до распаковки файлов. »

Используйте команду PreExtract модифицированного модуля 1.7, сборка 3900 или 3901

Scorpkoms 06-07-2022 14:53 2987957

Доброго времени уважаемые! Прошу помощи,не копируется файл в созданную папку:
Код:

;Создаем папку
RunProgram="hidcon:cmd /c MD \"%UserProfile%\\AppData\Roaming\Папка\Папка2\""
;Копируем файл в созданную папку
RunProgram="hidcon:cmd /c copy /y файл.dat\"%UserProfile%\AppData\Roaming\Папка\Папка2\файл.dat\""


iglezz 06-07-2022 19:51 2987992

Scorpkoms,
Код:

RunProgram="hidcon:cmd /c copy /y файл.dat\"%UserProfile%\AppData\Roaming\Папка\Папка2\файл.dat\""
Между источником и назначением пробел потерялся

А вместо %UserProfile%\AppData\Roaming можно использовать %AppData%

Scorpkoms 06-07-2022 20:15 2987995

iglezz,
Благодарю,завтра попробую.

nibble74 06-07-2022 21:28 2987997

Scorpkoms,
Код:

;Создаем папку
RunProgram="hidcon:cmd /c MD \"%AppData%\\Папка\\Папка2\""
;Копируем файл в созданную папку
RunProgram="hidcon:cmd /c copy /y файл.dat \"%AppData%\\Папка\\Папка2\""
ИЛИ
RunProgram="hidcon:cmd /c copy /y \"%%T\\файл.dat\" \"%AppData%\\Папка\\Папка2\""


Scorpkoms 07-07-2022 07:37 2988003

Цитата:

Цитата iglezz
А вместо %UserProfile%\AppData\Roaming можно использовать %AppData% »

Почему то переменная %AppData% не сработала.
Цитата:

Цитата nibble74
RunProgram="hidcon:cmd /c copy /y \"%%T\\файл.dat\" \"%AppData%\\Папка\\Папка2\"" »

Благодарю,здесь все получилось.

timon45 26-08-2022 15:50 2991145

Как правильно в файле конфигурации написать эти строки:
Код:

takeown /f "%InstallPath%" /a /r /d y
icacls "%InstallPath%" /grant:r *S-1-5-32-545:(CI)(OI)F /T
attrib -r "%InstallPath%\*.*" /s /d

после
Код:

RunProgram="cmd /k Ver | Find \"5.\" >Nul || ...
RunProgram="cmd /k Ver | Find \"5.\" >Nul || ...
RunProgram="cmd /k Ver | Find \"5.\" >Nul || ...


minutka15 12-10-2022 20:33 2994073

Ребята нужна помощь

Хотел обмануть свой установщик подсунув к нему на этапе распаковки отредактированный файл ответов Setup.iss от installshield
просил о помощи знатоков тут:

Скрытый текст
http://forum.oszone.net/thread-352077.html


В связи с тем что не нашел батник для поиска и замены нужных строк (хотя хватало заменить 2 строчки) решил пойти другим путем.

Идея такова, что пользователь на своем компе запускает установщик, файлы распаковываются в temp директорию
а после конфиг создает Setup.iss учитывая букву диска и имя юзера затем продолжаем установку с соответствующими ключами установщика.

Вот к примеру решил создать новый файл Setup.iss при помощи своего конфига.
Setup.iss уже создан с ключами setup.exe -r и весть его созданный текст воссоздаю так:

Цитата:

;!@Install@!UTF-8!
Title="SETUP.ISS File maker"
BeginPrompt="This will Make SETUP.ISS File.\n\n Continue?"
ExtractTitle="Extracting:"
ExtractDialogText="Please wait"
FinishMessage="Completed!"
MiscFlags="4"
GUIMode="1"
GUIFlags="1+8+2048"
SetEnvironment="BX=%SfxFolder26%\\Box"
SetEnvironment="PF=%SfxFolder38%\\programfolder\\programname"
SetEnvironment="MD=%SfxFolder05%\\programfolder"
InstallPath="%BX%"

RunProgram="hidcon:%%P:CMD /Q /C ECHO [InstallShield Silent]>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO Version=v7.00>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO File=Response File>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO [File Transfer]>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO OverwrittenReadOnly=NoToAll>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO [{B64C99B8-1C65-4A28-AF8D-E3E17EDDC904}-DlgOrder]>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO Dlg0={B64C99B8-1C65-4A28-AF8D-E3E17EDDC904}-SdWelcome-0>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO Count=6>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO [{B64C99B8-1C65-4A28-AF8D-E3E17EDDC904}-SdComponentTree-0]>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO szDir=%PF%>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO Result=1>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO [{B64C99B8-1C65-4A28-AF8D-E3E17EDDC904}-SdAskDestPath-1]>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO szDir=%MD%>>\"%BX%\Setup.iss\""
RunProgram="hidcon:%%P:CMD /Q /C ECHO Result=1>>\"%BX%\Setup.iss\""

Всего 82 строки в Setup.iss (их не привожу)
Файл Setup.iss создается, однако команды заполняются только до 62 строчки и после пустота тогда как должно быть 82 строчки.

1) я так понимаю что модуль имеет такие ограничения ?
2) система windows CMD имеет такие ограничения ?
3) это глюк системы ?

Может кто ни будь создавал установщики от от installshield с такими файлами ответов
Может тут есть иной подход ?
Сам родной установщик сложный несет с собой несколько cab файлов data1.cab data2.cab data3.cab и куча других сладостей куда без слез не взглянешь.
Мог бы и перепаковать установщик однако самому уже интересно стало как все это может закончится.

minutka15 12-10-2022 22:27 2994079

Парни нашел возможность все исправить. Может пригодится для тех кто лепит установщики от 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"
powershell "$f=(Get-Content setup.iss);$f[18]='szDir=szDir=%USERPROFILE%\Documents\programname';$f | set-content setup.iss"
powershell "$f=(Get-Content setup.iss);$f[22]='szDir=%ProgramFiles(x86)%\programfolder\programname';$f | set-content setup.iss"


Открываем полученный файл setup.iss и видим в нем результат на 17,19, и 23 строках.


Код:

szDir=C:\Program Files (x86)\programfolder\programname
szDir=C:\Users\реальное имя\Documents\programname
szDir=C:\Program Files (x86)\programfolder\programname


На тех компах где имеется powershell должно работать.

Wu-Tang 18-10-2022 05:36 2994368

Делал для себя пару инсталлеров, те просто вшивал свои настройки для автоустановки.
Скрытый текст

;!@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@!


Все работает, но может есть какие-н ошибки, недочеты?

SergeyZV 19-10-2022 09:13 2994409

Wu-Tang, Почему у вас *.reg на второй позиции после *.exe!? Вот это явная ошибка.

sov44 19-10-2022 19:20 2994478

Цитата:

Цитата SergeyZV
Вот это явная ошибка. »

Это вряд-ли :)

Можно сделать установку HashTab через копирование и регистрацию библиотеки. скачать

SergeyZV 20-10-2022 09:31 2994512

Цитата:

Цитата sov44
сделать установку HashTab через копирование и регистрацию библиотеки »

Только в ранее приведенных конфигах установка происходит по другому.

Wu-Tang 21-10-2022 12:24 2994588

SergeyZV,
вы про это:
Скрытый текст
AutoInstall="%%P:hidcon:cmd /c if exist HashTab.reg regedit /s HashTab.reg"

я брал этот пример установки из этой темы.
sov44,
меня в принципе и мой вариант устраивает, просто хотелось убедиться в корректности скрипта.

Vanadiy777 21-10-2022 14:18 2994595

Цитата:

Цитата Wu-Tang
Все работает, но может есть какие-н ошибки, недочеты? »

Цитата:

Цитата Wu-Tang
меня в принципе и мой вариант устраивает, просто хотелось убедиться в корректности скрипта. »

Wu-Tang,
Вы же не новичок в этом, сами прекрасно понимаете, если бы было что-то не так - то и не работало бы...

Все у Вас там нормально... :)

SergeyZV 21-10-2022 16:07 2994613

Wu-Tang Про это
Цитата:

Цитата Wu-Tang
RunProgram="FileMenu.exe"
RunProgram="%%P:hidcon:cmd /c if exist FileMenu.reg regedit /s FileMenu.reg" »


Vanadiy777 21-10-2022 16:34 2994617

Цитата:

Цитата SergeyZV
Почему у вас *.reg на второй позиции после *.exe!? Вот это явная ошибка. »

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

Цитата:

Цитата Wu-Tang
Скрытый текст
Код:

;!@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@!

»

Wu-Tang,
а почему у Вас в "AutoInstall=" файл FileMenuLang.exe добавлен, а в "RunProgram=" не добавлен?

Это так задумано, или просто просмотрели?

Vanadiy777 21-10-2022 20:08 2994639

Цитата:

Цитата sov44
Можно сделать установку HashTab через копирование и регистрацию библиотеки. »

sov44,
подскажите, зачем в Windows x64 у Вас копируется два файла разной разрядности в разные папки?
Вполне достаточно скопировать HashTab.dll нужной разрядности в System32 и зарегистрировать его.
Ну, и соответственно, добавить нужные настройки в HKCU\Software\HashTab\Algorithms.

Поправьте пожалуйста, если я заблуждаюсь...

SergeyZV 21-10-2022 20:44 2994642

Цитата:

Цитата Vanadiy777
Если сделать наоборот, то существует вероятность, что программа затрет уже добавленные настройки своими. »

Как раз наоборот. Произойдет не чистая установка, а обновление с сохранением настроек. Вы к примеру браузеры обновляли!? Что произойдет? Конечно настройки сохранятся.
А если ещё в рег-файле есть регистрационный ключ, то он подхватится автоматически.

sov44 21-10-2022 23:21 2994652

Цитата:

Цитата Vanadiy777
зачем в Windows x64 у Вас копируется два файла разной разрядности в разные папки? »

Чтобы HashTab в win64 работал во всех разрядностях Total Commander.

Vanadiy777 21-10-2022 23:56 2994655

Цитата:

Цитата sov44
Чтобы HashTab в win64 работал во всех разрядностях Total Commander. »

sov44, да, блин, точно, совсем забыл про это...
Спасибо, что напомнили. :Beer:

Цитата:

Цитата SergeyZV
Как раз наоборот. Произойдет не чистая установка, а обновление с сохранением настроек. »

SergeyZV,
всегда уважал и уважаю мнение коллег, поэтому спорить не буду, но у меня были случаи, когда программа затирала настройки, добавленные до установки.
К сожалению, примеры сейчас привести не могу, т.к. просто не вспомню.
Так, что будем считать, что правда Ваша... :wink:
Что касается конфигурации коллеги Wu-Tang, то ошибки там нет, отработает и так, и так...

Wu-Tang 22-10-2022 00:06 2994656

Vanadiy777,
Цитата:

Цитата Vanadiy777
Вы же не новичок в этом, сами прекрасно понимаете, если бы было что-то не так - то и не работало бы...
Все у Вас там нормально... »

Просто есть же разные реализации рабочие, вот и хотел посоветоваться, вероятно есть более правильный вариант, чем у меня.
Цитата:

Цитата Vanadiy777
а почему у Вас в "AutoInstall=" файл FileMenuLang.exe добавлен, а в "RunProgram=" не добавлен? »

да я вот посчитал, что нет необходимости, тк filemenulang.exe это sfx архив с языковым файлом внутри, который просто распаковывается в папку с программой, но после ее установки, тк в установщике старые языковые файлы.

SergeyZV,
тогда какие ваши предложения?

Vanadiy777 22-10-2022 00:28 2994657

Цитата:

Цитата Wu-Tang
да я вот посчитал, что нет необходимости, тк filemenulang.exe это sfx архив с языковым файлом внутри, который просто распаковывается в папку с программой, но после ее установки, тк в установщике старые языковые файлы. »

Зачем его тогда вообще добавлять?
Цитата:

Цитата Wu-Tang
тогда какие ваши предложения? »

Wu-Tang,
вот Вы странный человек...

Коллега SergeyZV написал русским по белому:
Цитата:

Цитата SergeyZV
Почему у вас *.reg на второй позиции после *.exe!? Вот это явная ошибка. »

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

Wu-Tang 22-10-2022 01:10 2994660

Цитата:

Цитата Vanadiy777
Зачем его тогда вообще добавлять? »

тк надо перезаписать на обновленный.

Я просто не пойму, что не так, если твики применяются после установки самой программы.
Вот у человека - http://forum.oszone.net/post-1751904-98.html точно такая же реализация.

Vanadiy777 22-10-2022 01:32 2994661

Цитата:

Цитата Wu-Tang
да я вот посчитал, что нет необходимости, тк filemenulang.exe это sfx архив с языковым файлом внутри, который просто распаковывается в папку с программой, но после ее установки, тк в установщике старые языковые файлы. »

Цитата:

Цитата Wu-Tang
тк надо перезаписать на обновленный. »

Сами себе противоречите...

Вот Ваш сценарий:
Код:

;!@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@!

При обычном запуске Вы не добавляете языковый файл, а при запуске через параметры - добавляете.
Видите в чем разница?

Цитата:

Цитата Wu-Tang
Я просто не пойму, что не так, если твики применяются после установки самой программы. »

С этим, вообще, не парьтесь, нормально здесь все.

Wu-Tang 22-10-2022 01:37 2994662

я понял, вы имеете в виду сделать так:
Код:

;!@Install@!UTF-8!
RunProgram="FileMenu.exe"
RunProgram="FileMenuLang.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@!

наверное я не выявил до этого момента, тк тестил установщик исключительно с параметрами.

Vanadiy777 22-10-2022 02:02 2994664

Цитата:

Цитата Wu-Tang
я понял, вы имеете в виду сделать так: »

Wu-Tang,
да, все верно.

Так же, если в файле FileMenuLang.exe находится только один языковый файл, и известна директория установки программы, то лучше это сделать копированием.
Во первых, не нужен будет еще один, лишний sfx-архив, а во вторых, вес готового пакета снизится...

Пример копирования русской справки при установке 7-Zip в нужную папку:
Код:

RunProgram="hidcon:xCopy \"%%T\\7-zip.chm\" \"%SystemDrive%\Program Files\7-Zip\" /s /e /i /y"
AutoInstall="hidcon:xCopy \"%%T\\7-zip.chm\" \"%SystemDrive%\Program Files\7-Zip\" /s /e /i /y"

Дальше уже сами импровизируйте...

Vanadiy777 22-10-2022 15:14 2994689

Wu-Tang,
Для наглядности, вот полный файл конфигурации для 7-Zip себе делал...
Смотрите, анализируйте, может быть что-то пригодится.

Скрытый текст
Код:

;!@Install@!UTF-8!
Title="Установка 7-Zip (x86-x64)"
BeginPrompt="Сейчас будет установлена русская версия
программы 7-Zip Ru [%%P]
Разрядность системы определяется автоматически
Скрытая установка с ключом командной строки /aiS"
ExtractDialogText="Пожалуйста подождите . . ."
GUIMode="1"
GUIFlags="4096"
MiscFlags="4"
OverwriteMode="1"
ExtractTitle="Подготовка к установке . . ."
RunProgram="x86:7zx86.msi /qn"
RunProgram="x64:7zx64.msi /qn"
RunProgram="hidcon:xcopy \"%%T\\7-zip.chm\" \"%SystemDrive%\Program Files\7-Zip\" /s /e /i /y"
RunProgram="Regedit /S \"%%T\\7-zip.reg\""
AutoInstall="x86:7zx86.msi /qn"
AutoInstall="x64:7zx64.msi /qn"
AutoInstall="hidcon:xcopy \"%%T\\7-zip.chm\" \"%SystemDrive%\Program Files\7-Zip\" /s /e /i /y"
AutoInstall="Regedit /S \"%%T\\7-zip.reg\""
AutoInstallS="x86:7zx86.msi /qn"
AutoInstallS="x64:7zx64.msi /qn"
AutoInstallS="hidcon:xcopy \"%%T\\7-zip.chm\" \"%SystemDrive%\Program Files\7-Zip\" /s /e /i /y"
AutoInstallS="Regedit /S \"%%T\\7-zip.reg\""
Delete="%%T"
;!@InstallEnd@!


SergeyZV 22-10-2022 20:29 2994701

Цитата:

Цитата Vanadiy777
RunProgram="x86:7zx86.msi /qn"
RunProgram="x64:7zx64.msi /qn" »

Вместо этих двух строк достаточно одной
Код:

RunProgram="7z%%P.msi /qn"

Vanadiy777 22-10-2022 20:40 2994702

Цитата:

Цитата SergeyZV
Вместо этих двух строк достаточно одной »

Согласен, но переделывать влом... :)
Уж очень VirusTotal хорошо показывает... Что для SFX-архивов большая редкость.

SergeyZV 22-10-2022 20:56 2994703

Цитата:

Цитата Vanadiy777
но переделывать влом.. »

Для этих целей шикарная программа SFX Config Editor v1.8.
Можно менять конфиг без перепаковки.

Код:

Delete="%Temp%\\%Vers%"
А вот что за переменная %Vers%?
В помощи к SFX модулям не встречается.

Vanadiy777 23-10-2022 10:21 2994725

Цитата:

Цитата SergeyZV
А вот что за переменная %Vers%? »

SergeyZV,
Извините, по ошибке написал не так.
Вот так будет правильней:
Код:

Delete="%%T"
За программку отдельное спасибо.

Wu-Tang 23-10-2022 18:42 2994753

Vanadiy777,
Цитата:

Цитата Vanadiy777
Так же, если в файле FileMenuLang.exe находится только один языковый файл, и известна директория установки программы, то лучше это сделать копированием.
Во первых, не нужен будет еще один, лишний sfx-архив, а во вторых, вес готового пакета снизится... »

2 файла, я вот не знаю, есть ли смысл, этот sfx весит всего 250кб
Цитата:

Смотрите, анализируйте, может быть что-то пригодится.
А зачем еще секция autoinstalls? для скрытой установки с ключами?

Vanadiy777 23-10-2022 20:20 2994778

Цитата:

Цитата Wu-Tang
2 файла, я вот не знаю, есть ли смысл, этот sfx весит всего 250кб »

Wu-Tang,
по любому, как лучше и удобней будет, то это решать только Вам...
Цитата:

Цитата Wu-Tang
секция autoinstalls? для скрытой установки с ключами? »

Да. Но, в моем случае она тоже лишняя, можно было без нее обойтись.

Для примера Вам написал просто.

Wu-Tang 23-10-2022 23:23 2994801

Vanadiy777,
для примера это хорошо, я тоже по примерам учился.
правда есть конфиги и ногу сломишь...
ps мне кажется вообще runprogramm достаточно в большинстве случаев.

Vanadiy777 23-10-2022 23:55 2994803

Цитата:

Цитата Wu-Tang
мне кажется вообще runprogramm достаточно в большинстве случаев. »

Wu-Tang,
возможно, я особо сильно не вникал.
Предпочитаю делать свои репаки в Inno Setup...

Wu-Tang 24-10-2022 01:04 2994807

Vanadiy777,
я как-то inno плюнул осваивать, скрипты эти...

Vanadiy777 24-10-2022 10:19 2994823

Цитата:

Цитата Wu-Tang
я как-то inno плюнул осваивать, скрипты эти... »

Wu-Tang,
ну, тут, кому как удобнее... :wink:

minutka15 13-11-2022 05:07 2996349

Вопрос снят:
разобрался

birdy.spb 05-10-2023 16:41 3017552

Подскажите, пожалуйста. Не смог найти.

А есть ли у модифицированных модулей возможность получить сценарий, как с применением стандартного модуля 7zCon.sfx:
- запущенный процесс не отпускает консоль до завершения выполнения всех команд
- в консоль выводится результат выполнения команд
- процесс завершается с тем же кодом возврата (кодом ошибки), что и запускаемая из конфига команда (наверное, последняя)

???

Wu-Tang 07-10-2023 18:03 3017674

привет
подскажите, как добавить в мой конфиг строки, чтобы применить твики х86 и х64, появилась необходимость в х86.reg и х64.reg
Код:

;!@Install@!UTF-8!
SetEnvironment="Name=Tweaks-Win7 x86/x64 [%%P]"
SetEnvironment="Vers= 1.0 [%%P]"
SetEnvironment="timer=12"
Title="Установка %Name%"
BeginPrompt="Установить %Name%?"
ExtractTitle="Распаковка файлов ..."
ExtractDialogText="Подождите пожалуйста ..."
FinishMessage="%Name% установлены! Будет выполнена перезагрузка компьютера!  "

GUIFlags="2+4+8+16+32+2048+4096"
GUIMode="1"
MiscFlags="4"

RunProgram="waitall:hidcon:cmd /c PowerRun.exe /SW:0 /SYS \"%%T\\tweaks.bat\""
RunProgram="waitall:hidcon:cmd /c \"%%T\\tweaks2.bat\""
RunProgram="waitall:hidcon:cmd /c PowerRun.exe /SW:0 /SYS \"%%T\\RemoveTelemetry.cmd\""
RunProgram="waitall:%%P:hashtab.exe /ai"
RunProgram="waitall:%%P:filemenu.exe /ai"
RunProgram="waitall:%%P:ClassicShell.exe /qn"
RunProgram="waitall:hidcon:cmd /c \"%%T\\clean.bat\""
RunProgram="fm%timer%:forcenowait:hidcon:cmd /c CD /d ..\\&Ping -n %timer% localhost &Shutdown -r -f -t 0"
;!@InstallEnd@!


sov44 07-10-2023 20:50 3017678

Цитата:

Цитата Wu-Tang
как добавить в мой конфиг строки, чтобы применить твики х86 и х64 »

Примерно так
Код:

RunProgram="%%P:regedit /s tweaks_%%P.reg"

Wu-Tang 08-10-2023 16:23 3017734

sov44,
а waitall не нужно?

sov44 08-10-2023 19:55 3017753

Цитата:

Цитата Wu-Tang
а waitall не нужно? »

Команда исполняется быстро, считаю, что префикс waitall будет лишним.

Wu-Tang 08-10-2023 21:21 3017769

sov44,
хорошо, понял.
а файлы обязательно обзывать с _ или можно слитно, hklmX86.reg

sov44 08-10-2023 22:21 3017779

Цитата:

Цитата Wu-Tang
а файлы обязательно обзывать с _ или можно слитно, hklmX86.reg »

Как вам нравится.

Scorpkoms 08-12-2023 09:26 3021170

Доброго времени уважаемые,такой вопрос,в этом файле конфигурации не срабатывает батник после распаковки,что не так,подскажите.Спасибо.
"Не удается найти указанный файл"
Код:

;!@Install@!UTF-8!
SetEnvironment="Name=TotalCmd 10.52"
SetEnvironment="NameEXE=TOTALCMD.exe"
SetEnvironment="PathInst=D:\Program Files\\%Name%"
SetEnvironment="Var1=%PathInst%"
InstallPath="%PathInst%"
RunProgram="hidcon:"%Name%"\\Regidit.bat
GUIMode="2"
Shortcut="D,{%%T\\%NameEXE%},{},{},{Файловый менеджер},{%Name%},{%%T}"
;!@InstallEnd@!


nibble74 08-12-2023 09:43 3021171

Scorpkoms,

Код:

SetEnvironment="PathInst=\"D:\\Program Files\\%Name%\""
RunProgram="hidcon:Regidit.bat"


sov44 08-12-2023 10:22 3021173

Цитата:

Цитата Scorpkoms
RunProgram="hidcon:"%Name%"\\Regidit.bat »

Перечитайте мануал. В частности экранирование кавычек. Должно быть примерно так.
Код:

RunProgram="%%P:hidcon:\"%Name%\\Regidit.bat\""
На мой взгляд слишком много SetEnvironment, они действительно все нужны?

nibble74 08-12-2023 10:38 3021176

sov44

у него рабочая директория "D:\Program Files\TotalCmd 10.52"
В RunProgram %Name% не требуется. Иначе получится так "D:\Program Files\TotalCmd 10.52\TotalCmd 10.52"

SOFFON 08-12-2023 11:15 3021178

Scorpkoms,
слеш где потеряли?
Цитата:

Цитата Scorpkoms
SetEnvironment="PathInst=D:\\Program Files\\%Name%" »

и что вы запускаете, а точнее откуда вы это запускаете?
Цитата:

Цитата Scorpkoms
RunProgram="hidcon:"%Name%"\\Regidit.bat »

Если Regidit.bat лежит по пути "D:\Program Files\TotalCmd 10.52", то nibble74 вам правильно написал, что %Name% тут лишний
Цитата:

Цитата Scorpkoms
RunProgram="hidcon:"%Name%"\\Regidit.bat »

Да и sov44 вам правильно написал про экранирование кавычек, только в вашем случае наверно так
Цитата:

Цитата sov44
RunProgram="%%P:hidcon:\"Regidit.bat\"" »


sov44 08-12-2023 11:16 3021179

nibble74, не зная структуры расположения файлов и папок в sfx, места расположения батника и его дальнейшей судьбы, вряд-ли удастся помочь с написанием файла конфигурации.

Scorpkoms 08-12-2023 11:31 3021181

Цитата:

Цитата SOFFON
а точнее откуда вы это запускаете? »

Приветствую,из этой конечной папки:D:\Program Files\TotalCmd 10.52

Цитата:

Цитата sov44
места расположения батника »

Файл расположен в корне каталога D:\Program Files\TotalCmd 10.52

SOFFON 08-12-2023 11:36 3021183

Scorpkoms, Ну тогда все правильно вам написали, выше я дополнил свой пост, посмотрите.

Scorpkoms 08-12-2023 11:37 3021184

Цитата:

Цитата SOFFON
слеш где потеряли? »

Но SFX распаковывается по правильному пути.

nibble74 08-12-2023 11:41 3021185

Цитата:

Цитата sov44
места расположения батника и его дальнейшей судьбы »

Там и думать нечего :) батник вместе с файлами TCM находятся в корне SFX архива.
Дальнейшая судьба и тайна будет открыта после комментария автора sfx архива :help:
я лишь исправил ошибки.

SOFFON 08-12-2023 11:44 3021186

Scorpkoms

Код:

;!@Install@!UTF-8!
SetEnvironment="Name=TotalCmd 10.52"
SetEnvironment="NameEXE=TOTALCMD.exe"
SetEnvironment="PathInst=D:\\Program Files\\%Name%"
SetEnvironment="Var1=%PathInst%" ;это вообще зачем тут?
InstallPath="%PathInst%"
RunProgram="%%P:hidcon:\"Regidit.bat\""
GUIMode="2"
Shortcut="D,{%%T\\%NameEXE%},{},{},{Файловый менеджер},{%Name%},{%%T}"
;!@InstallEnd@!


Scorpkoms 08-12-2023 11:50 3021187

SOFFON, благодарю,попробую вечером.

Scorpkoms 08-12-2023 18:11 3021224

SOFFON,спасибо Вам,все сработало!

minutka15 26-02-2024 13:44 3024665

Как известно мы имеем следующие автоматические ключи:
a-z, A-Z, 0-9
и в итоге в нашем арсенале мы имеем 62 команды без RunProgram=
Ни-кто не сталкивался с задачей когда вам необходимо больше ключей для установки чего либо?

Joanit 04-12-2024 15:47 3033836

Вопрос по 7z SFX Constructor v4.5:
Хочу запаковать в SFX архив установленный на ПК Photoshop, который бы автоматом удалял распакованную папку после закрытия. Проблема в том что Photoshop запускает связанный процесс AdobeIPCBroker.exe, который продолжает висеть в системе даже после закрытия Photoshop и тем самым не даёт удалить папку с программой. Если завершить AdobeIPCBroker.exe через диспетчер задач, то папка Photoshop автоматом удаляется. Вопрос: что нужно прописать в скрипте 7z SFX Constructor v4.5 чтобы после закрытия программы автоматом завершался и AdobeIPCBroker.exe?

habib2302 04-12-2024 17:04 3033839

Joanit, пропишите команду taskkill


Время: 10:02.

Время: 10:02.
© OSzone.net 2001-