Показать полную графическую версию : [решено] Инсталляция программы
interminable
20-01-2016, 14:22
Есть папка с 3-мя файлами
1.exe
2.cfg
3.txt
Нужен bat файл, который запустит 1.ехе проинсталлирует программу, затем скопирует в созданную после инсталляции директорию файлы 2 и 3.
Если "1.exe" инсталлируется самостоятельно, без вмешательства (и процесс завершается) и известен путь и папка, которую он создает, можно так:
@echo on
set "in=papka_in"
set "out=papka_out"
set "p=1.exe"
start "" "%in%\1.exe"
cmd /c for /l %%i in () do for /f delims^^=^^" %%j in ('tasklist /fi "imagename eq %p%" /fo csv /nh') do if not "%%j"=="%p%" (if exist "%out%" (copy /y "%in%\2.cfg" "%out%" & copy /y "%in%\3.txt" "%out%")) & exit
.
Или так, при тех же условиях выше:
@echo on
set "in=papka_in"
set "out=papka_out"
start /b /wait "" "%in%\1.exe"
if exist "%out%" (copy /y "%in%\2.cfg" "%out%" & copy /y "%in%\3.txt" "%out%")
exit
.
Или так, »
Не «или» а только так. Со «start» и без «/wait» не будет никакого «после инсталляции», а именно что «сразу».
for /l %%i in () do » с этим будет, тем более я проверял перед тем как выложить.
Да, инсталляция пройдет, папка будет создана и как только процесс пропадет, скопируются файлы (с заменой, если такие будут), чем по ТЗ не так.
Не «или» а только так. »
Полностью согласен, но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана.
не решает проблему на 100% », можно еще кучу подводных камней найти, просто проводить инсталляцию как минимум с помощью cmd - по-моему перебор (и софта хватает по этой части вплоть до полного автомата)
но замечу, что даже наличие /wait не решает проблему на 100%.
Например, если 1.exe запустит родительский процесс, который распаковывает основной установщик во временную папку, а затем завершает процесс 1.exe и запускает дочерний процесс собственно установщика. В этом случае копирование может произойти в эту временную щель между двумя процессами и нужная для копирования папка еще не будет создана. »
Именно так :).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.