Программа для обновления файлов с сервера

Программа Winform автоматически обновляется, загружает файл обновления с сервера на локальный

фон:

Если была разработана система управления, такая как OverseaPMS.exe, сейчас есть спрос, надеемся, что когда программа изменится в будущем, клиент сможет ее обнаружить, а затем обновить высокоуровневую программу с сервера на локальный, без пакета setup.exe для разработчиков. Отправить пользователям, чтобы покрыть установку.

Идеи:

После открытия программы OverseaPMS.exe, прочитайте локальный файл конфигурации SystemConfig.xml и файл конфигурации сервера ServerUpdate.xml (обычно читайте файл конфигурации в интерфейсе входа в систему, если нет, то в главном интерфейсе программы), прочитайте из локального файла конфигурации Номер версии клиента ClientVersion, сравните его с версией сервера ServerVersion. Если ClientVersion меньше ServerVersion, для обновления вызывается программа обновления AutoUpdate.exe, в противном случае она продолжит запуск локальной программы OverseaPMS.exe.

Сервер обновлений на Windows Server 2019 (Windows Server Update Services on Windows Server 2019)

Конкретная реализация:

(1) Клиентская программа:

1. OverseaPMS.exe программный код, внутренний механизм обнаружения настроек, идея такая же, как и выше.

Примечание. Проверка обновлений выполняется асинхронно: BackgroundWorker.

// Начало выполнения фоновых операций (трудоемких операций)

this.backgroundUpdate.RunWorkerAsync (); // Trigger выполнение метода backgroundUpadate_DoWork

Настроить в App.config
#region Проверять обновления /// /// Обнаружение обновления, обнаружение MAC-адреса /// private void backgroundUpadate_DoWork(object sender, DoWorkEventArgs e) < try < e.Result = false; string localxmlPath = System.Windows.Forms.Application.StartupPath + «\SystemConfig.xml»;//ClientUpdate.xml //string ct = System.Windows.Forms.Application.StartupPath + «\setup.exe»;//OverseaPMS.exe строка serverpath = basePath + «/ServerUpdate.xml»;//basePath — это путь обновления, настроенный в App.config System.Xml.XmlDocument dc = new XmlDocument(); dc.Load(localxmlPath); string clientVer = dc.SelectSingleNode(«/SystemConfig/ClientUpdate/Version»).InnerText; double cv = Convert.ToDouble(clientVer); System.Xml.XmlDocument dc1 = new XmlDocument(); dc1.Load(serverpath);// string serVer = dc1.SelectSingleNode(«/ServerUpdate/Version»).InnerText; double sv = Convert.ToDouble(serVer); // MessageBox.Show («Получить номер версии!»); if (cv < sv) < e.Result = true; return; >else < //MessageBox.Show(» Текущая версия самая последняя! «); e.Result = false; return; >> catch (FileNotFoundException fx) < MessageBox.Show («Не удается найти файл обновления версии клиента!», «Запрос», MessageBoxButtons.OK, MessageBoxIcon.Information); >catch (System.Exception ex) < Utility.Log.WriteSysLog(«Main,» + MethodBase.GetCurrentMethod().Name, ex); MessageBox.Show («Сетевое подключение ненормальное или операция не удалась, пожалуйста, попробуйте еще раз или свяжитесь с администратором!», «Запрос», MessageBoxButtons.OK, MessageBoxIcon.Information); >> private void backgroundUpadate_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) < try < if ((bool)e.Result) < // return; // тестовое использование if (MessageBox.Show («Обнаружена более высокая версия! Обновлять ли», «Запрос», MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) < //MessageBox.Show(«Completed!»); System.Diagnostics.Process.Start(Application.StartupPath + «\Update\AutoUpdate.exe», Application.StartupPath.Replace(‘ ‘, ‘|’)); System.Diagnostics.Process[] ps = System.Diagnostics.Process.GetProcesses(); foreach (System.Diagnostics.Process p in ps) < if (p.ProcessName.ToLower() == «overseapms» || p.ProcessName.ToLower() == «overseapms.vshost») < //MessageBox.Show(p.ProcessName); p.Kill(); break; >> > > > catch (System.Exception ex) < Utility.Log.WriteSysLog(«Main,» + MethodBase.GetCurrentMethod().Name, ex); MessageBox.Show («Сетевое подключение ненормальное или операция не удалась, пожалуйста, попробуйте еще раз или свяжитесь с администратором!», «Запрос», MessageBoxButtons.OK, MessageBoxIcon.Information); >> #endregion

