Показать полную графическую версию : [решено] Скрипт для аддона DrWeb не работает на Т13
volk1234
16-08-2011, 23:25
Приветствую.
Наваял скрипт для аддона, на "живой" системе все работает на ура.
Скрипт запускается из 7zip sfx при распаковке во временную папку.
командой RunProgram="fm0:hidcon:cmd /c \"%%T\\dwup_\\addon.cmd \" /s /e /i /y"
При установке в качестве аддона на Т13 ругается- невозможно найти файл drweb-600-win-x86.exe
@Echo off
Call :dvars$
:Install2One
Call :InstallWeb
Goto :EOF
:InstallWeb
Start "" /wait drweb-600-win-x86.exe /S /V"INSTALLDIR=\"%InstPathD%\\" TRANSFORMS=\"%~dp0drweb60.mst\" /qb"
Xcopy drweb32.key "%InstPathD%" /E /Q /H /R /Y
Goto :EOF
....
....
:dvars$
Set InstPathD=%ProgramFiles%\DrWeb
В чем загвоздка? В конце секции :dvars$ нет команды Goto :EOF или Exit потому как она находиться в конце файла. Да и судя по ошибке - начинает исполняться первая команда из секции :InstallWeb
volk1234,
Возможно просто нужно прописать полный путь в Start "" /wait drweb-600-win-x86.exe что-то типа Start "" /wait "c:\temp\drweb-600-win-x86.exe"
El Sanchez
18-08-2011, 17:01
volk1234, не нужно в батниках экранировать кавычки так, как это делается в конфигурационных файлах 7zsfx, да и полный путь необходим, как сказал Anton04:
Start "" /wait "%~dp0drweb-600-win-x86.exe" /S /V"INSTALLDIR=\"%InstPathD%\" TRANSFORMS=\"%~dp0drweb60.mst\" /qb"
Xcopy "%~dp0drweb32.key" "%InstPathD%" /E /Q /H /R /Y
volk1234
19-08-2011, 10:10
Кавычки экранировать пришлось, поскольку установщик drweb по другому их не принимает
El Sanchez
19-08-2011, 13:02
volk1234, пардон, с синтаксисом не разобрался. Пост исправил.
volk1234
30-08-2011, 00:44
Прикол в том, что с полным путем аддон выкидывает ошибку:
(не дословно) Не найден файл журнала windows и установка замирает.
И еще прикол, что аналогичный аддон работает вот с таким синтаксисом:
@Echo Off
echo.
Title Dr.Web install
pushd %~dp0
set TEMP=%windir%\TEMP
set mstname=drweb60.mst
drweb-600-win-x86.exe /S /v/qn /V"/quiet TRANSFORMS=%mstname% /l* %windir%\drweb.log"
set "key=hklm\software\doctor web\installedcomponents"
set "param=InstallPath"
FOR /F "usebackq tokens=3 delims= " %%i IN (`reg query "%key%" /s ^| findstr /i /c:"%param%"`) do (
set "DrWebInstallPath=%%i"
)
copy /y "%~dp0drweb32.key_" "%DrWebInstallPath%drweb32.key"
popd
GoTo :EOF
И еще прикол, что аналогичный аддон работает вот с таким синтаксисом: »
Дело в том что команда Start не работает без указании полного пути к файлу. Так что последний вариант вполне рабочий.
volk1234
31-08-2011, 20:00
Да, но тогда скрипт не ждет завершения выполнения команды.
SendMessage
31-08-2011, 20:17
Да, но тогда скрипт не ждет завершения выполнения команды. »
Как вариант - можно цикл с проверкой на завершение процесса вставить. Что-то типа:
...
drweb-600-win-x86.exe /S /v/qn /V"/quiet TRANSFORMS=%mstname% /l* %windir%\drweb.log"
:loop
(ping -n 2 127.0.0.1 & tasklist | find /i "drweb-600-win-x86.exe" || goto next)>nul
goto loop
:next
set "key=hklm\software\doctor web\installedcomponents"
...
otsheln1k
31-08-2011, 21:37
При работе над addon-ом пятой версии - ссылка здесь (http://forum.oszone.net/post-1304874-34.html), проблема была в определении переменной TEMP.... вероятнее всего, причина в этом. Если будет время проверю...
добавь в блок определения переменных:
set TEMP=%windir%\TEMP
на T13 она не определена......
да и:
pushd %~dp0
соответственно
popd
по окончании, не помешают, точно не помню....как то влияло на последующие аддоны...
volk1234
01-09-2011, 02:12
Проблема решена, на Т-13 нет перменной %TEMP%
....
@Echo off
pushd %~dp0
Set TEMP=%windir%\Temp
Call :dvars$
:Install2One
Call :InstallWeb
popd
Goto :EOF
:InstallWeb
Start "" /wait drweb-600-win-x86.exe /S /V"INSTALLDIR=\"%InstPathD%\\" TRANSFORMS=\"%~dp0drweb60.mst\" /qb"
Xcopy drweb32.key "%InstPathD%" /E /Q /H /R /Y
Goto :EOF
....
....
:dvars$
Set InstPathD=%ProgramFiles%\DrWeb
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.