[PR #768] [CLOSED] feat: автообновление через отдельные shell-скрипты на Windows, Linux и macOS #53

Closed
opened 2026-07-19 11:34:21 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/768
Author: @Overl1te
Created: 4/23/2026
Status: ❌ Closed

Base: main ← Head: feat/auto-update


📝 Commits (1)

  • c47beab feat: автообновление через отдельные shell-скрипты на Windows, Linux и macOS

📊 Changes

8 files changed (+491 additions, -45 deletions)

View changed files

📝 linux.py (+37 -3)
📝 macos.py (+102 -38)
📝 ui/ctk_tray_ui.py (+18 -0)
📝 utils/default_config.py (+1 -0)
📝 utils/tray_common.py (+19 -1)
📝 utils/update_check.py (+6 -0)
➕ utils/updater.py (+271 -0)
📝 windows.py (+37 -3)

📄 Description

Добавлен механизм самообновления: приложение скачивает и заменяет текущий бинарник через отдельный скрипт PowerShell (.ps1) или Bash (.sh), обходя ограничение на замену запущенного исполняемого файла без отдельного updater-приложения.

utils/updater.py (новый): определение платформенных файлов, проверка прав на запись, генерация скриптов для Windows/Linux/macOS; на macOS — монтирование DMG, копирование .app с откатом при ошибке, снятие quarantine, перезапуск.
utils/update_check.py: кэширует assets релиза локально, чтобы при часовом rate limit они были доступны для отложенного обновления.
utils/default_config.py: auto_update = True по умолчанию.
utils/tray_common.py: maybe_notify_update теперь запускает автоустановку при auto_update=True и is_supported(), иначе показывает ручной диалог; добавлены колбэки on_update_available / on_exit.
windows.py / linux.py: _on_update_available добавляет пункт трея «Обновить до X», _on_do_update запускает обновление и корректный выход.
macos.py: переход на общий maybe_notify_update вместо ad-hoc логики; добавлен пункт меню обновления, переключатель автообновления и безопасный выход через главный поток с принудительным завершением через 3 секунды.
ui/ctk_tray_ui.py: чекбокс «Устанавливать обновления автоматически» в разделе Updates, виден только при is_supported().


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Flowseal/tg-ws-proxy/pull/768 **Author:** [@Overl1te](https://github.com/Overl1te) **Created:** 4/23/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/auto-update` --- ### 📝 Commits (1) - [`c47beab`](https://github.com/Flowseal/tg-ws-proxy/commit/c47beab0649b36f85fd207cebd3ffbca00be28b5) feat: автообновление через отдельные shell-скрипты на Windows, Linux и macOS ### 📊 Changes **8 files changed** (+491 additions, -45 deletions) <details> <summary>View changed files</summary> 📝 `linux.py` (+37 -3) 📝 `macos.py` (+102 -38) 📝 `ui/ctk_tray_ui.py` (+18 -0) 📝 `utils/default_config.py` (+1 -0) 📝 `utils/tray_common.py` (+19 -1) 📝 `utils/update_check.py` (+6 -0) ➕ `utils/updater.py` (+271 -0) 📝 `windows.py` (+37 -3) </details> ### 📄 Description Добавлен механизм самообновления: приложение скачивает и заменяет текущий бинарник через отдельный скрипт PowerShell (.ps1) или Bash (.sh), обходя ограничение на замену запущенного исполняемого файла без отдельного updater-приложения. utils/updater.py (новый): определение платформенных файлов, проверка прав на запись, генерация скриптов для Windows/Linux/macOS; на macOS — монтирование DMG, копирование .app с откатом при ошибке, снятие quarantine, перезапуск. utils/update_check.py: кэширует assets релиза локально, чтобы при часовом rate limit они были доступны для отложенного обновления. utils/default_config.py: auto_update = True по умолчанию. utils/tray_common.py: maybe_notify_update теперь запускает автоустановку при auto_update=True и is_supported(), иначе показывает ручной диалог; добавлены колбэки on_update_available / on_exit. windows.py / linux.py: _on_update_available добавляет пункт трея «Обновить до X», _on_do_update запускает обновление и корректный выход. macos.py: переход на общий maybe_notify_update вместо ad-hoc логики; добавлен пункт меню обновления, переключатель автообновления и безопасный выход через главный поток с принудительным завершением через 3 секунды. ui/ctk_tray_ui.py: чекбокс «Устанавливать обновления автоматически» в разделе Updates, виден только при is_supported(). --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror-bot added the pull-request label 2026-07-19 11:34:21 +03:00
mirror-bot changed title from [PR #768] [CLOSED] feat: автообновление через отдельные shell-скрипты на Windows, Linux и macOS to [PR #768] feat: автообновление через отдельные shell-скрипты на Windows, Linux и macOS 2026-07-20 04:10:16 +03:00
mirror-bot changed title from [PR #768] feat: автообновление через отдельные shell-скрипты на Windows, Linux и macOS to [PR #768] [CLOSED] feat: автообновление через отдельные shell-скрипты на Windows, Linux и macOS 2026-07-20 23:14:39 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/tg-ws-proxy#53