forked from CastroFidel/winehelper
Compare commits
7 Commits
backup_and
...
0.4.1
Author | SHA1 | Date | |
---|---|---|---|
8ba7c99b45 | |||
37f4f26495 | |||
499260b5dc | |||
3033f6022a | |||
f7d189fa53 | |||
53fc21806e | |||
5d3fe940d2 |
@ -1,5 +1,12 @@
|
|||||||
История изменений:
|
История изменений:
|
||||||
|
|
||||||
|
0.4.1:
|
||||||
|
* добавлена возможность создания резервной копии префикса:
|
||||||
|
winehelper backup-prefix [имя_префикса]
|
||||||
|
* добавлена возможность восстановления резервной копии префикса:
|
||||||
|
winehelper restore-prefix "путь/до/резервной_копии.whpack"
|
||||||
|
* создание и восстановление резервной копии префикса включает в себя требуемую версиею WINE и информацию для создания .desktop файлов (ярлыков), что дает возможность переноса префикса на ПК без доступа к интернету
|
||||||
|
|
||||||
0.4.0:
|
0.4.0:
|
||||||
* добавлена автоматическая установка и настройка wine-cpcsp_proxy при
|
* добавлена автоматическая установка и настройка wine-cpcsp_proxy при
|
||||||
использовании переменной WH_USE_CPCSP_PROXY=1
|
использовании переменной WH_USE_CPCSP_PROXY=1
|
||||||
|
@ -19,11 +19,11 @@ apt-repo | grep -q "x86_64-i586" || fatal "Репозиторий x86_64-i586 н
|
|||||||
windows приложения. Подробнее по ссылке: https://www.altlinux.org/Biarch"
|
windows приложения. Подробнее по ссылке: https://www.altlinux.org/Biarch"
|
||||||
|
|
||||||
##### INSTALL DEPENDENCIES #####
|
##### INSTALL DEPENDENCIES #####
|
||||||
|
# fonts-ttf-ms
|
||||||
|
|
||||||
apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
||||||
libOSMesa,libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\
|
libOSMesa,libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\
|
||||||
libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\
|
libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\
|
||||||
libvulkan1,libcups} || fatal "Не удалось установить зависимости."
|
libvulkan1,libcups} || fatal "Не удалось установить зависимости."
|
||||||
|
|
||||||
apt-get install {i586-,}wine
|
apt-get install {i586-,}wine
|
||||||
|
|
||||||
# yad zenity
|
|
||||||
|
234
winehelper
234
winehelper
@ -131,6 +131,8 @@ su_run () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
##### CHECK DEPENDENCIES #####
|
##### CHECK DEPENDENCIES #####
|
||||||
|
# fonts-ttf-ms
|
||||||
|
|
||||||
if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\
|
if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\
|
||||||
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\
|
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\
|
||||||
libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null
|
libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null
|
||||||
@ -361,7 +363,13 @@ create_desktop () {
|
|||||||
local name_desktop="$1"
|
local name_desktop="$1"
|
||||||
local exe_file="$2"
|
local exe_file="$2"
|
||||||
local desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|")"
|
local desktop_filename="$(basename "$exe_file" .exe | sed "s| |_|")"
|
||||||
local icon_file="$WH_IMAGE_PATH/$3.png"
|
local icon_file
|
||||||
|
if [[ "$RESTORE_FROM_BACKUP" == "1" ]] && [[ -f "$3" ]]
|
||||||
|
then icon_file="$3"
|
||||||
|
elif [[ -f "$WH_IMAGE_PATH/$3.png" ]]
|
||||||
|
then icon_file="$WH_IMAGE_PATH/$3.png"
|
||||||
|
else icon_file="wine"
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then
|
if [[ -z "$name_desktop" ]] || [[ -z "$exe_file" ]] ; then
|
||||||
fatal "Used: $SCRIPT_NAME --desktop \"desktop_name\" \"path_to_exe\" \"name_png_from_image\""
|
fatal "Used: $SCRIPT_NAME --desktop \"desktop_name\" \"path_to_exe\" \"name_png_from_image\""
|
||||||
@ -385,7 +393,6 @@ create_desktop () {
|
|||||||
|
|
||||||
# создаем .desktop файл
|
# создаем .desktop файл
|
||||||
create_new_dir "$WH_MENU_DIR"
|
create_new_dir "$WH_MENU_DIR"
|
||||||
[[ ! -f "$icon_file" ]] && icon_file=wine
|
|
||||||
{
|
{
|
||||||
echo "[Desktop Entry]"
|
echo "[Desktop Entry]"
|
||||||
echo "Name=$name_desktop"
|
echo "Name=$name_desktop"
|
||||||
@ -400,7 +407,7 @@ create_desktop () {
|
|||||||
|
|
||||||
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/"
|
cp -f "$USER_WORK_PATH/$desktop_filename.desktop" "$WH_MENU_DIR/"
|
||||||
|
|
||||||
if [[ "$RESTORE_FROM_BACKUP" == "1" ]]; then
|
if [[ "$RESTORE_FROM_BACKUP" == "1" ]] ; then
|
||||||
print_info "Пропускаем обновление desktop.list (режим восстановления из бэкапа)"
|
print_info "Пропускаем обновление desktop.list (режим восстановления из бэкапа)"
|
||||||
else
|
else
|
||||||
# добавляем информацию о приложении в "$WINEPREFIX/desktop.list"
|
# добавляем информацию о приложении в "$WINEPREFIX/desktop.list"
|
||||||
@ -842,7 +849,7 @@ check_prefix_var () {
|
|||||||
local prefixes=()
|
local prefixes=()
|
||||||
local count=1
|
local count=1
|
||||||
print_info "Доступные префиксы WineHelper:"
|
print_info "Доступные префиксы WineHelper:"
|
||||||
for prefix in "$WH_PREFIXES_DIR"/*; do
|
for prefix in "$WH_PREFIXES_DIR"/* ; do
|
||||||
if [[ -d "$prefix" ]]; then
|
if [[ -d "$prefix" ]]; then
|
||||||
prefixes+=("$prefix")
|
prefixes+=("$prefix")
|
||||||
echo "$count. $(basename "$prefix")"
|
echo "$count. $(basename "$prefix")"
|
||||||
@ -850,26 +857,25 @@ check_prefix_var () {
|
|||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
||||||
if [[ ${#prefixes[@]} -eq 0 ]]; then
|
[[ ${#prefixes[@]} -eq 0 ]] && fatal "Не найдено ни одного префикса!"
|
||||||
fatal "Не найдено ни одного префикса!"
|
|
||||||
fi
|
|
||||||
|
|
||||||
local max_choice=${#prefixes[@]}
|
local max_choice=${#prefixes[@]}
|
||||||
read -p "Выберите префикс (1-$max_choice): " choice
|
read -p "Выберите префикс (1-$max_choice): " choice
|
||||||
|
|
||||||
if [[ "$choice" -ge 1 && "$choice" -le "$max_choice" ]]; then
|
if [[ "$choice" -ge 1 && "$choice" -le "$max_choice" ]] ; then
|
||||||
export WINEPREFIX="${prefixes[$choice-1]}"
|
export WINEPREFIX="${prefixes[$choice-1]}"
|
||||||
else
|
else
|
||||||
fatal "Неверный выбор."
|
fatal "Неверный выбор."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_info "Выбран префикс: $WINEPREFIX"
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if echo "$WINEPREFIX" | grep -qv '/' ; then
|
if echo "$WINEPREFIX" | grep -qv '/' ; then
|
||||||
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
export PREFIX_NAME="$(basename "$WINEPREFIX")"
|
||||||
|
print_info "Выбран префикс: $PREFIX_NAME"
|
||||||
|
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1212,25 +1218,18 @@ run_autoinstall () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
remove_prefix() {
|
remove_prefix() {
|
||||||
local prefix_name="$1"
|
export WINEPREFIX="$1"
|
||||||
local prefix_path="$WH_PREFIXES_DIR/$prefix_name"
|
if [[ -z "$WINEPREFIX" ]]
|
||||||
|
then print_error "Не указано имя префикса для удаления!"
|
||||||
if [[ -z "$prefix_name" ]]; then
|
|
||||||
print_error "Не указано имя префикса для удаления."
|
|
||||||
echo "Использование: $SCRIPT_NAME remove-prefix [имя_префикса]"
|
|
||||||
echo "Доступные префиксы:"
|
|
||||||
ls -1 "$WH_PREFIXES_DIR"
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
check_prefix_var
|
||||||
if [[ ! -d "$prefix_path" ]]; then
|
if [[ ! -d "$WINEPREFIX" ]]
|
||||||
print_error "Префикс "$prefix_name" не найден."
|
then fatal "Префикса \"$PREFIX_NAME\" не существует!"
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ ! $2 =~ --force|-y ]] ; then
|
if [[ ! $2 =~ --force|-y ]] ; then
|
||||||
echo "======================================================"
|
echo "======================================================"
|
||||||
print_warning "Вы собираетесь удалить префикс "$prefix_name"."
|
print_warning "Вы собираетесь удалить префикс "$PREFIX_NAME"."
|
||||||
echo "Это приведёт к:"
|
echo "Это приведёт к:"
|
||||||
echo " - Полному удалению всех данных префикса"
|
echo " - Полному удалению всех данных префикса"
|
||||||
echo " - Удалению всех программ, установленных в этом префиксе"
|
echo " - Удалению всех программ, установленных в этом префиксе"
|
||||||
@ -1243,13 +1242,12 @@ remove_prefix() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
try_remove_dir "$prefix_path"
|
|
||||||
|
|
||||||
if [[ $? -eq 0 ]]; 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 "$prefix_path" "$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
|
||||||
@ -1257,7 +1255,7 @@ remove_prefix() {
|
|||||||
|
|
||||||
return 0
|
return 0
|
||||||
else
|
else
|
||||||
print_error "Не удалось удалить префикс "$prefix_name"."
|
print_error "Не удалось удалить префикс "$PREFIX_NAME"."
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
@ -1319,33 +1317,21 @@ remove_winehelper () {
|
|||||||
}
|
}
|
||||||
|
|
||||||
backup_prefix() {
|
backup_prefix() {
|
||||||
local prefix_name="$1"
|
export WINEPREFIX="$1"
|
||||||
local prefix_path="$WH_PREFIXES_DIR/$prefix_name"
|
check_prefix_var
|
||||||
|
|
||||||
local backup_base_dir="$(xdg-user-dir DESKTOP)"
|
local backup_base_dir="$(xdg-user-dir DESKTOP)"
|
||||||
local backup_archive_name="backup_${prefix_name}_$(date +%Y.%m.%d).whpack"
|
local backup_archive_name="backup_${PREFIX_NAME}_$(date +%Y.%m.%d).whpack"
|
||||||
local backup_dest_path="$backup_base_dir/$backup_archive_name"
|
local backup_dest_path="$backup_base_dir/$backup_archive_name"
|
||||||
local temp_backup_dir="$WH_TMP_DIR/backup_${prefix_name}_$(date +%Y.%m.%d)"
|
local temp_backup_dir="$WH_TMP_DIR/backup_${PREFIX_NAME}_$(date +%Y.%m.%d)"
|
||||||
|
|
||||||
if [[ -z "$prefix_name" ]]; then
|
print_info "Начало резервного копирования префикса: $PREFIX_NAME"
|
||||||
print_error "Не указано имя префикса для резервного копирования."
|
|
||||||
echo "Использование: $SCRIPT_NAME backup-prefix [имя_префикса]"
|
|
||||||
echo "Доступные префиксы:"
|
|
||||||
ls -1 "$WH_PREFIXES_DIR"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
if [[ ! -d "$prefix_path" ]]; then
|
|
||||||
print_error "Префикс \"$prefix_name\" не найден по пути $prefix_path."
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
|
|
||||||
print_info "Начало резервного копирования префикса: $prefix_name"
|
|
||||||
create_new_dir "$temp_backup_dir"
|
create_new_dir "$temp_backup_dir"
|
||||||
create_new_dir "$temp_backup_dir/prefixes/"
|
create_new_dir "$temp_backup_dir/prefixes/"
|
||||||
create_new_dir "$temp_backup_dir/dist/"
|
create_new_dir "$temp_backup_dir/dist/"
|
||||||
|
|
||||||
print_info "Подготовка префикса к упаковке..."
|
print_info "Подготовка префикса к упаковке..."
|
||||||
if cp -a "$prefix_path" "$temp_backup_dir/prefixes/$prefix_name"; then
|
if cp -a "$WINEPREFIX" "$temp_backup_dir/prefixes/$PREFIX_NAME" ; then
|
||||||
print_ok "Директория префикса подготовлена."
|
print_ok "Директория префикса подготовлена."
|
||||||
else
|
else
|
||||||
print_error "Не удалось подготовить директорию префикса."
|
print_error "Не удалось подготовить директорию префикса."
|
||||||
@ -1353,110 +1339,110 @@ backup_prefix() {
|
|||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -f "$prefix_path/last.conf" ]]; then
|
if [[ -f "$WINEPREFIX/last.conf" ]]; then
|
||||||
local wine_version_to_backup
|
source "$WINEPREFIX/last.conf"
|
||||||
wine_version_to_backup=$( (source "$prefix_path/last.conf" && echo "$WH_WINE_USE") )
|
|
||||||
|
|
||||||
if [[ -n "$wine_version_to_backup" && "$wine_version_to_backup" != system* && -d "$WH_DIST_DIR/$wine_version_to_backup" ]]; then
|
if [[ -n "$WH_WINE_USE" ]] \
|
||||||
print_info "Копирование используемой версии Wine: $wine_version_to_backup..."
|
&& [[ $WH_WINE_USE != system* ]] \
|
||||||
|
&& [[ -d "$WH_DIST_DIR/$WH_WINE_USE" ]]
|
||||||
|
then
|
||||||
|
print_info "Копирование используемой версии WINE: $WH_WINE_USE"
|
||||||
|
|
||||||
if ! cp -a "$WH_DIST_DIR/$wine_version_to_backup" "$temp_backup_dir/dist/"; then
|
if cp -a "$WH_DIST_DIR/$WH_WINE_USE" "$temp_backup_dir/dist/"
|
||||||
print_error "Ошибка: не удалось скопировать версию Wine."
|
then print_ok "WINE скопирован."
|
||||||
exit 1
|
else fatal "Не удалось скопировать WINE."
|
||||||
fi
|
fi
|
||||||
print_ok "Версия Wine скопирована."
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_info "Создание squashfs архива..."
|
print_info "Создание squashfs архива..."
|
||||||
if command -v mksquashfs >/dev/null; then
|
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then
|
||||||
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd; then
|
echo -e "\n# PREFIX_NAME=$PREFIX_NAME" >> "$backup_dest_path"
|
||||||
print_ok "Архив успешно создан: $backup_dest_path"
|
print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path"
|
||||||
else
|
else
|
||||||
print_error "Не удалось создать архив."
|
print_error "Не удалось создать архив префикса $PREFIX_NAME."
|
||||||
try_remove_dir "$temp_backup_dir"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
print_error "mksquashfs не установлен. Необходимо установить squashfs-tools."
|
|
||||||
try_remove_dir "$temp_backup_dir"
|
try_remove_dir "$temp_backup_dir"
|
||||||
return 1
|
return 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
try_remove_dir "$temp_backup_dir"
|
try_remove_dir "$temp_backup_dir"
|
||||||
print_info "Резервное копирование завершено."
|
print_info "Создание резервной копии префикса завершено."
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
restore_prefix() {
|
restore_prefix() {
|
||||||
local backup_archive_path="$1"
|
local backup_archive_path="$1"
|
||||||
local temp_extract_dir
|
local temp_extract_dir prefix_name
|
||||||
|
|
||||||
if [[ -z "$backup_archive_path" ]]; then
|
|
||||||
|
if [[ -z "$backup_archive_path" ]] ; then
|
||||||
read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path
|
read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path
|
||||||
if [[ -z "$backup_archive_path" ]]; then
|
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
||||||
print_error "Путь к архиву не указан. Восстановление отменено."
|
if [[ -z "$backup_archive_path" ]] ; then
|
||||||
return 1
|
fatal "Путь к архиву не указан. Восстановление отменено."
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
if [[ ! -f "$backup_archive_path" ]]
|
||||||
if [[ ! -f "$backup_archive_path" ]]; then
|
then fatal "Файл архива не найден: $backup_archive_path"
|
||||||
print_error "Файл архива не найден: $backup_archive_path"
|
|
||||||
return 1
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
print_info "Восстановление из резервной копии: $backup_archive_path"
|
print_info "Восстановление из резервной копии: $backup_archive_path"
|
||||||
|
|
||||||
|
prefix_name="$(tail -n1 "$backup_archive_path" | sed -e 's/.*PREFIX_NAME=//')"
|
||||||
|
|
||||||
|
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||||
|
fatal "Префикс $prefix_name уже существует!
|
||||||
|
Удалите его, если действительно желаете восстановить префикс заново.
|
||||||
|
Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
||||||
|
fi
|
||||||
|
|
||||||
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)"
|
temp_extract_dir="$WH_TMP_DIR/restore_$(basename "$backup_archive_path" .whpack)"
|
||||||
create_new_dir "$temp_extract_dir"
|
create_new_dir "$temp_extract_dir"
|
||||||
|
|
||||||
print_info "Распаковка архива..."
|
print_info "Распаковка архива..."
|
||||||
if ! unsquashfs -f -d "$temp_extract_dir" "$backup_archive_path"; then
|
if unsquashfs -f -d "$temp_extract_dir" "$backup_archive_path" ; then
|
||||||
print_error "Не удалось распаковать архив."
|
|
||||||
try_remove_dir "$temp_extract_dir"
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
print_ok "Архив успешно распакован."
|
print_ok "Архив успешно распакован."
|
||||||
|
|
||||||
if [[ -d "$temp_extract_dir/dist" ]]; then
|
|
||||||
print_info "Восстановление версий Wine..."
|
|
||||||
|
|
||||||
# TODO: Нужно ли создавать директортю create_new_dir "$WH_DIST_DIR" и перезаписывать/удалять сушествующие файлы в /dist
|
|
||||||
|
|
||||||
if ! mv -n "$temp_extract_dir/dist"/* "$WH_DIST_DIR/"; then
|
|
||||||
print_warning "Не удалось восстановить версии Wine."
|
|
||||||
else
|
else
|
||||||
print_ok "Версии Wine восстановлены."
|
try_remove_dir "$temp_extract_dir"
|
||||||
fi
|
fatal "Не удалось распаковать архив."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ -d "$temp_extract_dir/prefixes" ]]; then
|
if [[ -d "$temp_extract_dir/prefixes" ]] ; then
|
||||||
for prefix_dir in "$temp_extract_dir"/prefixes/*; do
|
local prefix_name
|
||||||
local prefix_name=$(basename "$prefix_dir")
|
prefix_name="$(ls -1 "$temp_extract_dir/prefixes")"
|
||||||
if [[ -d "$prefix_dir" ]]; then
|
local prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
||||||
|
|
||||||
print_info "Восстановление префикса: $prefix_name"
|
print_info "Восстановление префикса: $prefix_name"
|
||||||
|
|
||||||
# TODO: Нужно ли удалять, перезаписывать или создавать новый префикс try_remove_dir "$WH_PREFIXES_DIR/$prefix_name"
|
if [[ -d "$temp_extract_dir/dist" ]] ; then
|
||||||
|
print_info "Восстановление версий WINE"
|
||||||
|
if cp -fr "$temp_extract_dir/dist"/* "$WH_DIST_DIR/"
|
||||||
|
then print_ok "Версии WINE восстановлены."
|
||||||
|
else print_warning "Не удалось восстановить версии WINE."
|
||||||
|
fi
|
||||||
|
try_remove_dir "$temp_extract_dir/dist"
|
||||||
|
fi
|
||||||
|
|
||||||
if ! mv "$prefix_dir" "$WH_PREFIXES_DIR/"; then
|
if ! mv "$prefix_dir" "$WH_PREFIXES_DIR/" ; then
|
||||||
print_error "Не удалось восстановить префикс $prefix_name."
|
try_remove_dir "$temp_extract_dir"
|
||||||
|
fatal "Не удалось восстановить префикс $prefix_name."
|
||||||
else
|
else
|
||||||
print_ok "Префикс $prefix_name восстановлен."
|
print_ok "Префикс $prefix_name восстановлен."
|
||||||
|
|
||||||
print_info "Восстановление ярлыков для префикса $prefix_name..."
|
print_info "Восстановление ярлыков для префикса $prefix_name..."
|
||||||
export RESTORE_FROM_BACKUP=1 # Устанавливаем флаг восстановления
|
export RESTORE_FROM_BACKUP="1" # Устанавливаем флаг восстановления
|
||||||
while IFS='=' read -r line; do
|
while IFS='=' read -r line; do
|
||||||
local name_desktop=$(echo "$line" | cut -d'=' -f1)
|
local name_desktop=$(echo "$line" | cut -d'=' -f1)
|
||||||
local exe_path=$(echo "$line" | cut -d'=' -f2)
|
local exe_path=$(echo "$line" | cut -d'=' -f2)
|
||||||
local icon_name=$(echo "$line" | cut -d'=' -f3)
|
local icon_name=$(echo "$line" | cut -d'=' -f3)
|
||||||
|
|
||||||
local full_exe_path="$WH_PREFIXES_DIR/$prefix_name${exe_path}"
|
local full_exe_path="$WH_PREFIXES_DIR/$prefix_name${exe_path}"
|
||||||
local full_icon_path="$WH_PREFIXES_DIR/$prefix_name/icons/${icon_name}"
|
local full_icon_path="$WH_PREFIXES_DIR/$prefix_name/icons/$icon_name"
|
||||||
|
|
||||||
if [[ -f "$full_exe_path" ]]; then
|
if [[ -f "$full_exe_path" ]]; then
|
||||||
print_info "Создание ярлыка для $name_desktop"
|
print_info "Создание ярлыка для $name_desktop"
|
||||||
create_desktop "$name_desktop" "$full_exe_path" "${icon_name%.*}"
|
create_desktop "$name_desktop" "$full_exe_path" "$full_icon_path"
|
||||||
else
|
else
|
||||||
print_warning "Исполняемый файл для ярлыка '$name_desktop' не найден: $full_exe_path"
|
print_warning "Исполняемый файл для ярлыка '$name_desktop' не найден: $full_exe_path"
|
||||||
fi
|
fi
|
||||||
@ -1464,16 +1450,13 @@ restore_prefix() {
|
|||||||
unset RESTORE_FROM_BACKUP # Снимаем флаг после завершения
|
unset RESTORE_FROM_BACKUP # Снимаем флаг после завершения
|
||||||
print_ok "Ярлыки для префикса $prefix_name восстановлены."
|
print_ok "Ярлыки для префикса $prefix_name восстановлены."
|
||||||
fi
|
fi
|
||||||
fi
|
|
||||||
done
|
|
||||||
else
|
else
|
||||||
print_error "Директория prefixes не найдена в архиве."
|
|
||||||
try_remove_dir "$temp_extract_dir"
|
try_remove_dir "$temp_extract_dir"
|
||||||
return 1
|
fatal "Директория prefixes не найдена в архиве."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
try_remove_dir "$temp_extract_dir"
|
try_remove_dir "$temp_extract_dir"
|
||||||
print_ok "Полное восстановление завершено."
|
print_ok "Полное восстановление префикса $prefix_name завершено."
|
||||||
return 0
|
return 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1483,14 +1466,14 @@ wh_info () {
|
|||||||
Команды:
|
Команды:
|
||||||
install list список возможных установочных скриптов
|
install list список возможных установочных скриптов
|
||||||
install [скрипт] запустить скрипт установки программы
|
install [скрипт] запустить скрипт установки программы
|
||||||
install [скрипт] --clear-pfx не использовать подготовленный префикс для установки ПО
|
install [скрипт] --clear-pfx не использовать готовый префикс для установки ПО
|
||||||
|
|
||||||
installed список установленных программ
|
installed список установленных программ
|
||||||
run [программа.exe] запуск программы (отладка)
|
run [программа.exe] запуск программы (отладка)
|
||||||
remove-all удалить WineHelper и все связанные данные
|
remove-all удалить WineHelper и все связанные данные
|
||||||
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
remove-prefix [имя_префикса] удалить префикс и все связанные данные
|
||||||
backup-prefix [имя_префикса] создать резерную копию префикса
|
backup-prefix [имя_префикса] создать резерную копию префикса
|
||||||
restore-prefix [имя_префикса] восстановить префикс из резервной копии
|
restore-prefix \"путь/до/whpack\" восстановить префикс из резервной копии
|
||||||
|
|
||||||
Параметры:
|
Параметры:
|
||||||
--help показать эту справку и выйти
|
--help показать эту справку и выйти
|
||||||
@ -1511,7 +1494,14 @@ if [[ -d "$HOME/.local/share/$SCRIPT_NAME" ]] \
|
|||||||
then try_force_link_dir "$HOME/.local/share/$SCRIPT_NAME" "$HOME/.winehelper"
|
then try_force_link_dir "$HOME/.local/share/$SCRIPT_NAME" "$HOME/.winehelper"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
case "${1,,}" in
|
if [[ -n "$1" ]] ; then
|
||||||
|
arg1="$1"
|
||||||
|
shift
|
||||||
|
else
|
||||||
|
arg1="--help"
|
||||||
|
fi
|
||||||
|
|
||||||
|
case "$arg1" in
|
||||||
--version) rpm -qi "$SCRIPT_NAME" ; exit 0 ;;
|
--version) rpm -qi "$SCRIPT_NAME" ; exit 0 ;;
|
||||||
--help) wh_info ; exit 0 ;;
|
--help) wh_info ; exit 0 ;;
|
||||||
killall) kill_wine ;;
|
killall) kill_wine ;;
|
||||||
@ -1519,20 +1509,19 @@ case "${1,,}" in
|
|||||||
winereg|regedit) prepair_wine ; wine_run "regedit" ;;
|
winereg|regedit) prepair_wine ; wine_run "regedit" ;;
|
||||||
winefile|explorer) prepair_wine ; wine_run "winefile" ;;
|
winefile|explorer) prepair_wine ; wine_run "winefile" ;;
|
||||||
wineconsole|cmd) prepair_wine ; wine_run "wineconsole" ;;
|
wineconsole|cmd) prepair_wine ; wine_run "wineconsole" ;;
|
||||||
winetricks) shift ; prepair_wine ; "$WINETRICKS" -q "$@" ;;
|
winetricks) prepair_wine ; "$WINETRICKS" -q "$@" ;;
|
||||||
desktop) shift ; create_desktop "$@" ; exit 0 ;;
|
desktop) create_desktop "$@" ; exit 0 ;;
|
||||||
install|-i) shift ; run_autoinstall "$@" ;;
|
install|-i) run_autoinstall "$@" ;;
|
||||||
installed) shift ; check_installed_programs "$1" ;;
|
installed) check_installed_programs "$1" ;;
|
||||||
run|-r) shift ; run_installed_programs "$1" ;;
|
run|-r) run_installed_programs "$1" ;;
|
||||||
backup-prefix) shift ; backup_prefix "$@" ;;
|
backup-prefix) backup_prefix "$@" ;;
|
||||||
restore-prefix) shift ; restore_prefix "$@" ;;
|
restore-prefix) restore_prefix "$@" ;;
|
||||||
remove-all) shift ; remove_winehelper "$@" ;;
|
remove-all) remove_winehelper "$@" ;;
|
||||||
remove-prefix) shift ; remove_prefix "$@" ;;
|
remove-prefix) remove_prefix "$@" ;;
|
||||||
*)
|
*)
|
||||||
if [[ -f "$1" ]] ; then
|
if [[ -f "$arg1" ]] ; then
|
||||||
WIN_FILE_EXEC="$(readlink -f "$1")"
|
WIN_FILE_EXEC="$(readlink -f "$arg1")"
|
||||||
WIN_FILE_NAME="$(basename "$WIN_FILE_EXEC")"
|
WIN_FILE_NAME="$(basename "$arg1")"
|
||||||
shift
|
|
||||||
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" "$@" ;;
|
||||||
@ -1540,6 +1529,7 @@ case "${1,,}" in
|
|||||||
*) fatal "Тип файла не поддерживается." ;;
|
*) fatal "Тип файла не поддерживается." ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
|
print_error "Команды $arg1 не существует."
|
||||||
wh_info
|
wh_info
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
Reference in New Issue
Block a user