2. Разработайте программу автоматического обновления AutoUpdate.exe для вызова OverseaPMS.exe.

Как обновить NOD32 через сервер обновления

правильный:

1. Создайте новую папку «Обновление» для хранения обновляемых файлов, таких как высокоуровневые программы .exe, .dll, ServerUpdate.xml и т. Д.

2. Скопируйте папку «Обновление» на сервер.

Как показано ниже, я создал новую тестовую папку на рабочем столе сервера и скопировал в нее папку обновления.

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

Примечание после развертывания: потребности сайтаНастройте .config, в противном случае клиент не сможет загрузить файл .exe.config с сервера, а обновленная программа не сможет запуститься.

Источник: russianblogs.com

Автообновление Тонкого клиента 1С на веб сервере Apache 2.4

Сервер терминалов, RemoteApp, или Active Directory + GPO, позволяют нам без особого труда обновлять платформу 1С централизованно, не «бегая» от ПК к ПК по всему офису, кабинетам, филиалам компании. И хорошая новость в том, что аналогично автообновление Тонкого клиента 1С также можно выполнить и на веб сервере Apache 2.4

Как вы наверное знаете, Сервер 1С, должен точно соответствовать версии клиента (в счет и минорные версии) в противном случаи ловим ошибку «Несоответствия версии клиента и сервера».

«Несоответствия версии клиента и сервера».

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

А вот если задействовать дополнительно к веб «Тонкий», то здесь уже ошибка гарантирована!

Конечно, как на веб сервере IIS так и на Apache, можно автоматически обновить «Тонкий клиент» 1С, без какого либо вмешательства со стороны администратора 1С, тем самым автоматом решить проблему несоответствий версий!

Читайте также:
Программа для настройки miui

И если с веб сервером IIS все более-менее стабильно в плане реализации, то вот с новой версией Apache 2.4 есть нюансы.

