[Цитировать]

    KaSpieC 666
  • 260
  • Стаж: 9 лет 2 месяца
  • Сообщений: 787
  • Репутация:127

    [+] [-]
  • Откуда: Одесса
HELP по созданию SFX!!!

Команды для сценариев SFX, с описаниями

;!@Install@!UTF-8! - Начало сценария.
-
GUIMode= - прогресс бар, отображается во время распаковки.

Возможные комбинации и скриншот функции

GUIMode="1" - вкл. прогресс бар во время распаковки (неактивна кнопка закрытия).
GUIMode="2" - выкл. прогресс бар во время распаковки.

-
GUIMode="0" - вкл. прогресс бар во время распаковки.
Работает кнопка закрытия и добавлена кнопка Отмена
-
MiscFlags="4" - готовый sfx, при запуске, будет требовать права Администратора.
-
OverwriteMode= - режим перезаписи файлов.

Возможные комбинации

OverwriteMode="2+8" - рекомендуемое значение!, можно вместо "2+8" писать "10" (без разницы).
Режим перезаписи файлов, где число, или сумма чисел равная сумме числовых значений, либо выражение "2+8". Порядок числовых значений в выражении может быть любой (обязательно в кавычках).
0 - перезаписывать все файлы (режим по умолчанию)
1 - не перезаписывать существующие файлы
2 - перезаписывать только те файлы, которые старее, чем в архиве/установке
8 - пропускать файлы заблокированные системой
Из значений 0, 1, 2 можно использовать только одно, но его можно комбинировать с числом 8
-
ExtractDialogText="Отображаемый текст" - текст, внутри консольного окна, отображаемый во время распаковки. Функция работает, при наличии вкл. прогресс бара!

Скриншот функции

-
ExtractTitle="Подождите..." - текст, на вкладке консольного окна, отображаемый во время распаковки. Функция работает, при наличии вкл. прогресс бара!

Скриншот функции

-
InstallPath="%Temp%\\папка" - путь, и папка распаковки sfx-а (указывать двойные слэшы в пути!).
Можно указывать полный путь, или добавлять переменные.
-
RunProgram= - запуск указанного файла, после распаковки.

Возможные комбинации

RunProgram="\"файл.exe\"" - запуск указанного файла, после распаковки.
-
RunProgram="hidcon:\"файл.exe\"" - скрытый запуск указанного файла, после распаковки.
-
RunProgram="hidcon:cmd.exe /c start \"\" \"%%T\файл.exe\"" - запуск файла с отвязкой от sfx (если был запуск sfx-а с флешки, то после запуска, флешку можно вытащить)
-
RunProgram="%%P:файл_%%P.exe" - при наличии в архиве файл_x86.exe и файл_x64.exe запустится тот, что соответствует разрядности.
файл_ - произвольное название файла
.exe - расширение (можно и батники)
x86 и x64 - обязательное окончание разрядности, в названии файлов.
-
Shortcut= - создание ярлыка.

Возможные комбинации с справкой

D - Создать ярлык на Рабочем столе
S - Создать ярлык в меню кнопки "Пуск"
P - Создать ярлык в меню "Пуск -> Программы"
T - Создать ярлык в папке "Автозагрузка
Ярлыки создаются ДЛЯ ВСЕХ пользователей. Для того, чтобы создать ярлык только для текущего пользователя, к указанным символам надо добавить u
Например - Du, Su, Pu, Tu,
Shortcut="Du,{%%T\\файл.exe}" - создать ярлык на рабочем столе (если нужно в другом месте, меняем с буквы D на S или P или T).
-
Shortcut="Pu,{%%T\\файл.exe},{},{папка1}" - создаст в "Пуск -> Программы", новую папку папка1, в которой будет ярлык на файл.exe.
В {} можно задать параметры запуска, например {/?} будет означать файл.exe /?
-
Shortcut="Pu,{%%T\\файл.exe},{},{папка1},{Текст1}" - создаст в "Пуск -> Программы", новую папку папка1, в которой будет ярлык на файл.exe, с описанием (при наведении курсора) Текст1.
В {} можно задать параметры запуска, например {/?} будет означать файл.exe /?
-
Delete= - удалить выбранные файлы/папки, после закрытия запущенного файла.

Возможные комбинации

Delete="%%T" - удалить папку с расспакованными файлами, при закрытии запущенного файла/программы.
-
Delete="%%T\\файл.exe" - выборочное удаление файла/папки, при закрытии запущенного файла/программы.
Данную комбинацию, можно дублировать, для каждого файла/папки.
-
;текст - оставить подпись. Ставиться перед концом сценария.
-
;!@InstallEnd@! - конец сценария
Примечание!!!
Подчеркнутое - обязательные пункты!
Зеленым цветом - произвольные пути/названия/расширения
-

