forked from CastroFidel/winehelper
backup: check prefix before unpack
This commit is contained in:
@ -19,11 +19,11 @@ apt-repo | grep -q "x86_64-i586" || fatal "Репозиторий x86_64-i586 н
|
||||
windows приложения. Подробнее по ссылке: https://www.altlinux.org/Biarch"
|
||||
|
||||
##### INSTALL DEPENDENCIES #####
|
||||
# fonts-ttf-ms
|
||||
|
||||
apt-get install {i586-,}{glibc-core,libstdc++6,glibc-pthread,glibc-nss,\
|
||||
libOSMesa,libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,\
|
||||
libgnutls30,libGL,libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,\
|
||||
libvulkan1,libcups} || fatal "Не удалось установить зависимости."
|
||||
|
||||
apt-get install {i586-,}wine
|
||||
|
||||
# yad zenity
|
||||
|
31
winehelper
31
winehelper
@ -131,6 +131,8 @@ su_run () {
|
||||
}
|
||||
|
||||
##### CHECK DEPENDENCIES #####
|
||||
# fonts-ttf-ms
|
||||
|
||||
if ! rpm -q {i586-,}{wine,glibc-core,libstdc++6,glibc-pthread,glibc-nss,libOSMesa,\
|
||||
libnss-mdns,libunixODBC2,ocl-icd,libfreetype,libfontconfig1,libgnutls30,libGL,\
|
||||
libEGL,xorg-dri-swrast,xorg-dri-intel,xorg-dri-radeon,libvulkan1,libcups} 1>/dev/null
|
||||
@ -865,14 +867,14 @@ check_prefix_var () {
|
||||
else
|
||||
fatal "Неверный выбор."
|
||||
fi
|
||||
|
||||
print_info "Выбран префикс: $WINEPREFIX"
|
||||
fi
|
||||
|
||||
if echo "$WINEPREFIX" | grep -qv '/' ; then
|
||||
export WINEPREFIX="$WH_PREFIXES_DIR/$WINEPREFIX"
|
||||
fi
|
||||
|
||||
export PREFIX_NAME="$(basename "$WINEPREFIX")"
|
||||
print_info "Выбран префикс: $PREFIX_NAME"
|
||||
|
||||
return 0
|
||||
}
|
||||
@ -1363,6 +1365,7 @@ backup_prefix() {
|
||||
|
||||
print_info "Создание squashfs архива..."
|
||||
if mksquashfs "$temp_backup_dir" "$backup_dest_path" -comp zstd ; then
|
||||
echo -e "\n# PREFIX_NAME=$PREFIX_NAME" >> "$backup_dest_path"
|
||||
print_ok "Архив префикса $PREFIX_NAME успешно создан по пути:\n$backup_dest_path"
|
||||
else
|
||||
print_error "Не удалось создать архив префикса $PREFIX_NAME."
|
||||
@ -1377,22 +1380,31 @@ backup_prefix() {
|
||||
|
||||
restore_prefix() {
|
||||
local backup_archive_path="$1"
|
||||
local temp_extract_dir
|
||||
local temp_extract_dir prefix_name
|
||||
|
||||
|
||||
if [[ -z "$backup_archive_path" ]] ; then
|
||||
read -e -p "Укажите путь к архиву резервной копии (/путь/к/архиву.whpack): " backup_archive_path
|
||||
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
||||
if [[ -z "$backup_archive_path" ]] ; then
|
||||
fatal "Путь к архиву не указан. Восстановление отменено."
|
||||
fi
|
||||
fi
|
||||
|
||||
backup_archive_path=$(echo "$backup_archive_path" | sed "s/'//g; s/\"//g")
|
||||
if [[ ! -f "$backup_archive_path" ]]
|
||||
then fatal "Файл архива не найден: $backup_archive_path"
|
||||
fi
|
||||
|
||||
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)"
|
||||
create_new_dir "$temp_extract_dir"
|
||||
|
||||
@ -1405,19 +1417,12 @@ restore_prefix() {
|
||||
fi
|
||||
|
||||
if [[ -d "$temp_extract_dir/prefixes" ]] ; then
|
||||
local prefix_name prefix_dir
|
||||
local prefix_name
|
||||
prefix_name="$(ls -1 "$temp_extract_dir/prefixes")"
|
||||
prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
||||
local prefix_dir="$temp_extract_dir/prefixes/$prefix_name"
|
||||
|
||||
print_info "Восстановление префикса: $prefix_name"
|
||||
|
||||
if [[ -d "$WH_PREFIXES_DIR/$prefix_name" ]] ; then
|
||||
try_remove_dir "$temp_extract_dir"
|
||||
fatal "Префикс $prefix_name уже существует!
|
||||
Удалите его если действительно желаете востановить префикс заново.
|
||||
Команда для удаления: $SCRIPT_NAME remove-prefix $prefix_name"
|
||||
fi
|
||||
|
||||
if [[ -d "$temp_extract_dir/dist" ]] ; then
|
||||
print_info "Восстановление версий WINE"
|
||||
if cp -fr "$temp_extract_dir/dist"/* "$WH_DIST_DIR/"
|
||||
|
Reference in New Issue
Block a user