Показать полную графическую версию : Удаленное обновление программы
Koto-kun
29-03-2017, 10:34
Дано 200 пользователей, и много софта и домен. Проблема с удаленным обновлением одной из программ. Она устанавливается в папку Program Files, и при установке вызывает окно UAC с требованием нажать ДА. Объяснить пользователям как это сделать не представляется возможным.
В следствии чего был перерыт весь осзон, много полезной информации нашел, но не получается.
Собственно вот скрипт:
@echo off
IF EXIST "C:\Program Files\Вилс"
(
echo Программа удаляется.
Start "" /wait "C:\Program Files\Вилс\unins000.exe" /silent
rd /s /q "C:\Program Files\Вилс"
setup.exe /silent
xcopy /Y "Вилс.lnk" %UserProfile%\Desktop\
)
ELSE
(
setup.exe /silent
xcopy /Y "Вилс.lnk" %UserProfile%\Desktop\
)
Какие проблемы меня поджидали?
1) "Start "" /wait "C:\Program Files\Вилс\unins000.exe" /silent"
Отрабатывается на ура, но бывает Unins000.exe называется Unins001.exe и тогда Батник выкидывает окошко с ошибкой Файл не найден. И не продолжает работу. Как проигнорировать ошибки или пускай хотя бы в командной строке отобразится? Хотя нет, не пойдет - нужен скрипт который позволит найти unins каким бы число на конце не было.
2)rd /s /q "C:\Program Files\Вилс"
отказано в доступе
пробовал делать Runas под учеткой локальной, которая входит в группу администраторов - результата нет. Пробовал делать под учеткой Доменного администратора - тоже не помогает.
Папку после унинсталла надо удалить обязательно, иначе поверх установленная программа не заработает.
3)setup.exe /silent проходит без эксцессов. Но зарпашивает окошко UAC... А пользователям никак не объяснишь что надо нажимать на да...
вроде вот...
Если антивирь каспер. Попробуй силами агента каспера.
Koto-kun, 1 - еще 1 if exist, 2 и 3 - схожая проблема и решение логичное (https://answers.microsoft.com/ru-ru/windows/forum/windows_7-windows_programs/%D0%BE%D1%82%D0%BA%D0%BB%D1%8E%D1%87%D0%B8%D1%82/aaf30796-9b8a-496f-8765-3ce8ab28686a)
Хотя нет, не пойдет - нужен скрипт который позволит найти unins каким бы число на конце не было. »
File masks and wildcards (http://www.febooti.com/products/automation-workshop/online-help/file-wildcard-mask/)
Казбек, там не везде корректная информация. В частности, неправильное описание:
? (question-mark character) that stands in for any single character.
*mat?.html — .html files starting with anything and ending with mat followed by any single character.
automate.html
tomato.html
mate.html
Вот здесь: Wildcards | Windows CMD | SS64.com (https://ss64.com/nt/syntax-wildcards.html) правильнее.
Iska,
Вы имеете ввиду упущение, относительно 0??
? Match 0 or one character, except for {dot}.
The only time it matches 0 characters is when it matches the end of the name, or the position before a {dot}.
The question mark can also be used more than once to match more than one character.
Ну да:
C:\Мои проекты\0056>dir *mat?.html
Том в устройстве C имеет метку System
Серийный номер тома: 8280-521A
Содержимое папки C:\Мои проекты\0056
Файл не найден
C:\Мои проекты\0056>copy nul automate.html
Скопировано файлов: 1.
C:\Мои проекты\0056>copy nul automat.html
Скопировано файлов: 1.
C:\Мои проекты\0056>dir *mat?.html
Том в устройстве C имеет метку System
Серийный номер тома: 8280-521A
Содержимое папки C:\Мои проекты\0056
29.03.2017 21:31 0 automat.html
29.03.2017 21:31 0 automate.html
2 файлов 0 байт
0 папок 1,812,451,328 байт свободно
Мелкие тонкости, но сколько же они могут кровушки попить.
Koto-kun
30-03-2017, 12:53
"Если антивирь каспер. Попробуй силами агента каспера."
Да, каспер. Им пытался и пытаюсь. Он не отрабатывает батники в принципе. Пытался лог файл выудить на каком моменте застревает - походу только и запускает сам сетап с ключами тихой установки.
Собственно модифицировал немного батник. При включении его вручную все отрабатывается и ярлычек создается как надо.
@echo off
taskkill /t /f /im:operator.exe
IF EXIST "C:\Program Files\Вилс\unins000.exe" (
echo Удаляется старая версия.
Start "" /wait "C:\Program Files\Вилс\unins000.exe" /silent
rd /s /q "C:\Program Files\Вилс"
setup.exe /silent /TASKS="desktopicon" /SUPPRESSMSGBOXES /NORESTART /SP-
xcopy "Рабочее место оператора.lnk" C:\users\public\desktop
) ELSE (
setup.exe /silent /TASKS="desktopicon" /SUPPRESSMSGBOXES /NORESTART /SP-
xcopy "Рабочее место оператора.lnk" C:\users\public\desktop
)
ключ /TASKS="desktopicon" выводит ярлык на рабочий стол, но в каспере он не срабатывает. либо срабатывает под пользователем, под которым каспер ставит программу...
Поэтому я юзал xcopy дополнительно.
UAC отключил через реестр:
REG ADD "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System" /v EnableLUA /t REG_DWORD /d 00000000 /f
rd /s /q "C:\Program Files\Вилс"
Команда не отрабатывается ни в какую... Орет отказано в доступе...
Пытался Takeown использовать:
C:\>takeown /f "C:\Program Files (x86)\Вилс"
Ошибка. Текущий вошедший пользователь не имеет привилегий владельца
на файл (или папку) "C:\Program Files (x86)\Вилс
".
или icacls
C:\>icacls "C:\Program Files\Вилс" /grant:r все:F
C:\Program Files\Вилс: Отказано в доступе.
Успешно обработано 0 файлов; не удалось обработать 1 файлов
Вручную в гуях добавил пользователя "ВСЕ" на папку Вилс с программой, дал пользователю "Все" полный доступ над папкой, с командной строки все нормально начало удаляться.
Вопрос только в том, как это сделать из командной строки. Ее же надо запускать от администратора локального. runas не поможет ибо надо тогда включать учетку у всех... В общем я в раздумьях, слишком это глобально получается... Другие программы нормально обновляются, потому что их удалять не требуется перед установкой новой версии...
попробую через PSEXEC...
Задача каспера запускается с каким пользователем?
И что за прога если не секрет?
rd /s /q "C:\Program Files\Вилс" »
Во избежание проблем с двумя русскими кодировками, 1251 и 866, лучше называть папки на латинице. При русских же именах надо или батник сохранять в кодировке 866 (или вы так и делаете?), или первой его строкой делатьchcp1251(а вот при ручном вводе в окно cmd система использует правильную кодировку).
Поставьте после этой строки строку с командой pause и посмотрите, какое сообщение об ошибке после этой команды.
В каспере создаешь инстолятор setup.exe в параметрах запуска устанавливаешь /silent. При создание задачи укажи обязательно логин и пароль админа домена.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.