Небольшой список системных переменных, считываемых модулем SFX

%ALLUSERSPROFILE%
C:\ProgramData
%APPDATA%
C:\Users\Имя пользователя\AppData\Roaming
%CommonProgramFiles%
C:\Program Files\Common Files
%CommonProgramFiles(x86)%
C:\Program Files (x86)\Common Files
%CommonProgramW6432%
C:\Program Files\Common Files
%COMPUTERNAME%
Имя компьютера
%ComSpec%
C:\Windows\system32\cmd.exe
%HOMEDRIVE%
Имя диска локальной рабочей станции, связанного с основным каталогом пользователя, (например: C:\)
%HOMEPATH%
Основной каталог пользователя, (например: \Users\Имя пользователя)
%LOCALAPPDATA%
C:\Users\Имя пользователя\AppData\Local
%LOGONSERVER%
Имя контроллера домена, использовавшегося для авторизации текущего пользователя.
%NUMBER_OF_PROCESSORS%
Количество процессоров в системе (фактически, количество ядер).
%OS%
Название операционной системы. Windows XP и Windows 2000 отображаются как Windows_NT.
%Path%
Указывает путь поиска исполняемых файлов, (например: \Users\Имя пользователя)
%PATHEXT%
Список расширений файлов, которые рассматриваются операционной системой как исполняемые.
%PROCESSOR_ARCHITECTURE%
Архитектура процессора. Возможные варианты: x86, IA64, AMD64.
%PROCESSOR_IDENTIFIER%
Описание процессора (в Интернете часто встречается ошибочное написание PROCESSOR_IDENTFIER - пропущена буква).
%PROCESSOR_LEVEL%
Номер модели процессора.
%PROCESSOR_REVISION%
Ревизия процессора.
%ProgramData%
C:\ProgramData
%ProgramFiles%
C:\Program Files
%ProgramFiles(x86)%
C:\Program Files (x86)
%ProgramW6432%
C:\Program Files
%PUBLIC%
C:\Users\Public
%SystemDrive%
Диск, на котором расположен корневой каталог Windows, (например: C:\)
%SystemRoot%
Путь к корневому каталогу Windows, (например: C:\Windows)
%TEMP%
C:\Users\Имя пользователя\AppData\Local\Temp или C:\Windows\TEMP (зависит от имени входа в систему)
%TMP%
C:\Users\Имя пользователя\AppData\Local\Temp или C:\Windows\TEMP (зависит от имени входа в систему)
%USERDOMAIN%
Имя домена, которому принадлежит текущий пользователь.
%USERNAME%
Имя текущего пользователя.
%USERPROFILE%
Путь к профилю текущего пользователя, (например: C:\Users\Имя пользователя)
%WINDIR%
Каталог, в котором установлена Windows, (наприме: C:\Windows)
-

Модульные переменные

%%M - имя SFX архива без пути
%%P - платформа операционной системы; принимает значения x86 и x64 в зависимости от разрядности ОС
%%S - полный путь к файлу SFX архива
%%T - полный путь распаковки
Все перечисленные переменные (основные переменные среды, переменные среды при работе модуля и переменные модуля) разбираются и подставляются в следующих параметрах:
'AutoInstall'
'AutoInstallX'
'BeginPrompt'
'CancelPrompt'
'Delete'
'DeleteX'
'Directory'
'ErrorTitle'
'ExecuteFile'
'ExecuteOnLoad'
'ExtractCancelText'
'ExtractDialogText'
'ExtractPathText'
'ExtractPathTitle'
'ExtractTitle'
'FinishMessage'
'HelpText'
'InstallPath' (за исключением %%T, а также переменных, определенных параметрами 'SetEnvironment', если в них используется %%T)
'PasswordText'
'PasswordTitle'
'PreExtract'
'PreExtractX'
'RunProgram'
'string' параметра 'SetEnvironment'
'Title'
'WarningTitle'
-
-
Параллельные темы:Вопросы по SFX - обсуждение SFX программ. В шапке присутствует большое количество программ.Программы для создания/редактирования SFX-овSFX Config Editor - программа для быстрого просмотра и редактирования данные в вашем SFX
Редактирование файлов в SFX-архиве (ком. строка) и небольшое дополнение и объяснение-LZMA2SFX Packer - "простая" программа, для создания SFX
Easy7zSFX - "простая" программа, для создания SFX-7z SFX Constructor - всё в одном! Программа умеет всё!Справки, инструкции и т.д.Файлы конфигурации 7z SFX. Помощь и советы - ветка с обсуждениями на oszone