Внедрив пару верхних советов по запросу из Google: «Автообновление тонкого клиента на веб сервере Apache» я получил отказ на перезапуск службы веб сервера Apache 2.4. Так как правки в конфиге не подошли к сожалению (

Но об этом «сторис» будет чуть позже!

Сейчас давайте подготовим все остальное для реализации «автообновления тонкого на веб сервере».

И так, для начала нам нужен идентичный релиз «Тонкого клиента» с «Сервером 1С» отдельным дистрибутивом!

Скачайте его на сайте поддержки пользователей ИТС.

Упакуем его в zip архив (Обязательно) с коротким именем, например set.zip

Тонкий клиент 1С

Тонкий клиент 1С

И в каталоге, например, где у нас установлен веб сервер Apache, создадим себе папку «update».

В этот каталог мы и поместим наш «Тонкий клиент» нужной версии упакованный в zip архив.

Который и будет на «автомате» установлен (обновлен) на все пользовательские ПК, как только 1С обнаружит несоответствие версий клиента и сервера 1С.

После того как файл с «Тонким» мы подготовили и разместили в каталоге «update»

Идем в «Конфигуратор» нашей базы, там нужно сделать также пару настроек.

  1. Поставим “Птичку” Публиковать дистрибутив тонкого клиента.
  2. Укажем разрядность нашего тонкого клиента (У меня он х64)
  3. Расположение к zip архиву с тонким клиентом.

И переопубликуем информационную базу на веб сервере Apache 2.4.

Далее нам нужно внести правки в сам конфигурационный файл веб сервера Apache (httpd.conf) .

Находим в конфиге секцию с публикацией базы 1С.

И сразу ниже, создаем себе новую “Например: Dist 1C”

# 1c publication
Alias «/apache_base» «C:/APACHE/www/»

AllowOverride All
Options None
Require all granted
SetHandler 1c-application
ManagedApplicationDescriptor «C:/APACHE/www/default.vrd»

# Dist 1С
Alias «/update» «C:/APACHE/update/»

Options Indexes Includes
AllowOverride All
Require all granted
# Order allow,deny
# Allow from All

В секции # Dist 1С как вы заметили, есть две закомментированные директивы, это и есть продолжение нашей “сторис”! )

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

Конечно, пришлось искать проблему самостоятельно.

И заглянув в журнал “Диспетчера серверов” увидел следующее:

Invalid command ‘Order’, perhaps misspelled or defined by a module not included in the server configuration.

Что и натолкнуло на мысль проверить директивы на оф. сайте Apache.

Вот собственно, что нашел, буквально сходу:

Оказалось, что на версии Apache 2.4 (в отличии от 2.2) не работают директивы:

Читать далее.

Зарегистрируйтесь, чтоб продолжить чтение статьи
Зарегистрироваться / Войти

Если Вы хотите больше узнать о технической стороне 1С, тогда регистрируйтесь на первый бесплатный модуль курса: Администратор 1С >>>

С уважением, Богдан.

Изображение

Присоединяетесь к нашей группе телеграмм: Здесь вы получите ценную помощь от умного бота «Коли» (ChatGPT) + знания сотен ее участников.

Источник: kuharbogdan.com

Как работать с curl в Windows

Curl (client URL) — это инструмент командной строки на основе библиотеки libcurl для передачи данных с сервера и на сервер при помощи различных протоколов, в том числе HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, POP3, POP3S, SMTP и SMTPS. Он очень популярен в сфере автоматизации и скриптов благодаря широкому диапазону функций и поддерживаемых протоколов. В этой статье мы расскажем, как использовать curl в Windows на различных примерах.

▍ Установка в Windows

Во всех современных версиях Windows, начиная с Windows 10 (версия 1803) и Server 2019, исполняемый файл curl поставляется в комплекте, поэтому ручная установка не требуется. Чтобы определить местоположение curl и его версию в системе, можно использовать следующие команды:

where curl curl —version

Определение местоположения и версии curl в Windows

Команда curl —version также выводит список протоколов и функций, поддерживаемых текущей версией curl. Как видно из показанного выше скриншота, к использованию встроенной утилиты curl всё готово. Если вместо этого отображается сообщение об ошибке, curl может быть недоступен потому, что вы используете более раннюю версию Windows (например, Windows 8.1 или Server 2016). В таком случае вам потребуется установить curl в Windows вручную.

▍ Синтаксис curl

Команда curl использует следующий синтаксис:

curl [options. ] [url]

Инструмент поддерживает различные опции, которые мы рассмотрим ниже. Как и в любом инструменте командной строки, вы можете использовать для получения справки команду curl —help.

Получение справки при помощи команды curl

Для получения подробной справки можно использовать команду curl —help all. Справка разделена на категории, поэтому при помощи curl —help category можно просмотреть все темы.

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

Читайте также:
Программа чтобы показывало фпс и температуру в играх

▍ HTTP-запрос GET

При использовании curl с URL и без указания опций запрос по умолчанию использует метод GET протокола HTTP. Попробуйте выполнить такую команду:

curl https://4sysops.com

Приведённая выше команда по сути эквивалентна curl —request GET 4sysops.com, отправляющей запрос GET к 4sysops.com по протоколу HTTPS. Чтобы указать версию протокола HTTP (например, http/2), используйте опцию —http2:

curl —http2 https://4sysops.com

В случае URL, начинающихся с HTTPS, curl сначала пытается установить соединение http/2 и автоматически откатывается к http/1.1, если это не удаётся. Также он поддерживает другие методы, например, HEAD, POST, PUT и DELETE. Для использования этих методов вместе с командой curl нужно указать опцию —request (или -X), за которой следует указание метода. Стоит заметить, что список доступных методов зависит от используемого протокола.

▍ Получение информации об удалённом файле

Если вы администратор, то иногда вам могут быть интересны только заголовки HTTP. Их можно получить при помощи опции —head (или -I). Иногда URL может перенаправлять пользователя в другую точку. В таком случае опция —location (или -L) позволяет curl выполнять перенаправления.

Также можно использовать —insecure (или -k), чтобы разрешить незащищённые подключения и избежать ошибок с сертификатом TLS в случае, если целевой URL использует самоподписанный сертификат. Пользуйтесь этой опцией только при абсолютной необходимости. Все эти три опции можно скомбинировать в одну краткую запись, как показано в следующей команде:

curl -kIL 4sysops.com

Опции просмотра заголовков запросов, включения незащищённого соединения и использования перенаправлений

Как можно заметить, такая краткая запись особенно полезна для комбинирования нескольких опций. Приведённая выше команда по сути эквивалентна команде curl —insecure —head —location 4sysops.com.

Опция —head (или -I) также даёт основную информацию об удалённом файле без его скачивания. Как показано на скриншоте ниже, при использовании curl с URL удалённого файла он отображает различные заголовки, дающие информацию об удалённом файле.

curl -IL https://curl.se/windows/dl-7.85.0_5/curl-7.85.0_5-win64-mingw.zip

Использование curl для просмотра основной информации удалённых файлов

▍ Скачивание файла

Для скачивания файла и сохранения с тем же именем, что и на сервере, можно использовать curl с опцией —remote-name (или -O). Показанная ниже команда скачивает последнюю версию curl для Windows с официального сайта:

curl -OL https://curl.se/windows/latest.cgi?p=win64-mingw.zip

Скачивание файла с именем по умолчанию и индикатором прогресса

При необходимости для нахождения ресурса добавляется опция -L, разрешающая перенаправления. Если нужно сохранить файл с новым именем, используйте опцию —output (или -o). Кроме того, при использовании команды curl в скрипте может понадобиться отключить индикатор прогресса, что можно сделать при помощи опции —silent (или -s). Эти две опции можно скомбинировать:

curl -sLo curl.zip https://curl.se/windows/latest.cgi?p=win64-mingw.zip

Silently download a file and save with a custom name using curl

Скачивание файла без индикатора и сохранение под произвольным именем

▍ Продолжение прерванного скачивания

Наличие Accept-Ranges: bytes в заголовке ответа в буквальном смысле обозначает, что сервер поддерживает скачивания с возможностью продолжения. Чтобы продолжить прерванное скачивание, можно использовать опцию —continue-at (или -C), получающую смещение (в байтах). Обычно указывать смещение непросто, поэтому curl предоставляет простой способ продолжения прерванной загрузки:

curl -OLC — https://releases.ubuntu.com/22.04/ubuntu-22.04.1-desktop-amd64.iso

Продолжение прерванного скачивания

Как видно из скриншота, я скачивал iso-файл Ubuntu, но скачивание было прервано. Затем я снова запустил команду curl с опцией -C, и передача продолжилась с того диапазона байтов, на котором была прервана. Знак минус (-) рядом с -C позволяет curl автоматически определить, как и где продолжить прерванное скачивание.

▍ Аутентификация с Curl

Также Curl поддерживает аутентификацию, что позволяет скачать защищённый файл, предоставив учётные данные при помощи опции —user (or -u), принимающей имя пользователя и пароль в формате username:password. Если не вводить пароль, curl попросит ввести его в режиме no-echo.

curl -u surender -OL https://techtutsonline.com/secretFiles/sample.zip

Скачивание файла с аутентификацией по имени пользователя и паролю

Если вы используете Basic authentication, то необходимо передать имя пользователя и пароль, а значит, воспользоваться защищённым протоколом наподобие HTTPS (вместо HTTP) или FTPS (вместо FTP). Если по каким-то причинам приходится использовать протокол без шифрования, то убедитесь, что вы используете способ аутентификации, не передающий учётные данные в виде простого текста (например, аутентификацию Digest, NTLM или Negotiate).

Также curl поддерживает использование файлов конфигурации .curlrc, _curlrc и .netrc, позволяющих задавать различные опции curl в файле, а затем добавлять файл в команду при помощи опции curl —config (или curl -K), что особенно полезно при написании скриптов.

▍ Выгрузка файла

Опция —upload-file (или -T) позволяет выгружать локальный файл на удалённый сервер. Показанная ниже команда выгружает файл из локальной системы на удалённый веб-сервер по протоколу FTPS:

curl -kT C:UsersSurenderDownloadssample1.zip -u testlabsurender ftps://192.168.0.80/awesomewebsite.com/files/

Выгрузка файла на удалённый сервер

Опция -k добавляется для устранения проблем с сертификатами на случай, если веб-сервер использует самоподписанный сертификат. Наклонная черта в конце URL сообщает curl, что конечная точка является папкой. Можно указать несколько имён файлов, например «». Ниже показано, как с помощью одной команды curl можно выгрузить на сервер несколько файлов:

Читайте также:
Лучшие программы для ювелиров

curl -kT sample[1-5].zip -u testlabsurender ftps://192.168.0.80/awesomewebsite.com/files/

Выгрузка нескольких файлов на сервер

▍ Последовательность команд

Как говорилось ранее, curl поддерживает различные методы в зависимости от используемого протокола. Дополнительные команды можно отправлять при помощи —quote (или -Q) для выполнения операции до или после обычной операции curl. Например, можно скачать файл с удалённого сервера по протоколу FTPS и удалить файл с сервера после успешного скачивания. Для этого нужно выполнить следующую команду:

curl -u testlabsurender -kO «ftps://192.168.0.80/awesomewebsite.com/files/sample1.zip» -Q «-DELE sample1.zip»

Удаление файла после успешного скачивания

В показанном выше примере я скачал файл sample1.zip с FTPS-сервера при помощи опции -O. После опции -Q я добавил минус (-) перед командой DELE, что заставляет curl отправить команду DELE sample1.zip сразу после успешного скачивания файла. Аналогично, если вы хотите отправить команду на сервер до выполнения операции curl, используйте плюс (+) вместо минуса.

▍ Изменение user-agent

Информация user-agent сообщает серверу тип клиента, отправляющего запрос. При отправке запроса curl на сервер по умолчанию используется user-agent curl/ . Если сервер настроен так, чтобы блокировать запросы curl, можно задать собственный user-agent при помощи опции —user-agent (или -A). Показанная ниже команда отправляет стандартный user-agent Google Chrome:

curl -kIA «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/106.0.0.0» https://awesomewebsite.com/files/secretFile.zip

Использование собственного user-agent с командой curl, чтобы избежать блокировки сервером

На показанном выше скриншоте видно, что обычный запрос curl был отклонён веб-сервером (с ответом 403 Forbidden), но при передаче другого user-agent запрос выполняется успешно, возвращая ответ 200 OK.

▍ Отправка куки

По умолчанию запрос curl не отправляет и не сохраняет куки. Для записи куки можно использовать опцию —cookie-jar (или -c), а отправить куки можно опцией —cookie (or -b):

curl -c /path/cookie_file https://awesomewebsite.com/ curl -b /path/cookie_file https://awesomewebsite.com/

Первая команда записывает файл куки, а вторая отправляет куки с запросом curl. Также можно отправить куки в формате ‘name = value’:

curl -b ‘session=abcxyz’ -b ‘loggedin=true’ http://echo.hoppscotch.io

Отправка нескольких куки командой curl

Я воспользовался веб-сайтом echo.hoppscotch.io для демонстрации заголовков HTTP-запросов, которые обычно невидимы клиентам, отправляющим запрос. Если вы не хотите пользоваться этим веб-сайтом, то можете применить опцию –verbose (или -v) для отображения запроса в сыром виде (который отображает и заголовки запросов).

▍ Использование прокси-сервера

Если вы пользуетесь прокси-сервером для подключения к интернету, в curl можно указать прокси опцией —proxy (или -x). Если прокси-сервер требует аутентификации, то добавьте —proxy-user (или -U):

curl -x 192.168.0.250:8088 -U username:password https://awesomewebsite.com/

Прокси-сервер указывается в формате server:port, а пользователь прокси — в формате username:password. Можно не вводить пароль пользователя прокси, тогда curl попросит ввести его в режиме no-echo.

Использование прокси-сервера и аутентификации

▍ Дополнительные заголовки запросов

Иногда вместе с запросом к серверу необходимо отправить дополнительную информацию. В curl это можно сделать при помощи —header (или -H), как показано в следующей команде:

curl -vkIH «x-client-os: Windows 11 Enterprise (x64)» https://awesomewebsite.com

Указание дополнительных заголовков для запроса curl

Можно отправлять любую информацию, недоступную через стандартные заголовки HTTP-запросов. В этом примере я отправил название своей операционной системы. Также я добавил опцию -v для включения verbose-вывода, отображающего дополнительный заголовок, отправляемый вместе с каждым моим запросом curl.

▍ Отправка электронного письма

Так как curl поддерживает протокол SMTP, его можно использовать для отправки электронного письма. Показанная ниже команда позволяет отправить электронное письмо при помощи curl:

Отправка электронного письма командой curl

Давайте вкратце перечислим использованные здесь опции:

  • Опция —insecure (или -k) используется, чтобы избежать ошибки сертификата SSL. Мы уже применяли её ранее.
  • Опция —ssl-reql используется для апгрейда соединения передачи простого текста до зашифрованного соединения, если оно поддерживается SMTP-сервером. Если вы уверены, что ваш SMTP-сервер поддерживает SSL, то можно использовать непосредственно имя сервера smtps (например, smtps://smtp.yourdomain.com), как показано на скриншоте.
  • Опция —mail-from используется для указания адреса электронной почты отправителя.
  • Опция mail-rcpt указывает адрес электронной почты получателя.
  • Опция —user (или -u) отправляет имя пользователя для аутентификации, оно должно совпадать с адресом mail-from, потому что в противном случае письмо может быть отклонено или помечено как спам.
  • Опция —upload-file (или -T) используется для указания файла, в котором находится отправляемое письмо.

Просмотр письма, отправленного с помощью curl

Это всего лишь несколько примеров использования curl — на самом деле их гораздо больше. Я настоятельно рекомендую проверить справку по curl и поэкспериментировать с ней.

А вы используете curl? И если да, то для чего?

Источник: habr.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru