Как настроить URL-адреса tufup для новых обновлений и получения метаданных/целей?Python

Программы на Python
Ответить
Anonymous
 Как настроить URL-адреса tufup для новых обновлений и получения метаданных/целей?

Сообщение Anonymous »

Я использую библиотеку 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»