added function: find_prefix
This commit is contained in:
		
							
								
								
									
										29
									
								
								winehelper
									
									
									
									
									
								
							
							
						
						
									
										29
									
								
								winehelper
									
									
									
									
									
								
							| @@ -509,6 +509,18 @@ var_ld_library_path_update () { | |||||||
|     return 0 |     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 () { | create_desktop () { | ||||||
|     local name_desktop exe_file desktop_filename icon_file desktop_path icon_arg desktop_filename_arg |     local name_desktop exe_file desktop_filename icon_file desktop_path icon_arg desktop_filename_arg | ||||||
|     name_desktop="$1" |     name_desktop="$1" | ||||||
| @@ -525,7 +537,7 @@ create_desktop () { | |||||||
|  |  | ||||||
|     # Проверяем обязательные аргументы и наличие exe-файла |     # Проверяем обязательные аргументы и наличие exe-файла | ||||||
|     if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then |     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 |     elif [[ ! -f "$exe_file" ]] ; then | ||||||
|         print_warning "Для создания ярлыка не найден исполняемый файл: $exe_file" |         print_warning "Для создания ярлыка не найден исполняемый файл: $exe_file" | ||||||
|  |  | ||||||
| @@ -545,6 +557,8 @@ create_desktop () { | |||||||
|         fi |         fi | ||||||
|     fi |     fi | ||||||
|  |  | ||||||
|  |     find_prefix "$exe_file" | ||||||
|  |  | ||||||
|     # --- Логика обработки иконки --- |     # --- Логика обработки иконки --- | ||||||
|     local user_icons_dir="$WINEPREFIX/icons" |     local user_icons_dir="$WINEPREFIX/icons" | ||||||
|     create_new_dir "$user_icons_dir" |     create_new_dir "$user_icons_dir" | ||||||
| @@ -2064,17 +2078,8 @@ case "$arg1" in | |||||||
|     *) |     *) | ||||||
|         if [[ -f "$arg1" ]] ; then |         if [[ -f "$arg1" ]] ; then | ||||||
|             WIN_FILE_EXEC="$(readlink -f "$arg1")" |             WIN_FILE_EXEC="$(readlink -f "$arg1")" | ||||||
|  |             WIN_FILE_NAME="$(basename "$WIN_FILE_EXEC")" | ||||||
|             # Автоматическое определение префикса, если он не задан |             find_prefix "$WIN_FILE_EXEC" | ||||||
|             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")" |  | ||||||
|             case "${WIN_FILE_NAME,,}" in |             case "${WIN_FILE_NAME,,}" in | ||||||
|                 *.exe) prepair_wine ; wine_run $WINE_WIN_START "$WIN_FILE_EXEC" "$@" ;; |                 *.exe) prepair_wine ; wine_run $WINE_WIN_START "$WIN_FILE_EXEC" "$@" ;; | ||||||
|                 *.msi) prepair_wine ; wine_run msiexec /i "$WIN_FILE_EXEC" "$@" ;; |                 *.msi) prepair_wine ; wine_run msiexec /i "$WIN_FILE_EXEC" "$@" ;; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user