Добавить в корзинуПозвонить
Найти в Дзене
коморка фрилансера

как обновить клиент 1С без прав администратора

«Я дурачек, но оно работает»: как я победил обновления 1С без админа Сразу короткое саммари для тех, кому нужен только результат труда: Ставим программу через msiexec с флагами, позволяющими установку без прав админа, в папку пользователя. Для получения ссылок на обновления скрипт отправляет GET-запрос к серверу базы и декодирует ответ. Затем скачивает необходимую версию и устанавливает её аналогичным образом. Решение автоматизировано скриптом, ссылка на который приведена в конце статьи. я ничего не понимаю в 1с, да и вообще дурачек. проблема была такая: небольшая организация, пять компов бухгалтеров. админ-прав у них нет. 1с у них в каком-то облаке, предположим — во фреше. когда приходит обновление, бухи звонят и просят обновление поставить, потому что оно хочет права админа. поначалу это было вроде и ничего, а потом надоело. первый вопрос: а как поставить 1с под обычным пользователем? берем сетап, запускаем — просит права админа. жопа. оказывается, делать можно так: берем msi и ст

«Я дурачек, но оно работает»: как я победил обновления 1С без админа

Сразу короткое саммари для тех, кому нужен только результат труда:

Ставим программу через msiexec с флагами, позволяющими установку без прав админа, в папку пользователя. Для получения ссылок на обновления скрипт отправляет GET-запрос к серверу базы и декодирует ответ. Затем скачивает необходимую версию и устанавливает её аналогичным образом. Решение автоматизировано скриптом, ссылка на который приведена в конце статьи.

Необходимо для небольшой сети не имеющей собственного сервера 1с и домена организовать автоматическое обновление клиента 1с для сервисов 1cfresh и bit-stroitelstvo пользователям без админских прав на компах.

я ничего не понимаю в 1с, да и вообще дурачек. проблема была такая: небольшая организация, пять компов бухгалтеров. админ-прав у них нет. 1с у них в каком-то облаке, предположим — во фреше. когда приходит обновление, бухи звонят и просят обновление поставить, потому что оно хочет права админа. поначалу это было вроде и ничего, а потом надоело.

первый вопрос: а как поставить 1с под обычным пользователем? берем сетап, запускаем — просит права админа. жопа. оказывается, делать можно так: берем msi и ставим вот такой командой.

msiexec /i "setuptc_8.3.27.1590.msi" ALLUSERS=2 MSIINSTALLPERUSER=1 /qb /norestart

и оно ставится без прав администратора вот сюда:

%LOCALAPPDATA%\Programs\1cv8_x86\<версия>\

все, мы победили. ура. но прилетает обновление из облака, и оно срать хотело, что у нас куда поставлено, — и просит права админа.

в целом просто надо взять установщик и повторить вышепоказанное. но, блин, найди его, скачай его, разбери его… проще пароль вводить.

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

GET http://<база>/e1cib/login?vl=en_US&version=<текущая_версия>

получаем ответ кодом 409 в виде XML, и там внутри лежит строка, закодированная в base64. раскодируем — и получаем что-то типа:

{"","",{"..."},"8.3.27.1590","http://server/setuptc_8.3.27.1590.exe;..."}

ссылок может быть несколько, но смысл в том, что мы знаем номер версии и ссылку для скачивания дистрибутива. бинго.

а как узнать, надо ее качать и ставить или у нас уже все нормально? надо посмотреть по пути, указанному выше:

%LOCALAPPDATA%\Programs\1cv8_x86\

там будут каталоги с номерами версий, и можно понять: нужна нам эта версия или она и так установлена.

если нужна — скачиваем и устанавливаем, как написано выше.

итого алгоритм простой: пишем для буха скрипт, который запускается и для всех прописанных в ibases.v8i баз совершает быстрые GET-запросы. получаем список версий и ссылок, дедуплицируем. после этого смотрим свой каталог %LOCALAPPDATA%\Programs\1cv8_x86\: если какой-нибудь версии из полученных там нет — значит, надо ее скачать и установить.

итого: бух утром запускает 1с, а та начинает качать обновление и просить админа. бух это отменяет, запускает наш скрипт — он все обновляет — и бух может работать. профит.

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

https://gist.github.com/frog158/a2b39e03cef1537b04b025f0ea6fff8b

весь код сгенерирован клауд кодом, а то вдруг кто-то брезгует.