Добавить
Уведомления

# 73 Уроки C# – Как обновлять свою программу

00:00 Введение • Обсуждение обновления программы на C#. • Объяснение метода обновления и его преимуществ. • Упоминание о заранее подготовленной версии 1.0. 00:41 Проверка текущей версии • Использование метода `GetAssembly()` для получения текущей сборки. • Преобразование версии в строку для удобства работы. 01:34 Настройка версии в проекте • Настройка версии в свойствах проекта. • Использование форматирования `ToString()` для отображения версии. • Настройка количества компонентов версии с помощью параметра `FileAlignment`. 02:33 Пример отображения версии • Демонстрация отображения версии с двумя компонентами. • Объяснение различий между `ToString()` и `FileAlignment`. 02:59 Логика обновления • Проверка наличия новой версии на хостинге. • Обращение к веб-клиенту для получения данных о версии. • Подготовка к проверке обновления. 03:44 Проверка доступности интернета • Создание класса для проверки доступности интернета. • Использование публичного статического булева поля «окей» для проверки состояния интернета. • Объяснение преимуществ использования DNS-запроса перед пингом. 04:43 Преимущества DNS-запроса • DNS-запрос учитывает возможные блокировки и проблемы с роутером. • Пример с Google и банами подчёркивает важность правильного подхода. 05:41 Реализация DNS-запроса • Прописывание DNS-запроса в конфигурации. • Использование тестового хостинга для проверки работы DNS. • Обработка ошибок при выполнении DNS-запроса. 06:39 Проверка обновления • Проверка состояния интернета перед проверкой обновления. • Получение актуальной версии из базы данных. • Сравнение текущей версии с актуальной для определения необходимости обновления. 10:10 Конвертация версий • Конвертация версий для устранения языковых и региональных различий. • Использование invariantCulture для корректной проверки версий. 11:25 Диалог обновления • Отображение диалога с предложением обновления. • Загрузка новой версии через веб-клиент. • Перезапуск процесса после обновления. 12:25 Использование CMD для перезапуска • Завершение текущего процесса с помощью CMD. • Перезапуск процесса с тайм-аутом. • Проверка выполнения предыдущего действия в CMD. 13:22 Удаление и переименование файла • После скачивания нового EXE-файла его удаляют. • Переименовывают старый файл в «123.exe». • Запускают программу, используя переменную для текущего имени программы. 14:19 Получение пути к файлу • Получают полный путь к файлу через `GetExecutablePath`. • Используют интерполяцию для замены имён файлов переменными. 15:18 Проверка работы обновления • Завершают процесс, устанавливают тайм-аут на 1 секунду и удаляют файл. • Переименовывают новый файл и запускают его. • Проверяют обновление программы, убеждаясь в его успешности. 16:21 Решение проблемы с планировщиком • Объясняется проблема с обновлением через планировщик: Windows считает, что файлы находятся в системе. • Предлагается решение: при запуске программы обязательно устанавливать `CurrentDirectory`. 17:19 Переход на HTTP-клиент • Рассматривается возможность использования HTTP-клиента вместо веб-клиента для более быстрой и синхронной работы. • Описывается конструкция для получения ответа от HTTP-запроса. 19:10 Обработка ошибок HTTP-запроса • Объясняется, как обрабатывать ошибки HTTP-запроса, проверяя статус-код. • Подчёркивается важность проверки статуса для предотвращения сбоев программы. 20:02 Начало скачивания через файл-стрим • Обсуждение использования клиента для скачивания файлов. • Упоминание о необходимости работы с файл-стримом. • Попытки вспомнить правильную конструкцию для скачивания. 21:00 Получение потока • Использование GET для получения потока. • Объяснение процесса получения пути к потоку. • Обертывание потока в переменную для дальнейшего использования. 21:53 Синхронное скачивание • Описание процесса синхронного скачивания файла. • Запись файла в память после подключения к потоку. • Сравнение скорости скачивания с веб-клиентом. 22:51 Проверка версии и обновление • Проверка доступной версии через HTTP-клиент. • Рекомендации по использованию HTTPS-клиента. • Обсуждение проверки интернет-соединения через DNS. 23:51 Работа с бета-версией • Объяснение ситуации, когда версия на устройстве может быть больше, чем на сервере. • Использование тегов для идентификации бета-версии. • Проверка необходимости обновления в зависимости от наличия тега «бета». 24:49 Обновление бета-версии • Пример проверки обновления для версии 19.3. • Логика обновления бета-версии до стабильной. • Разъяснение ситуации, когда версия на сервере больше, чем на устройстве. 26:46 Заключение • Ответ на вопрос о коте, который не появился в видео. • Призыв ставить лайки и подписываться на канал. • Прощание с аудиторией.

