PDA

Показать полную графическую версию : .: Файлы конфигурации 7z SFX. Помощь и советы :.


Страниц : 1 2 3 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18 19 20 21 22 23 24 25 26

gora
09-10-2014, 11:48
как повторно запустив самого себя можно создать ярлык на рабочем столе с переменной. »
Конфиг:
;!@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
В продолжение темы. Появилось потребность перенести содержимое 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
что-то не получается. »
Что именно не получается можно посмотреть:AutoInstall1=%%P:cmd /k move /y \"%%T\" \"%put%\"
Учтите также следующее: Move перемещает файл/файлы, но не папку. Папку она только переименовывает. Подробнее Move /?

Iska
13-10-2014, 15:18
Учтите также следующее: 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
не совсем так »
Согласен, :sorry: хотя это и противоречит документации.
Действительно перемещает, но только в пределах диска.

Iska
13-10-2014, 15:47
но только в пределах диска. »
Именно.

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

МИШАНЧИК
26-10-2014, 04:51
Подскажите пожалуйста, как правильно записать батник
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
;!@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
Dean_Winchester, попробуйте вместо 5.2 написать 5.

Dean_Winchester
15-01-2015, 00:43
Dean_Winchester, попробуйте вместо 5.2 написать 5. »
пробовал не получается(

nibble74
15-01-2015, 01:28
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
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
Хотя щас проверил все равно на XP x64 не отрабатывает команда.... »

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

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

Dean_Winchester
15-01-2015, 16:18
Может gora, что нибудь посоветует. »
я тоже на это очень надеюсь ))) Кстате сейчас попробовал и понял одну вещь, команда не выполняется, так как в свинье не выполняется команда find пробовал в cmd прописать Find /? на что получил в ответ что не является внутренней или внешней командой, исполняемой программой или пакетным файлом... а так как указано что при && невыполнении 1ой команды и 2я не исполняется... то по сути все понятно, теперь же стоит вопрос, как это все исправить...

gora
15-01-2015, 16:32
так как в свинье не выполняется команда »
Я не понимаю Вашего сленга. Что это!?!? :dont-know Может gora, что нибудь посоветует. »
я тоже на это очень надеюсь »
Я уже отвечал на Ваш аналогичный вопрос:Dean_Winchester
Вопрос не имеет отношения к конфигам. Нет такого функционала у модуля и это ясно из справки, которую Вы должны были уже изучить.
Вам надо сначала решить задачу "...". Найдите возможность сделать это из батника \ vbs \ autoit и т.д. Это за Вас ни кто делать не будет. Потом это найденное решение (батник) запихните в архив и в конфиге пропишите его запуск. Получите что хотите. »

nibble74
15-01-2015, 16:33
Dean_Winchester,

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

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

Dean_Winchester
15-01-2015, 16:38
Всем спасибо... Думаю дальше разберусь сам...

sov44
24-01-2015, 17:47
Подскажите, как передать в 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
SetEnvironment="rr=%~1" »
Это переменная из cmd.exe и модуль ее не понимает.
Модулю можно передавать ключи после ключа ! и тогда он их передаст куда надо.
Все ключи, указанные после него, могут быть переданы (как есть) только в первую выполняемую программу ('RunProgram', 'ExecuteFile', 'AutoInstall' или 'AutoInstallX').Кроме этого эти ключи будут присвоены переменным модуля и их можно использовать в конфиге:%SfxVarCmdLine0% - командная строка целиком (как есть с кавычками и лидирующими слешами)
%SfxVarCmdLine1% - командная строка до ключа '-!' или до первого ключа, неподдерживаемого модулем (лишние пробелы удаляются с двух сторон)
%SfxVarCmdLine2% - командная строка после ключа '-!' или начиная с первого ключа, неподдерживаемого модулем (лишние пробелы удаляются с двух сторон)

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

spectat0r
31-01-2015, 20:47
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@!




© OSzone.net 2001-2012