Описание

Проект для автоматического обновления бухгалтерской программы M.E.Doc. Разработчики отключили обновление по интернету с версии 10.01.188 и выше, из-за чего стала недоступной быстрая массовая установка обновлений на серверах, а автоматизации обновления и так никогда не было. Этот проект не только полностью решает данную проблему, но и добавляет функции безопасного автоматического обновления.

Использование EzvitUpd очень простое — нужно только запустить файл ezvitupd.exe и дождаться, пока он по очереди обновит все установленные копии программы M.E.Doc. Поддерживаются версии 10.01.190 и выше, так как только начиная с этого номера обновления подписаны сертификатом «Limited Liability Company IT Expert» и EzvitUpd проверяет, правильная ли подпись у обновления, прежде чем устанавливать его. Если по ходу обновления возникнут ошибки, EzvitUpd сообщит точную информацию, что случилось и с какой копией M.E.Doc произошла проблема. Для включения тихого режима без вывода любых сообщений, например для использования в планировщике, используйте ключ /S.

Также перед обновлением проверяется, запущена ли у кого-то на сервере клиентская часть ezvit.exe, и выводится сообщение со списком пользователей, которым необходимо закрыть программу. Так администратор может настроить ярлык для пользователей, чтобы они самостоятельно запускали EzvitUpd от его имени, например с помощью AdmiLink (копия) или подобных программ. Для запуска EzvitUpd нужны права администратора, так как только в этом случае возможно перечисление процессов (query process ezvit.exe) и формирование списка пользователей, а также есть возможность завершать процесс ezvitInfo.exe, что и делает EzvitUpd перед началом обновления.

 

Дополнительно

Добавлена возможность запускать обновление от имени конкретного пользователя. Это может пригодиться в том случае, если необходимо ограничить права службам ZvitGrp*. Для этого нужно сначала дать этому пользователю право управления службой, делается это с помощью утилиты subinacl.exe командой:

subinacl /service ZvitGrp1 /grant=Medoc

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

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

runas /savecred /user:Medoc *

где * — любая программа.

После чего можно переименовать ezvitupd.exe в ezvitupd-*.exe, где * — имя пользователя, например:

ezvitupd-Medoc.exe

так EzvitUpd поймёт, от какого имени нужно запускать обновление с помощью runas с сохранённым паролем, и соответственно EzvitUpd нужно запускать от имени того администратора, который сохранил пароль.

Примечание: при тестировании этой функции с внешним сервером Firebird иногда наблюдались рандомные ошибки обновления «Error reading data from the connection».

Скачать: EzvitUpd 1.6 [1 MB]

EzvitUpd — автоматическое обновление M.E.Doc

EzvitUpd — автоматическое обновление M.E.Doc: 1 комментарий

  • 12.12.2017 в 17:50
    Постоянная ссылка

    выкачивание обновлений со страницы медка. алгоритм — проверяет наличие первого файла (*.zip) с сайта в папке, проверяет его дату, если совпадают то скрипт завершается, если нет то выкачивает и смотрит следующий.
    за наставничество благодарность товарищу Kazun.

    повершела 3 хватает (на 2 не проверял). можно использовать такую конструкцию:

    medoc.cmd:
    powershell %~dp0medoc.ps1

    medoc.cmd: для цикличности проверки
    :start1
    powershell %~dp0medoc.ps1
    ping -n 600 localhost > Nul
    goto :start1

    medoc.ps1:
    $downloadPage = Invoke-WebRequest -Uri ‘https://www.medoc.ua/uk/page/update/’
    $downloadPage.Links | Where-Object { $_.href -like ‘*.zip’ } | Foreach {
    $web = Invoke-WebRequest $_.href -Method Head
    $name = $web.BaseResponse.ResponseUri.Segments[-1]

    Write-Host «FileName : $name» -ForeGround «Yellow»

    if($name) {

    if(Test-Path $name) {
    $file = Get-Item $name

    if($file.LastWriteTime -eq $web.Headers[«Last-Modified»]) {
    continue
    }
    }

    Invoke-WebRequest $_.href -OutFile $name
    $file = Get-Item $name
    $file.LastWriteTime = [datetime]$web.Headers[«Last-Modified»]
    }
    }

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *