Я использую библиотеку python tufup для управления обновлениями своего приложения. Кажется, мне нужно указать два разных URL-адреса, но я изо всех сил пытаюсь понять из документации/примеров, где/как настраивается каждый из них? или что я здесь неправильно понимаю?
URL-адрес для проверки обновлений: По этому URL-адресу приложение проверяет наличие новых выпусков или обновлений. например: «https://github.com/USER/PROJECT/releases/latest» (doc)
URL-адрес для получения метаданных и целей: Этот URL-адрес где клиент tufup извлекает метаданные и целевые файлы, необходимые для проверки и применения обновлений. Эти файлы включают root.json и другие файлы метаданных. Этот URL-адрес (я предполагаю) должен указывать на защищенный сервер, которым я управляю. например: "https://myCustomURL.com/verification_files"
Вот моя текущая конфигурация:
__version__ = "0.1"
import customtkinter as ctk
import os, shutil, time
from pathlib import Path
from tufup.client import Client
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Define settings (these should ideally be in a separate settings.py file)
APP_NAME = "myAppName"
APP_VERSION = __version__
INSTALL_DIR = Path(os.getenv("INSTALL_DIR", Path.home() / "myAppName"))
METADATA_DIR = INSTALL_DIR / "metadata"
METADATA_BASE_URL = os.getenv("METADATA_BASE_URL", "https://myCustomURL.com/verification_files/metadata")
TARGET_DIR = INSTALL_DIR / "targets"
TARGET_BASE_URL = os.getenv("TARGET_BASE_URL", "https://myCustomURL.com/verification_files/targets")
TRUSTED_ROOT_SRC = Path(os.getenv("TRUSTED_ROOT_SRC", "update_repo/metadata/root.json"))
TRUSTED_ROOT_DST = METADATA_DIR / "root.json"
class App(ctk.CTk):
def __init__(self):
super().__init__()
# Check for updates
self.check_for_updates()
def progress_hook(self, bytes_downloaded: int, bytes_expected: int):
progress_percent = bytes_downloaded / bytes_expected * 100
time.sleep(0.2) # Simulate slow or large download
if progress_percent >= 100:
print("Download complete.")
def check_for_updates(self):
print("Checking for updates...")
try:
# Ensure directories exist
for dir_path in [INSTALL_DIR, METADATA_DIR, TARGET_DIR]:
dir_path.mkdir(exist_ok=True, parents=True)
# Ensure trusted root metadata exists
if not TRUSTED_ROOT_DST.exists():
if not TRUSTED_ROOT_SRC.exists():
raise FileNotFoundError(f"Trusted root metadata file not found: {TRUSTED_ROOT_SRC}")
shutil.copy(src=TRUSTED_ROOT_SRC, dst=TRUSTED_ROOT_DST)
print('Trusted root metadata copied to cache.')
# Create update client
client = Client(
app_name=APP_NAME,
app_install_dir=INSTALL_DIR,
current_version=APP_VERSION,
metadata_dir=METADATA_DIR,
metadata_base_url=METADATA_BASE_URL,
target_dir=TARGET_DIR,
target_base_url=TARGET_BASE_URL,
refresh_required=False,
)
# Perform update
new_update = client.check_for_updates(pre=None)
if new_update:
# Apply the update
client.download_and_apply_update(
skip_confirmation=True,
progress_hook=self.progress_hook,
purge_dst_dir=False,
exclude_from_purge=None,
log_file_name='install.log',
)
print("Update installed. Please restart the application.")
else:
print("You are up to date!")
except Exception as e:
print(f"Update check failed: {e}")
Подробнее здесь: https://stackoverflow.com/questions/792 ... ta-targets
Как настроить URL-адреса tufup для новых обновлений и получения метаданных/целей? ⇐ Python
Программы на Python
1733220305
Anonymous
Я использую библиотеку python tufup для управления обновлениями своего приложения. Кажется, мне нужно указать два разных URL-адреса, но я изо всех сил пытаюсь понять из документации/примеров, где/как настраивается каждый из них? или что я здесь неправильно понимаю?
[b]URL-адрес для проверки обновлений:[/b] По этому URL-адресу приложение проверяет наличие новых выпусков или обновлений. например: «https://github.com/USER/PROJECT/releases/latest» (doc)
[b]URL-адрес для получения метаданных и целей:[/b] Этот URL-адрес где клиент tufup извлекает метаданные и целевые файлы, необходимые для проверки и применения обновлений. Эти файлы включают root.json и другие файлы метаданных. Этот URL-адрес (я предполагаю) должен указывать на защищенный сервер, которым я управляю. например: "https://myCustomURL.com/verification_files"
Вот моя текущая конфигурация:
__version__ = "0.1"
import customtkinter as ctk
import os, shutil, time
from pathlib import Path
from tufup.client import Client
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# Define settings (these should ideally be in a separate settings.py file)
APP_NAME = "myAppName"
APP_VERSION = __version__
INSTALL_DIR = Path(os.getenv("INSTALL_DIR", Path.home() / "myAppName"))
METADATA_DIR = INSTALL_DIR / "metadata"
METADATA_BASE_URL = os.getenv("METADATA_BASE_URL", "https://myCustomURL.com/verification_files/metadata")
TARGET_DIR = INSTALL_DIR / "targets"
TARGET_BASE_URL = os.getenv("TARGET_BASE_URL", "https://myCustomURL.com/verification_files/targets")
TRUSTED_ROOT_SRC = Path(os.getenv("TRUSTED_ROOT_SRC", "update_repo/metadata/root.json"))
TRUSTED_ROOT_DST = METADATA_DIR / "root.json"
class App(ctk.CTk):
def __init__(self):
super().__init__()
# Check for updates
self.check_for_updates()
def progress_hook(self, bytes_downloaded: int, bytes_expected: int):
progress_percent = bytes_downloaded / bytes_expected * 100
time.sleep(0.2) # Simulate slow or large download
if progress_percent >= 100:
print("Download complete.")
def check_for_updates(self):
print("Checking for updates...")
try:
# Ensure directories exist
for dir_path in [INSTALL_DIR, METADATA_DIR, TARGET_DIR]:
dir_path.mkdir(exist_ok=True, parents=True)
# Ensure trusted root metadata exists
if not TRUSTED_ROOT_DST.exists():
if not TRUSTED_ROOT_SRC.exists():
raise FileNotFoundError(f"Trusted root metadata file not found: {TRUSTED_ROOT_SRC}")
shutil.copy(src=TRUSTED_ROOT_SRC, dst=TRUSTED_ROOT_DST)
print('Trusted root metadata copied to cache.')
# Create update client
client = Client(
app_name=APP_NAME,
app_install_dir=INSTALL_DIR,
current_version=APP_VERSION,
metadata_dir=METADATA_DIR,
metadata_base_url=METADATA_BASE_URL,
target_dir=TARGET_DIR,
target_base_url=TARGET_BASE_URL,
refresh_required=False,
)
# Perform update
new_update = client.check_for_updates(pre=None)
if new_update:
# Apply the update
client.download_and_apply_update(
skip_confirmation=True,
progress_hook=self.progress_hook,
purge_dst_dir=False,
exclude_from_purge=None,
log_file_name='install.log',
)
print("Update installed. Please restart the application.")
else:
print("You are up to date!")
except Exception as e:
print(f"Update check failed: {e}")
Подробнее здесь: [url]https://stackoverflow.com/questions/79245689/how-to-configure-tufup-urls-for-new-updates-and-fetching-metadata-targets[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия