forked from CastroFidel/winehelper
determining the version of Wine used
This commit is contained in:
@@ -2012,12 +2012,40 @@ class WineHelperGUI(QMainWindow):
|
||||
QMessageBox.critical(self, "Ошибка", f"Каталог префикса не найден:\n{prefix_path}")
|
||||
return
|
||||
|
||||
# --- Определение используемой версии Wine ---
|
||||
wine_executable = 'wine' # По умолчанию системный wine
|
||||
last_conf_path = os.path.join(prefix_path, "last.conf")
|
||||
wh_wine_use = None
|
||||
|
||||
if os.path.exists(last_conf_path):
|
||||
try:
|
||||
with open(last_conf_path, 'r', encoding='utf-8') as f:
|
||||
for line in f:
|
||||
if 'WH_WINE_USE=' in line:
|
||||
# Извлекаем значение из строки вида: export WH_WINE_USE="wine_ver"
|
||||
value = line.split('=', 1)[1].strip().strip('"\'')
|
||||
if value:
|
||||
wh_wine_use = value
|
||||
break
|
||||
except Exception as e:
|
||||
print(f"Предупреждение: не удалось прочитать или обработать {last_conf_path}: {e}")
|
||||
|
||||
if wh_wine_use and not wh_wine_use.startswith('system'):
|
||||
local_wine_path = os.path.join(Var.USER_WORK_PATH, "dist", wh_wine_use, "bin", "wine")
|
||||
if os.path.exists(local_wine_path):
|
||||
wine_executable = local_wine_path
|
||||
else:
|
||||
QMessageBox.warning(self, "Предупреждение",
|
||||
f"Локальная версия Wine '{wh_wine_use}' не найдена по пути:\n{local_wine_path}\n\n"
|
||||
"Будет использована системная версия Wine.")
|
||||
# --- Конец определения версии Wine ---
|
||||
|
||||
env = os.environ.copy()
|
||||
env["WINEPREFIX"] = prefix_path
|
||||
|
||||
# 'wine cmd' - особый случай, требует запуска в терминале
|
||||
if util_name == 'cmd':
|
||||
terminal_command = f"env WINEPREFIX='{prefix_path}' wine cmd"
|
||||
terminal_command = f"env WINEPREFIX='{prefix_path}' {shlex.quote(wine_executable)} cmd"
|
||||
try:
|
||||
# x-terminal-emulator - стандартный способ вызова терминала по умолчанию
|
||||
subprocess.Popen(['x-terminal-emulator', '-e', terminal_command])
|
||||
@@ -2028,7 +2056,7 @@ class WineHelperGUI(QMainWindow):
|
||||
return
|
||||
|
||||
# Для остальных утилит
|
||||
command = ['wine', util_name]
|
||||
command = [wine_executable, util_name]
|
||||
try:
|
||||
subprocess.Popen(command, env=env)
|
||||
except Exception as e:
|
||||
|
Reference in New Issue
Block a user