2014-09-04 3 views
1

Этот сайт представляет собой обширную информацию, и я нашел несколько отличных решений, но они все детали (не по порядку) для моей потребности. Недавно Adobe выпустила исправление безопасности для Acrobat, к сожалению, это небольшой патч, а также требуется предыдущая версия патча. Подробнее - Чтобы обновить до Acrobat 11.0.08, вы должны установить 11.0.07. Некоторые машины имеют 11,0,06 и ниже. К счастью, 11.0.07 не имеет никаких предварительных условий, кроме основной версии 11.Проверка и обновление версии программы

Что мне нужно сделать, это проверить, имеет ли машина 11.0.07 или 11.0.08. Если у него нет ни 7, ни 8, установите 7, затем 8. Если 7 уже установлено, тогда установите 8. Если 8 уже установлено, ничего не делайте. Файлы обновления находятся на общем ресурсе и требуют прав администратора для установки, поэтому он будет запускаться вручную для каждой машины, требующей обновления.

Я вылупился следующим вместе -

#@echo off 
SETLOCAL 
cls 
rem Installing an update which results in Adobe Reader 11.0.08 
echo. 
echo. 
echo Installing Acrobat Reader 11.0.07 update... please wait... 
rem if exist "\\server\share\Logs\%computername%_acrobat_reader_11008.txt" goto gotit 
rem Find generates an errorlevel of zero if it encounters a match. 
Reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s ^| find "DisplayName" ^| find "Adobe Acrobat XI Pro" ^| find "DisplayVersion" ^| find "11.0.07" 
if %errorlevel% EQU 1 (
goto got7 
) ELSE (
goto wrongversion 
) 
:got7 
echo Installing 11.0.08 Update 
Reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s ^| find "DisplayName" ^| find "Adobe Acrobat XI Pro" ^| find "DisplayVersion" ^| find "11.0.08" 
if %errorlevel% EQU 0 (
goto gotit 
) ELSE (
net use q: "\\server\share\Source\patches" /persistent:no 
q: 
msiexec /quiet /update Q:\AcrobatSecUpd11008.msp > "\\server\share\Logs\%computername%_acrobat_reader_11008.txt" 
goto gotit 
) 
:wrongversion 
Reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall" /s ^|find "DisplayName" ^| find "Adobe Acrobat XI Pro" ^| find "DisplayVersion" ^| find "11.0.08" 
if %errorlevel% EQU 0 (
goto gotit 
) ELSE (
echo Installing 11.0.07 Update 
net use q: "\\server\shareSource\patches" /persistent:no 
q: 
msiexec /quiet /update Q:\AcrobatUpd11007.msp > "\\server\share\Logs\%computername%_acrobat_reader_11008.txt" 
goto got7 
) 
:gotit 
pause 

К сожалению, значение строки реестра разделены. DisplayName показывает только «Adobe Acrobat XI Pro», следовательно, несколько запросов «найти».

+0

так - есть вопрос? похоже, у вас уже есть решение. – ths

+0

Он работает неправильно. Игнорируйте некоторые утверждения. Я протестировал его на своем компьютере, который находится в версии 08, но он все еще выполняет установки. – MattG78

+0

Ваши множественные операторы поиска не работают так, как вы думаете. Первая находка с displayname выведет текст, подобный «Adobe Acrobat XI Pro», и второй фильтр поиска на «Adobe Acrobat XI Pro». Последняя находка содержит только строки «Adobe Acrobat XI Pro». Все остальное было отфильтровано предыдущей командой find. – foxidrive

ответ

0

Ваш if %errorlevel% EQU 1 ( прямо противоречит вашим требованиям о возврате находок. Я думаю, вы имеете в виду equ 0 здесь.

, но вы не должны использовать эту конструкцию в любом случае, лучше использовать if errorlevel 1, который проверяет на 1 или выше.

также, если вы фильтруете для отображаемого имени, ваш следующий фильтр не может найти нужный номер версии из этих результатов.

что-то вдоль этих линий должно работать:

@ECHO off 
SETLOCAL enabledelayedexpansion 
for /F "usebackq tokens=*" %%a in (`Reg query HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall /s /f "Adobe Acrobat XI Pro"`) do (
    SET KEY=%%a 
    GOTO :next 
) 
:next 
IF NOT "%KEY%" EQU "" (
    FOR /F "usebackq tokens=1,3" %%a in (`Reg query %KEY% /f DisplayVersion`) do (
    IF "%%a" EQU "DisplayVersion" SET VER=%%b 
) 
    IF "!VER!" EQU "11.0.07" ECHO found 
) 
+0

Спасибо, что вы говорите, я попробую и отправлю отчет. – MattG78

+0

Прошу прощения, но у меня проблемы с инъекцией в мою текущую партию. – MattG78

+0

все в порядке, нет необходимости извиняться. – ths

Смежные вопросы