Описание

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

  • 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
      Постоянная ссылка

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

      Ответить
  • 16.05.2019 в 11:57
    Постоянная ссылка

    Здравствуйте.

    Утилита просто мегаполезная. Только почему-то не запускается от имени системы. Как это исправить?
    Есть некий планировщик, запущенный как служба от «Локальная система». Данный планировщик запускает powershell скрипт, который запускает zvitupd.exe. Такая система не работает. Тот же powershell скрипт отрабатывает нормально, если запустить вручную от залогиненного пользователя.

    Ответить
    • 16.05.2019 в 12:34
      Постоянная ссылка

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

      Ответить

Добавить комментарий для Саша Отменить ответ

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

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.