CMD/BAT - Создание установщика при помощи 7zSFX

Аватара пользователя
minutka15

CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение minutka15 »

Возникла задача ...

Для удобства создания установщиков на модулях 7z-SFX сделал фичу

При помощи которой создаю установщик когда в одной папке лежат 3 необходимых файлa

name.7z

name.txt

name.sfx

И когда кликнешь правой кнопкой в данной папке в пустом поле то открываем "Запустить 7zSFX Setup Maker"





В реестре добавлено:





Код:

Код: Выделить всё

Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\Background\shell\Запустить 7zSFX Setup Maker]
"Icon"="C:\\Users\\UserName\\AppData\\Roaming\\Uniworker\\icons\\7z.ico"
[HKEY_CLASSES_ROOT\Directory\Background\shell\Запустить 7zSFX Setup Maker\command]
@="C:\\Users\\UserName\\AppData\\Roaming\\Uniworker\\MakeSetup.exe"

MakeSetup.exe на самом деле маленький батник конвертированный в .exe такого содержания:



Код:

Код: Выделить всё

@echo off
copy /b *.sfx + *.txt + *.7z Setup.exe
EXIT

После запуска с правого клика тут же создается новый Setup.exe

Так вот задача - что-бы создание установщика имело название не Setup.exe как прописано в батнике

а имя *.txt файла, то есть имело бы имя конфигурационного файла

Например у нас три файла в папке



MySetup.txt - это наш конфиг

MyArchive.7z - это наш архив с файлами

MyModule.sfx - это наш модуль sfx



Можно ли преобразовать батник "copy /b *.sfx + *.txt + *.7z Setup.exe"

чтобы вместо Setup.exe на выходе получалось бы имя существующего в папке *.txt файла ?

Например наш конфиг носит имя "StockFish.v15.1_avx2.txt"

и после запуска нашей фичи, на выходе мы имеем StockFish.v15.1_avx2.ехе
Аватара пользователя
Vanadiy777

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение Vanadiy777 »

minutka15,

так не пойдет?





Код:

Код: Выделить всё

@echo off
for %%i in (*.txt) do set name=%%i
copy /b *.sfx + *.txt + *.7z %name%.exe
EXIT

Но, он полное название добавляет, вместе с "txt"...



Т.е. на выходе будет StockFish.v15.1_avx2.txt.exe
Аватара пользователя
minutka15

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение minutka15 »

Vanadiy777

Как батник из папки - работает

Как exe из папки - работает

Как exe через правый клик -Заработал!

Теперь выяснилось что была виновата строка "cd /d %~dp0" тогда как утилита ковыряется не в рабочей папке а там куда ее закинули..



Почему у вас не работает?

Может защитник windows в тихоря шуршит?
Вложения
MakeSetup.7z
(43.15 КБ) 0 скачиваний
MakeSetup.7z
(43.15 КБ) 0 скачиваний
Аватара пользователя
Vanadiy777

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение Vanadiy777 »

minutka15,

вот еще можно так попробовать, через костыли, конечно:





Код:

Код: Выделить всё

@echo off
cd /d %~dp0
copy "*.txt" "*."
for %%i in (*.) do set name=%%i
copy /b "*.sfx" + "*.txt" + "*.7z" "%name%.exe"
del /q "*."
exit

Тогда на выходе файл с нормальным именем создается.
Аватара пользователя
minutka15

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение minutka15 »

Во, как раз что и нужно было Изображение

Пофиг - костыли-не костыли, главное работает!

Я годами пользовался через правый клик, но когда делаешь кучу всяких sfx, то одно и тоже имя на нервы действует.

А сейчас как часики.

Спасибо за труд!
Аватара пользователя
minutka15

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение minutka15 »

Цитата minutka15:



Мда, после конвертирования в exe файл на вызов из правой кнопки не работает.

Работает если только запустить из самой папки.
CMD/BAT - Создание установщика при помощи 7zSFX




У меня, после конвертации в ехе даже в папке не работает.

У Вас старый сконвертированный скрипт нормально отрабатывал с любого места?

Просто, по сути ехе, сделанный из cmd, это простой sfx-архив, который распаковывается во временную папку.

Соответственно и пути он ищет там же...

А вот как это обойти - пока не знаю...
Аватара пользователя
Vanadiy777

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение Vanadiy777 »

Vanadiy777

Мой старый скрипт из шапки работал все последние годы,

этот скрипт работает и в exe и в bat и через правый клик как описано в шапке.



Код:

Код: Выделить всё

@echo off
for %%i in (*.txt) do set name=%%i
copy /b *.sfx + *.txt + *.7z %name%.exe
EXIT

последний работает в папке и как exe и как bat,но через правый клик не хочет.

По всей видимости кусочек кода ориентируется в папку темп либо в ту папку где он сам находится (куда его кинули для правого клика).

------



Все это можно сообразить через реестр добавив команду для самозапуска sfx и копирования скрипта в рабочую папку с само удалением при завершении,

но игра не стоит свеч, не такая уж и необходимая фича которая создает столько хлопот.
Аватара пользователя
minutka15

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение minutka15 »

Vanadiy777

Мой старый скрипт из шапки работал все последние годы,

этот скрипт работает и в exe и в bat и через правый клик как описано в шапке.



Код:

Код: Выделить всё

@echo off
for %%i in (*.txt) do set name=%%i
copy /b *.sfx + *.txt + *.7z %name%.exe
EXIT

последний работает в папке и как exe и как bat,но через правый клик не хочет.

По всей видимости кусочек кода ориентируется в папку темп либо в ту папку где он сам находится (куда его кинули для правого клика).

------



Все это можно сообразить через реестр добавив команду для самозапуска sfx и копирования скрипта в рабочую папку с само удалением при завершении,

но игра не стоит свеч, не такая уж и необходимая фича которая создает столько хлопот.
Аватара пользователя
Vanadiy777

Re: CMD/BAT - Создание установщика при помощи 7zSFX

Сообщение Vanadiy777 »

Цитата minutka15:



этот скрипт работает и в exe и в bat и через правый клик как описано в шапке.
CMD/BAT - Создание установщика при помощи 7zSFX




minutka15,

если этот скрипт работает, то проверьте тогда этот:



Код:

Код: Выделить всё

@echo off
copy *.txt *.
for %%i in (*.) do set name=%%i
copy /b *.sfx + *.txt + *.7z %name%.exe
del /q *.
exit
Ответить

Вернуться в «Скриптовые языки администрирования Windows»