Войти

Показать полную графическую версию : Результат установки обновления


rene
15-06-2017, 02:00
Доброго времени суток!
Пытаюсь автоматизировать установку обновления для WindowsXP, но ни как не могу додуматься как определить успешность/ошибку установки. Например вот это:
\\share\WindowsXP\kb4012598_x86_RU.exe /quiet /warnrestart:1 /log:c:\WannaCrypt.log || echo Installation error %errorlevel%. See c:\WannaCrypt.log >> %log%

Всегда выдает Installation error 0 даже в случае успешной установки. Помогите разобраться.

И еще попутный вопрос. Для успешной установки иногда приходится удалить ключ реестра reg delete HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer /f > nul но если этой ветки не существует выходить ошибка. Так вот, никак не получается подавить вывод ошибки, пытался отправлять в nul, не помогает. Временно сделал так start reg delete HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer /f но это просто костыль. Есть способы подавить сообщение? Или придется сначала проверять наличие ветки?

Iska
15-06-2017, 02:50
Всегда выдает »

Всегда? По приведённому коду он должен «выдавать» только в случае ненулевого кода возврата («||»), а не «всегда». В случае нулевого — не должен выдавать ничего.
А вот значение в приведёном коде %errorlevel% никогда не будет раскрываться в код возврата от kb4012598_x86_RU.exe, поскольку переменная окружения в данном виде раскрывается в момент начала исполнения команды. Всей команды. То есть — до начала исполнения kb4012598_x86_RU.exe. Хотите увидеть реальный код возврата — «setlocal enableextensions enabledelayedexpansion» в начало пакетного файла, сразу после «@echo off», и вместо «%errorlevel%» использовать «!errorlevel!». Либо задать использование отложенного раскрытия переменных окружения в реестре для командной строки по умолчанию. Либо вызывать командный процессор %comspec% с параметром «/v:on»:

/V:ON Разрешение отложенного расширения переменных среды с применением
символа '!' в качестве разделителя. Например, /V:ON разрешает
использовать !var! в качестве расширения переменной var во время
выполнения. Синтаксис var служит для расширения переменных
при вводе, что приводит к совсем другим результатам внутри
цикла FOR.

И еще попутный вопрос. »
Не надо попутных. Один вопрос — одна тема.

но если этой ветки не существует выходить ошибка. Так вот, никак не получается подавить вывод ошибки, пытался отправлять в nul, не помогает. »
Не то перенаправляете.
2>nul reg.exe delete "HKCU\Software\Policies\Microsoft\SystemCertificates\TrustedPublisher\Safer" /f
В данном случае перенаправлять в пустое устройство нужно не стандартный поток вывода stdout, а стандартный поток ошибок stderr.

rene
15-06-2017, 04:01
Эх, как много мне еще учиться. Спасибо за помощь!




© OSzone.net 2001-2012