Предупреждение от KaSpieC 666


Шапка, в режиме постоянного обновления/редактирования/исправление/дополнения.
Будьте аккуратны!!!


Последний раз редактировалось: KaSpieC 666 (2016-03-18 06:54), всего редактировалось 27 раз(а)

[Цитировать]

    rockdgon
  • 1013
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 93
  • Репутация:0

    [+] [-]
korsak7, походу придется велосипед изобретать. Аддон PotPlayer ставиться через inf и привязан к папке Program Files, а я хочу чтобы у меня в произвольную установка происходила да еще и с ассоциациями, пусть и без плюшек в виде де-инсталла и отображения в "Программы и компоненты".
А вообще можно совместить cmd + inf = универсальность(можно менять пути в установочном inf), только мне нужно найти решение замены слов в файле с помощью cmd.
Что то похожее нашел тут http://winreview.ru/rabota-so-strokami-v-komandnyx-fajlax-windows-7/ - изучаю..

Кажись нашел: (только как задать множественные замены, неужели дублировать код?)

@echo off
setlocal enabledelayedexpansion
Set infile=DPMP.inf
Set find=%%16422%%\PotPlayer\
Set replace=%~d0%~p0
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=," %%n in (!infile!) do (
set LINE=%%n
set TMPR=!LINE:%find%=%replace%!
Echo !TMPR!>>TMP.TXT
)
move TMP.TXT 111%infile%

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
а я хочу чтобы у меня в произвольную установка происходила
имхо блажь ab
только мне нужно найти решение замены слов в файле с помощью cmd.
Это плохое и велосипедное решение.
В скрипте же есть путь установки
SetEnvironment="PathInst=%ProgramFiles%\\%Name%"
тебе нужно просто вывести эту строку для редактирования при установке

[Цитировать]

    rockdgon
  • 1013
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 93
  • Репутация:0

    [+] [-]
тебе нужно просто вывести эту строку для редактирования при установке
но в данном случае дальнейшая установка проходит через DPMP.inf - ассоциации + ярлыки, а там пути к программе дефолтные %ProgramFiles%\\%Name%.
Чтобы можно было вывести для редактирования и устанавливать куда захочется нужно чтобы DPMP.inf автоматом правился.
Поэтому хочу сделать через промежуточный install.bat все это дело. Ну взбрело мне в голову многофункциональный portable сделать ab
А теперь просьба: можете подсказать как этот код в одну строку записать:
@echo off
setlocal enabledelayedexpansion
set COUNT=0
for /F "tokens=* delims=," %%n in (DPMP.inf) do (
set LINE=%%n
set TMPR=!LINE:%%16422%%\PotPlayer\=%~d0%~p0!
Echo !TMPR!>>"%temp%\TMP.TXT"
)
move "%temp%\TMP.TXT" "111DPMP.inf"
у меня не получается, пробовал через && и белиберда выходит
а почему велосипедный? работает же

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
Этот установщик запрашивает путь установки. Я потерял нить мысли - ради чего ты мучаешься?

[Цитировать]

    rockdgon
  • 1013
  • Стаж: 8 лет 10 месяцев
  • Сообщений: 93
  • Репутация:0

    [+] [-]
korsak7, ну смотри путь он запрашивает, но установка с созданием ярлыков + регистрацией ассоциаций + регистраци в "Программы и компоненты" возможно только по дефолтному пути. Там даже предупреждение есть - "Для установки не меняйте путь!!!". Вот. А так сделано потому что установка осуществляется с помощью .inf файла, в нем прописаны все параметры установки программы и причем с своими переменными.
Мне понравилось такое решение! С помощью такого типа установки можно прикрутить и деинсталяцию вполне нормальную с удалением всех следов из системы.
Но функционал инсталятора хочу расширить, ради этого и мучаюсь ab
Хочу чтобы уставливалось со всеми плюшками не только в Program Files а куда пользователь захочет. Так же несколько вариантов установки/запуска с ключами будет.

[Цитировать]

    korsak7
  • 107
  • Стаж: 9 лет 4 месяца
  • Сообщений: 1082
  • Репутация:62

    [+] [-]
путь он запрашивает,
...
возможно только по дефолтному пути.
ага сейчас прочитал ag Элегантнейшее решение bb

