From fd00b61c71832ba4eadf5a02fcaacfb3b53bc3f2 Mon Sep 17 00:00:00 2001 From: Mikhail Tergoev Date: Thu, 4 Sep 2025 15:52:20 +0300 Subject: [PATCH] added function: find_prefix --- winehelper | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) diff --git a/winehelper b/winehelper index 50b6957..a48f3be 100755 --- a/winehelper +++ b/winehelper @@ -509,6 +509,18 @@ var_ld_library_path_update () { return 0 } +find_prefix () { + # Автоматическое определение префикса, если он не задан + if [[ -z "$WINEPREFIX" ]] && [[ "$1" == "$WH_PREFIXES_DIR"* ]]; then + local extracted_prefix + extracted_prefix="$(echo "$1" | grep -o ".*/prefixes/[^/]*")" + if [[ -d "$extracted_prefix" ]]; then + export WINEPREFIX="$extracted_prefix" + print_info "Префикс автоматически определен: $(basename "$WINEPREFIX")" + fi + fi +} + create_desktop () { local name_desktop exe_file desktop_filename icon_file desktop_path icon_arg desktop_filename_arg name_desktop="$1" @@ -525,7 +537,7 @@ create_desktop () { # Проверяем обязательные аргументы и наличие exe-файла if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then - fatal "Использование: $0 create-desktop \"Имя ярлыка\" \"/путь/к/файлу.exe\" [иконка|auto] [имя_desktop_файла]" + fatal "Использование: $0 desktop \"Имя ярлыка\" \"/путь/к/файлу.exe\" [иконка|auto] [имя_desktop_файла]" elif [[ ! -f "$exe_file" ]] ; then print_warning "Для создания ярлыка не найден исполняемый файл: $exe_file" @@ -545,6 +557,8 @@ create_desktop () { fi fi + find_prefix "$exe_file" + # --- Логика обработки иконки --- local user_icons_dir="$WINEPREFIX/icons" create_new_dir "$user_icons_dir" @@ -2064,17 +2078,8 @@ case "$arg1" in *) if [[ -f "$arg1" ]] ; then WIN_FILE_EXEC="$(readlink -f "$arg1")" - - # Автоматическое определение префикса, если он не задан - if [[ -z "$WINEPREFIX" ]] && [[ "$WIN_FILE_EXEC" == "$WH_PREFIXES_DIR"* ]]; then - extracted_prefix="$(echo "$WIN_FILE_EXEC" | grep -o ".*/prefixes/[^/]*")" - if [[ -d "$extracted_prefix" ]]; then - export WINEPREFIX="$extracted_prefix" - print_info "Префикс автоматически определен: $(basename "$WINEPREFIX")" - fi - fi - - WIN_FILE_NAME="$(basename "$arg1")" + WIN_FILE_NAME="$(basename "$WIN_FILE_EXEC")" + find_prefix "$WIN_FILE_EXEC" case "${WIN_FILE_NAME,,}" in *.exe) prepair_wine ; wine_run $WINE_WIN_START "$WIN_FILE_EXEC" "$@" ;; *.msi) prepair_wine ; wine_run msiexec /i "$WIN_FILE_EXEC" "$@" ;;