Иконка канала Ленинский Букварь
233 подписчика
12+
4 просмотра
месяц назад
12+
4 просмотра
месяц назад

00:00 Введение • Обсуждение обновления программы на C#. • Объяснение метода обновления и его преимуществ. • Упоминание о заранее подготовленной версии 1.0. 00:41 Проверка текущей версии • Использование метода `GetAssembly()` для получения текущей сборки. • Преобразование версии в строку для удобства работы. 01:34 Настройка версии в проекте • Настройка версии в свойствах проекта. • Использование форматирования `ToString()` для отображения версии. • Настройка количества компонентов версии с помощью параметра `FileAlignment`. 02:33 Пример отображения версии • Демонстрация отображения версии с двумя компонентами. • Объяснение различий между `ToString()` и `FileAlignment`. 02:59 Логика обновления • Проверка наличия новой версии на хостинге. • Обращение к веб-клиенту для получения данных о версии. • Подготовка к проверке обновления. 03:44 Проверка доступности интернета • Создание класса для проверки доступности интернета. • Использование публичного статического булева поля «окей» для проверки состояния интернета. • Объяснение преимуществ использования DNS-запроса перед пингом. 04:43 Преимущества DNS-запроса • DNS-запрос учитывает возможные блокировки и проблемы с роутером. • Пример с Google и банами подчёркивает важность правильного подхода. 05:41 Реализация DNS-запроса • Прописывание DNS-запроса в конфигурации. • Использование тестового хостинга для проверки работы DNS. • Обработка ошибок при выполнении DNS-запроса. 06:39 Проверка обновления • Проверка состояния интернета перед проверкой обновления. • Получение актуальной версии из базы данных. • Сравнение текущей версии с актуальной для определения необходимости обновления. 10:10 Конвертация версий • Конвертация версий для устранения языковых и региональных различий. • Использование invariantCulture для корректной проверки версий. 11:25 Диалог обновления • Отображение диалога с предложением обновления. • Загрузка новой версии через веб-клиент. • Перезапуск процесса после обновления. 12:25 Использование CMD для перезапуска • Завершение текущего процесса с помощью CMD. • Перезапуск процесса с тайм-аутом. • Проверка выполнения предыдущего действия в CMD. 13:22 Удаление и переименование файла • После скачивания нового EXE-файла его удаляют. • Переименовывают старый файл в «123.exe». • Запускают программу, используя переменную для текущего имени программы. 14:19 Получение пути к файлу • Получают полный путь к файлу через `GetExecutablePath`. • Используют интерполяцию для замены имён файлов переменными. 15:18 Проверка работы обновления • Завершают процесс, устанавливают тайм-аут на 1 секунду и удаляют файл. • Переименовывают новый файл и запускают его. • Проверяют обновление программы, убеждаясь в его успешности. 16:21 Решение проблемы с планировщиком • Объясняется проблема с обновлением через планировщик: Windows считает, что файлы находятся в системе. • Предлагается решение: при запуске программы обязательно устанавливать `CurrentDirectory`. 17:19 Переход на HTTP-клиент • Рассматривается возможность использования HTTP-клиента вместо веб-клиента для более быстрой и синхронной работы. • Описывается конструкция для получения ответа от HTTP-запроса. 19:10 Обработка ошибок HTTP-запроса • Объясняется, как обрабатывать ошибки HTTP-запроса, проверяя статус-код. • Подчёркивается важность проверки статуса для предотвращения сбоев программы. 20:02 Начало скачивания через файл-стрим • Обсуждение использования клиента для скачивания файлов. • Упоминание о необходимости работы с файл-стримом. • Попытки вспомнить правильную конструкцию для скачивания. 21:00 Получение потока • Использование GET для получения потока. • Объяснение процесса получения пути к потоку. • Обертывание потока в переменную для дальнейшего использования. 21:53 Синхронное скачивание • Описание процесса синхронного скачивания файла. • Запись файла в память после подключения к потоку. • Сравнение скорости скачивания с веб-клиентом. 22:51 Проверка версии и обновление • Проверка доступной версии через HTTP-клиент. • Рекомендации по использованию HTTPS-клиента. • Обсуждение проверки интернет-соединения через DNS. 23:51 Работа с бета-версией • Объяснение ситуации, когда версия на устройстве может быть больше, чем на сервере. • Использование тегов для идентификации бета-версии. • Проверка необходимости обновления в зависимости от наличия тега «бета». 24:49 Обновление бета-версии • Пример проверки обновления для версии 19.3. • Логика обновления бета-версии до стабильной. • Разъяснение ситуации, когда версия на сервере больше, чем на устройстве. 26:46 Заключение • Ответ на вопрос о коте, который не появился в видео. • Призыв ставить лайки и подписываться на канал. • Прощание с аудиторией.

, чтобы оставлять комментарии