[Цитировать]

    KaSpieC 666
  • 260
  • Стаж: 9 лет 2 месяца
  • Сообщений: 787
  • Репутация:127

    [+] [-]
  • Откуда: Одесса
Может кто подскажет, как прописать в сценарии, чтобы удалялась папка распаковки.
Пробовал Delete="%%T" - папка остаёться... Также, пробовал полный путь указывать...
С этим, я так и не разобрался (что, куда):
24122что то типо того: RunProgram="hidcon: cmd.exe \c del File" или rmdir для папки
24126
Ждать закрытия программы Start /wait и удалять папку ac cd /d \Temp
rmdir /s /q \Temp
24128
Start /wait программа.exe
rmdir /S /Q c:\Users\DEMON\AppData\Local\Temp\папка
можно попробовать процесс убить сначала taskkill /f /im программа.exe
P.S. я часто встречал данную ситуацию, но не интересовался. А сейчас стало интересно.
Вот сама программа (с которой сейчас играюсь) - https://yadi.sk/d/k8N1p0N6rTie7
Она портативная, при запуске создаёт рядом пару файлов.

[Цитировать]

    Joker-2013
  • 1039
  • Стаж: 8 лет 9 месяцев
  • Сообщений: 2053
  • Репутация:120

    [+] [-]
  • Откуда: из прошлого
KaSpieC 666, а ручками удаляется?

[Цитировать]

    KaSpieC 666
  • 260
  • Стаж: 9 лет 2 месяца
  • Сообщений: 787
  • Репутация:127

    [+] [-]
  • Откуда: Одесса
Joker-2013,
А то. После закрытия программы - удаляется.
Думаю, что дело в том, что создаються дополнительные папки (но не уверен).
P.S. я извиняюсь, всё в спешке делаю. Интернет вот-вот отключат, и я пытаюсь решить интересующие вопросы + качаю всё подрят ap

[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет 4 месяца
  • Сообщений: 2498
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
KaSpieC 666,
Привет! Если временная папка после закрытия программы не удаляется, то это сто пудов остаётся запущеным какой-то фоновый процесс, который нужно или как-то "убивать" (после закрытия программы) ...или "забить" на это дело. ag

[Цитировать]

    KaSpieC 666
  • 260
  • Стаж: 9 лет 2 месяца
  • Сообщений: 787
  • Репутация:127

    [+] [-]
  • Откуда: Одесса
sergeysvirid, Привет.
Да вроде ничего не держит. Уже думал воспользоватся твоим вторым вариантом "забить", но всётаки домучал, и получилось ae :
RunProgram="waitall:FolderSizes.exe"
Delete="%%T"
Работает! bp az

[Цитировать]

    sergeysvirid
  • 104
  • Стаж: 9 лет 4 месяца
  • Сообщений: 2498
  • Репутация:127

    [+] [-]
  • Откуда: 65 регион (GMT+11)
24136RunProgram="waitall:FolderSizes.exe"
А до этого как прописывал?

[Цитировать]

    KaSpieC 666
  • 260
  • Стаж: 9 лет 2 месяца
  • Сообщений: 787
  • Репутация:127

    [+] [-]
  • Откуда: Одесса
sergeysvirid,
Как прога прописывала + кучи других вариантов (даже бредовые).
Да и акцент я ставил на строчку Delete, и ещё пару бредовых вариантов.
Инфы то нету, вот и эксперементирую методом "Тыка" ag
Может и другие способы есть, но у меня не вышло иначе (папка не удалялась).
Ссылку на файл я выкладывал выше, делал в 7ZipSFX_Constructor.

[Цитировать]

    vovhas
  • 14113
  • Стаж: 7 лет 9 месяцев
  • Сообщений: 32
  • Репутация:1

    [+] [-]
  • Откуда: Vladivostok
Может кто в курсе, почему не выполняется команда в сценарии.
RunProgram="x86:hidcon:cmd.exe /c move /y TEST %sfxFolder26%"
В батнике она выполняется без проблем.
move TEST "%APPDATA%"
Эта же команда для переменной %sfxFolder36% выполняется правильно.

[Цитировать]

    Joker-2013
  • 1039
  • Стаж: 8 лет 9 месяцев
  • Сообщений: 2053
  • Репутация:120

    [+] [-]
  • Откуда: из прошлого
31721TEST
может так? %%T\\TEST
Не скрывайте консольное окно и посмотрите что пишет...

Страница 4 из 10


Показать сообщения:    

Текущее время: 20-Апр 08:30

Часовой пояс: UTC + 3


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