Войти

Показать полную графическую версию : Удаленное обновление программы


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... А пользователям никак не объяснишь что надо нажимать на да...

вроде вот...

Deman80
29-03-2017, 16:01
Если антивирь каспер. Попробуй силами агента каспера.

gannet
29-03-2017, 18:37
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)

Казбек
29-03-2017, 20:02
Хотя нет, не пойдет - нужен скрипт который позволит найти unins каким бы число на конце не было. »

File masks and wildcards (http://www.febooti.com/products/automation-workshop/online-help/file-wildcard-mask/)

Iska
29-03-2017, 20:42
Казбек, там не везде корректная информация. В частности, неправильное описание:
? (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) правильнее.

Казбек
29-03-2017, 20:48
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.

Iska
29-03-2017, 21:33
Ну да:
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...

Deman80
30-03-2017, 14:18
Задача каспера запускается с каким пользователем?

И что за прога если не секрет?

mwz
30-03-2017, 21:12
rd /s /q "C:\Program Files\Вилс" »

Во избежание проблем с двумя русскими кодировками, 1251 и 866, лучше называть папки на латинице. При русских же именах надо или батник сохранять в кодировке 866 (или вы так и делаете?), или первой его строкой делатьchcp1251(а вот при ручном вводе в окно cmd система использует правильную кодировку).

Поставьте после этой строки строку с командой pause и посмотрите, какое сообщение об ошибке после этой команды.

Deman80
31-03-2017, 08:58
В каспере создаешь инстолятор setup.exe в параметрах запуска устанавливаешь /silent. При создание задачи укажи обязательно логин и пароль админа домена.




© OSzone.net 2001-2012