From ca9e1d7f75cdc5fa9834d535d6a96d2640b0d4f6 Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Tue, 27 May 2025 12:18:01 +0600 Subject: [PATCH] added prefix removal --- winehelper | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) diff --git a/winehelper b/winehelper index 8502c57..b6eadef 100755 --- a/winehelper +++ b/winehelper @@ -1215,6 +1215,66 @@ run_autoinstall () { echo } +##### REMOVE PREFIX ##### +remove_prefix() { + local prefix_name="$1" + local prefix_path="$WH_PREFIXES_DIR/$prefix_name" + + if [[ -z "$prefix_name" ]]; then + print_error "Не указано имя префикса для удаления." + echo "Использование: $SCRIPT_NAME remove-prefix [имя_префикса]" + echo "Доступные префиксы:" + ls -1 "$WH_PREFIXES_DIR" + return 1 + fi + + if [[ ! -d "$prefix_path" ]]; then + print_error "Префикс "$prefix_name" не найден." + return 1 + fi + + echo "======================================================" + print_warning "Вы собираетесь удалить префикс "$prefix_name"." + echo "Это приведёт к:" + echo " - Полному удалению всех данных префикса" + echo " - Удалению всех программ, установленных в этом префиксе" + echo " - Удалению связанных ярлыков из меню и рабочего стола" + echo "======================================================" + read -p "Продолжить удаление? (y/N): " answer + + if [[ ! "$answer" =~ ^[YyДд]$ ]]; then + print_info "Удаление префикса отменено." + return 0 + fi + + echo "----------------------------------------------" + print_warning " ВЫ ТОЧНО УВЕРЕНЫ?" + echo "----------------------------------------------" + read -p "Продолжить удаление? (y/N): " answer + + if [[ ! "$answer" =~ ^[YyДд]$ ]]; then + print_info "Удаление префикса отменено." + return 0 + fi + + try_remove_dir "$prefix_path" + if [[ $? -eq 0 ]]; then + print_ok "Префикс "$prefix_name" успешно удален." + + for desktop_file in "$WH_MENU_DIR"/*.desktop; do + if grep -q "$prefix_path" "$desktop_file"; then + desktop_name=$(basename "$desktop_file") + remove_desktop "${desktop_name%.*}" + fi + done + + return 0 + else + print_error "Не удалось удалить префикс "$prefix_name"." + return 1 + fi +} + ##### REMOVE WINEHELPER ##### remove_winehelper () { local answer @@ -1282,6 +1342,7 @@ wh_info () { installed список установленных программ run [программа.exe] запуск программы (отладка) remove удалить WineHelper и все связанные данные + remove-prefix [имя_префикса] удалить префикс и все связанные данные Параметры: --help показать эту справку и выйти @@ -1316,6 +1377,7 @@ case "${1,,}" in installed) shift ; check_installed_programs "$1" ;; run|-r) shift ; run_installed_programs "$1" ;; remove|--remove) remove_winehelper ;; + remove-prefix) shift ; remove_prefix "$@" ;; *) if [[ -f "$1" ]] ; then WIN_FILE_EXEC="$(readlink -f "$1")"