Files
oaip-project-app/callbacks/app.py
2025-05-22 21:57:13 +03:00

44 lines
1.8 KiB
Python

import subprocess
from pathlib import Path
from typing import Dict, Any
async def run_app(args: Dict[str, Any]) -> Dict[str, Any]:
"""
Запускает приложение или ярлык по указанному пути.
Args:
args: Dictionary containing 'url' (string) of the website to open.
Returns:
Dictionary with status message and input arguments.
Raises:
OSError: If opening the website fails.
"""
try:
path = args.get("path")
# Проверка существования файла
if not Path(path).exists():
raise OSError(f"Файл не найден: {path}")
# Проверка расширения файла
if not path.lower().endswith(('.exe', '.lnk', '.bat')):
raise OSError(f"Файл {path} может не быть исполняемым файлом или ярлыком")
# Попытка запуска приложения
subprocess.run(['start', '', path], shell=True, check=True)
return {
"message": f"App {path} opened successfully",
"args": args
}
except FileNotFoundError as e:
raise OSError(f"Файл не найден или путь некорректен: {str(e)}")
except subprocess.CalledProcessError as e:
raise OSError(f"Ошибка при запуске приложения: {str(e)}")
except PermissionError as e:
raise OSError(f"Недостаточно прав для запуска: {str(e)}")
except OSError as e:
raise OSError(f"Ошибка операционной системы при запуске: {str(e)}")
except Exception as e:
raise OSError(f"Непредвиденная ошибка: {str(e)}")