44 lines
1.8 KiB
Python
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)}") |