diff --git a/winehelper b/winehelper index 4b71896..e16c9ab 100755 --- a/winehelper +++ b/winehelper @@ -1268,9 +1268,6 @@ remove_prefix() { then print_error "Не указано имя префикса для удаления!" fi check_prefix_var - if [[ ! -d "$WINEPREFIX" ]] - then fatal "Префикса \"$PREFIX_NAME\" не существует!" - fi if [[ ! $2 =~ --force|-y ]] ; then echo "======================================================" @@ -1287,14 +1284,20 @@ remove_prefix() { return 0 fi fi + try_remove_dir "$WINEPREFIX" - if try_remove_dir "$WINEPREFIX" ; then + if [[ $? -eq 0 ]]; then print_ok "Префикс "$PREFIX_NAME" успешно удален." + # Ищем и удаляем все ярлыки, связанные с этим префиксом + print_info "Поиск и удаление связанных ярлыков..." for desktop_file in "$WH_MENU_DIR"/*.desktop; do - if grep -q "$WINEPREFIX" "$desktop_file"; then - desktop_name=$(basename "$desktop_file") - remove_desktop "${desktop_name%.*}" + if [[ -f "$desktop_file" ]] && grep -q "$WINEPREFIX" "$desktop_file"; then + # Извлекаем отображаемое имя (значение ключа Name=) + display_name=$(grep -m 1 -E "^Name=" "$desktop_file" | cut -d'=' -f2-) + if [[ -n "$display_name" ]]; then + remove_desktop "$display_name" + fi fi done