Compare commits
3 Commits
0.4.4
...
remove-des
Author | SHA1 | Date | |
---|---|---|---|
63410d3f71 | |||
00bd907416 | |||
d118e320a7 |
@ -1,5 +1,8 @@
|
|||||||
История изменений:
|
История изменений:
|
||||||
|
|
||||||
|
0.4.5:
|
||||||
|
* скорректирована проверка синтаксиса скриптов
|
||||||
|
|
||||||
0.4.4:
|
0.4.4:
|
||||||
* добавлены/обновлены скрипты установки:
|
* добавлены/обновлены скрипты установки:
|
||||||
winehelper install t-flex-cad17 - "T-FLEX CAD 17"
|
winehelper install t-flex-cad17 - "T-FLEX CAD 17"
|
||||||
|
82
winehelper
82
winehelper
@ -23,7 +23,7 @@ else
|
|||||||
for self_check_script in "$RUN_SCRIPT" \
|
for self_check_script in "$RUN_SCRIPT" \
|
||||||
"$DATA_PATH/dependencies.sh" "$DATA_PATH/autoinstall"/* \
|
"$DATA_PATH/dependencies.sh" "$DATA_PATH/autoinstall"/* \
|
||||||
"$DATA_PATH/manualinstall"/* "$DATA_PATH/database"/*
|
"$DATA_PATH/manualinstall"/* "$DATA_PATH/database"/*
|
||||||
do /usr/bin/bash -n "$self_check_script" || exit 1
|
do /usr/bin/env bash -n "$self_check_script" || exit 1
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
@ -494,23 +494,47 @@ EOF
|
|||||||
}
|
}
|
||||||
|
|
||||||
remove_desktop () {
|
remove_desktop () {
|
||||||
if [[ -n "$1" ]] ; then
|
local desktop_display_name="$*" # Объединяем все аргументы в одну строку
|
||||||
try_remove_file "$USER_WORK_PATH/$1.desktop"
|
local desktop_filename=""
|
||||||
try_remove_file "$WH_MENU_DIR/$1.desktop"
|
|
||||||
try_remove_file "$HOME/.local/share/applications/$1.desktop"
|
if [[ -n "$desktop_display_name" ]] ; then
|
||||||
try_remove_file "$(xdg-user-dir DESKTOP)/$1.desktop"
|
# Ищем файл ярлыка по его отображаемому имени (полю Name=)
|
||||||
|
for file in "$WH_MENU_DIR"/*.desktop; do
|
||||||
|
if [[ -f "$file" ]] && grep -q -E "^Name=${desktop_display_name}$" "$file"; then
|
||||||
|
desktop_filename=$(basename "$file" .desktop)
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ -z "$desktop_filename" ]]; then
|
||||||
|
print_error "Ярлык с именем \"$desktop_display_name\" не найден."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_info "Найден ярлык: $desktop_filename.desktop. Удаление..."
|
||||||
|
# Используем найденное имя файла для удаления из всех мест
|
||||||
|
try_remove_file "$USER_WORK_PATH/$desktop_filename.desktop"
|
||||||
|
try_remove_file "$WH_MENU_DIR/$desktop_filename.desktop"
|
||||||
|
try_remove_file "$HOME/.local/share/applications/$desktop_filename.desktop"
|
||||||
|
try_remove_file "$(xdg-user-dir DESKTOP)/$desktop_filename.desktop"
|
||||||
|
else
|
||||||
|
print_error "Не указано имя ярлыка для удаления."
|
||||||
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Удаляем категорию если она пуста
|
# Удаляем категорию если она пуста
|
||||||
if [[ -d "$WH_MENU_DIR" ]] && [[ -z "$(ls -A "$WH_MENU_DIR")" ]]; then
|
if [[ -d "$WH_MENU_DIR" ]] && [[ -z "$(ls -A "$WH_MENU_DIR")" ]]; then
|
||||||
|
print_info "Категория WineHelper пуста, удаляем ее из меню."
|
||||||
try_remove_dir "$WH_MENU_DIR"
|
try_remove_dir "$WH_MENU_DIR"
|
||||||
try_remove_file "$WH_MENU_CATEGORY"
|
try_remove_file "$WH_MENU_CATEGORY"
|
||||||
try_remove_file "$WH_MENU_CONFIG"
|
try_remove_file "$WH_MENU_CONFIG"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Обновляем кэш desktop файлов
|
# Обновляем кэш desktop файлов
|
||||||
|
print_info "Обновление базы данных приложений..."
|
||||||
update-desktop-database "$HOME/.local/share/applications"
|
update-desktop-database "$HOME/.local/share/applications"
|
||||||
|
|
||||||
|
print_ok "Удаление ярлыка \"$desktop_display_name\" завершено."
|
||||||
}
|
}
|
||||||
|
|
||||||
check_installed_programs () {
|
check_installed_programs () {
|
||||||
@ -1264,19 +1288,22 @@ remove_prefix() {
|
|||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if try_remove_dir "$WINEPREFIX" ; then
|
if try_remove_dir "$WINEPREFIX"; then
|
||||||
print_ok "Префикс "$PREFIX_NAME" успешно удален."
|
print_ok "Префикс \"$PREFIX_NAME\" успешно удален."
|
||||||
|
|
||||||
|
# Ищем и удаляем все ярлыки, связанные с этим префиксом
|
||||||
for desktop_file in "$WH_MENU_DIR"/*.desktop; do
|
for desktop_file in "$WH_MENU_DIR"/*.desktop; do
|
||||||
if grep -q "$WINEPREFIX" "$desktop_file"; then
|
if grep -q "$WINEPREFIX" "$desktop_file"; then
|
||||||
|
# Получаем имя файла ярлыка
|
||||||
desktop_name=$(basename "$desktop_file")
|
desktop_name=$(basename "$desktop_file")
|
||||||
|
# Удаляем ярлык без расширения
|
||||||
remove_desktop "${desktop_name%.*}"
|
remove_desktop "${desktop_name%.*}"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
print_error "Не удалось удалить префикс "$PREFIX_NAME"."
|
print_error "Не удалось удалить префикс \"$PREFIX_NAME\"."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -1495,6 +1522,39 @@ restore_prefix() {
|
|||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
|
restore_shortcuts() {
|
||||||
|
export WINEPREFIX="$1"
|
||||||
|
check_prefix_var
|
||||||
|
|
||||||
|
if [[ ! -f "$WINEPREFIX/desktop.list" ]]; then
|
||||||
|
fatal "Файл desktop.list не найден в префиксе $PREFIX_NAME. Нечего восстанавливать."
|
||||||
|
fi
|
||||||
|
|
||||||
|
print_info "Восстановление ярлыков для префикса $PREFIX_NAME..."
|
||||||
|
export RESTORE_FROM_BACKUP="1" # Используем флаг, чтобы create_desktop не обновлял desktop.list
|
||||||
|
|
||||||
|
while IFS= read -r line; do
|
||||||
|
# Пропускаем пустые строки
|
||||||
|
[[ -z "$line" ]] && continue
|
||||||
|
|
||||||
|
local name_desktop
|
||||||
|
local exe_path
|
||||||
|
local icon_name
|
||||||
|
name_desktop=$(echo "$line" | cut -d'=' -f1)
|
||||||
|
exe_path=$(echo "$line" | cut -d'=' -f2)
|
||||||
|
icon_name=$(echo "$line" | cut -d'=' -f3)
|
||||||
|
|
||||||
|
local full_exe_path="$WINEPREFIX${exe_path}"
|
||||||
|
local full_icon_path="$WINEPREFIX/icons/$icon_name"
|
||||||
|
|
||||||
|
print_info "Восстановление ярлыка для '$name_desktop'"
|
||||||
|
create_desktop "$name_desktop" "$full_exe_path" "$full_icon_path"
|
||||||
|
done < "$WINEPREFIX/desktop.list"
|
||||||
|
|
||||||
|
unset RESTORE_FROM_BACKUP
|
||||||
|
print_ok "Восстановление ярлыков для префикса $PREFIX_NAME завершено."
|
||||||
|
}
|
||||||
|
|
||||||
wh_info () {
|
wh_info () {
|
||||||
echo "Использование: $SCRIPT_NAME [команда]
|
echo "Использование: $SCRIPT_NAME [команда]
|
||||||
|
|
||||||
@ -1508,6 +1568,8 @@ wh_info () {
|
|||||||
remove-all удалить WineHelper и все связанные данные
|
remove-all удалить WineHelper и все связанные данные
|
||||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||||
backup-prefix [имя_префикса] создать резерную копию префикса
|
backup-prefix [имя_префикса] создать резерную копию префикса
|
||||||
|
remove-desktop [имя_ярлыка] удалить ярлык по имени (без .desktop)
|
||||||
|
restore-shortcuts [имя_префикса] восстановить все ярлыки для префикса
|
||||||
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||||
|
|
||||||
Параметры:
|
Параметры:
|
||||||
@ -1551,7 +1613,9 @@ case "$arg1" in
|
|||||||
run|-r) run_installed_programs "$1" ;;
|
run|-r) run_installed_programs "$1" ;;
|
||||||
backup-prefix) backup_prefix "$@" ;;
|
backup-prefix) backup_prefix "$@" ;;
|
||||||
restore-prefix) restore_prefix "$@" ;;
|
restore-prefix) restore_prefix "$@" ;;
|
||||||
|
restore-shortcuts) restore_shortcuts "$@" ;;
|
||||||
remove-all) remove_winehelper "$@" ;;
|
remove-all) remove_winehelper "$@" ;;
|
||||||
|
remove-desktop) remove_desktop "$@" ;;
|
||||||
remove-prefix) remove_prefix "$@" ;;
|
remove-prefix) remove_prefix "$@" ;;
|
||||||
*)
|
*)
|
||||||
if [[ -f "$arg1" ]] ; then
|
if [[ -f "$arg1" ]] ; then
|
||||||
|
Reference in New Issue
Block a user