Описание

Проект для автоматического обновления бухгалтерской программы 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: 6 комментариев

  • 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"]
     }
    }
    Ответить
  • 19.12.2018 в 16:20
    Постоянная ссылка

    новьій урл и другие кавьічки

    powershell -ExecutionPolicy Bypass .\medoc-downloader.ps1
    
    $downloadPage = Invoke-WebRequest -Uri 'https://medoc.ua/uk/download'
    $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"]
    }
    }
    Ответить
  • 06.03.2019 в 15:08
    Постоянная ссылка

    Скрипт выкачивает все обновления. Как прочитать установленную версию MeDoc? Чтобы обновления ниже установленной версии не загружались?

    Ответить
    • 11.03.2019 в 20:02
      Постоянная ссылка

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

      Ответить

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

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