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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Скриптовые языки администрирования Windows (http://forum.oszone.net/forumdisplay.php?f=102)
-   -   Создание установщика при помощи 7zSFX (http://forum.oszone.net/showthread.php?t=352554)

minutka15 08-12-2022 19:51 2998302

Создание установщика при помощи 7zSFX
 
Возникла задача ...
Для удобства создания установщиков на модулях 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 08-12-2022 20:54 2998311

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 08-12-2022 23:08 2998357

Спасибо пойдет конечно!

Vanadiy777 09-12-2022 02:14 2998365

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 09-12-2022 02:49 2998366

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

minutka15 09-12-2022 16:01 2998400

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

Vanadiy777 09-12-2022 18:16 2998412

Цитата:

Цитата minutka15
Мда, после конвертирования в exe файл на вызов из правой кнопки не работает.
Работает если только запустить из самой папки. »

У меня, после конвертации в ехе даже в папке не работает.
У Вас старый сконвертированный скрипт нормально отрабатывал с любого места?
Просто, по сути ехе, сделанный из cmd, это простой sfx-архив, который распаковывается во временную папку.
Соответственно и пути он ищет там же...
А вот как это обойти - пока не знаю...

minutka15 09-12-2022 19:13 2998419

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 10-12-2022 00:33 2998430

minutka15,
чем в ехе конвертируете?
У меня ни один скрипт в ехе в папке не работает...
В cmd все ровненько, а в ехе - ни как...

Vanadiy777 10-12-2022 00:55 2998433

Цитата:

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

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

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


minutka15 10-12-2022 02:41 2998435

Вложений: 1
Vanadiy777
Как батник из папки - работает
Как exe из папки - работает
Как exe через правый клик -Заработал!
Теперь выяснилось что была виновата строка "cd /d %~dp0" тогда как утилита ковыряется не в рабочей папке а там куда ее закинули..

Почему у вас не работает?
Может защитник windows в тихоря шуршит?

minutka15 10-12-2022 02:53 2998437

Я конвертирую при помощи quick batch file compiler, я несколько лет назад еще воткнул в свою сборку на правый клик,
там встраиваются конверторы на правый клик по reg файлу конвертировать в: bat,config7z,iss,nsis,au3,vbs и пр.
Скрытый текст
https://pixeldrain.com/u/e3KCVoTa


С учетом переделанной версии MakeSetup.ехе надо будет заменить в установленной папке "AppData\Roaming\UniWorker" если старый вариант не устроит.

Vanadiy777 10-12-2022 11:52 2998441

Цитата:

Цитата minutka15
Почему у вас не работает? »

у меня конвертор другой, из набора SetTools от gora...
UniWorker себе ставить не буду, у меня все необходимое уже реализовано.
Сейчас сделаю репак Quick Batch File Compiler, и себе поставлю, лишний конвертор не помешает.

minutka15 10-12-2022 13:20 2998446

Vanadiy777,
Цитата:

у меня конвертор другой, из набора SetTools от gora...
Вспомнил. У меня он тоже не срабатывал. Вот именно из-за этого я и заменил на другой..

Vanadiy777 10-12-2022 16:03 2998453

Цитата:

Цитата minutka15
Вот именно из-за этого я и заменил на другой.. »

minutka15,
я хочу вторым отдельно поставить, перевод только доделаю.
Пусть будет, когда-нибудь пригодится все равно, как в этот раз...
У Вас какая версия Quick Batch File Compiler?

minutka15 10-12-2022 16:53 2998454

Давно не заглядывал на версию, у меня 5.0.8.0 а последняя 5.3.0.3
надо будет подыскать..

Vanadiy777 10-12-2022 17:18 2998457

Цитата:

Цитата minutka15
а последняя 5.3.0.3
надо будет подыскать.. »

на нее лекарства пока нет...
Пока делаю 5.2.0.0... :)


Время: 23:52.

Время: 23:52.
© OSzone.net 2001-