Скрипт для аддона DrWeb не работает на Т13
Приветствую.
Наваял скрипт для аддона, на "живой" системе все работает на ура.
Скрипт запускается из 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 1734657 |
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
|
Кавычки экранировать пришлось, поскольку установщик drweb по другому их не принимает
|
El Sanchez |
19-08-2011 13:02 1735150 |
volk1234, пардон, с синтаксисом не разобрался. Пост исправил.
|
Прикол в том, что с полным путем аддон выкидывает ошибку:
(не дословно) Не найден файл журнала 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
|
Цитата:
Цитата volk1234
И еще прикол, что аналогичный аддон работает вот с таким синтаксисом: »
|
Дело в том что команда Start не работает без указании полного пути к файлу. Так что последний вариант вполне рабочий.
|
Да, но тогда скрипт не ждет завершения выполнения команды.
|
SendMessage |
31-08-2011 20:17 1743503 |
Цитата:
Цитата volk1234
Да, но тогда скрипт не ждет завершения выполнения команды. »
|
Как вариант - можно цикл с проверкой на завершение процесса вставить. Что-то типа:
Код:
...
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"
...
|
При работе над addon-ом пятой версии - ссылка здесь, проблема была в определении переменной TEMP.... вероятнее всего, причина в этом. Если будет время проверю...
добавь в блок определения переменных:
set TEMP=%windir%\TEMP
на T13 она не определена......
да и:
pushd %~dp0
соответственно
popd
по окончании, не помешают, точно не помню....как то влияло на последующие аддоны...
|
Проблема решена, на Т-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
|
Время: 00:26.
© OSzone.net 2001-