updated backup functions

This commit is contained in:
Mikhail Tergoev
2025-10-10 14:43:10 +03:00
parent 2626543550
commit a7e6786385
2 changed files with 20 additions and 58 deletions

View File

@@ -7478,30 +7478,8 @@ pw_create_prefix_backup () {
if [[ "$YAD_STATUS" == "1" || "$YAD_STATUS" == "252" ]] ; then
restart_pp
fi
if [[ -n "$(grep "/${PW_PREFIX_NAME}/" "${PORT_WINE_PATH}"/*.desktop )" ]] ; then
try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut"
grep "/${PW_PREFIX_NAME}/" "${PORT_WINE_PATH}"/*.desktop | awk -F"/${PW_PREFIX_NAME}/" '{print $2}' \
| awk -F\" '{print $1}' > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut"
fi
unset PW_SANDBOX_HOME_PATH
pw_init_runtime
if check_flatpak
then TMP_ALL_PATH=""
else TMP_ALL_PATH="LD_LIBRARY_PATH=\"${PW_LD_LIBRARY_PATH}\""
fi
chmod -R u+w "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}"
cat << EOF > "${PORT_WINE_TMP_PATH}"/pp_pfx_backup.sh
#!/usr/bin/env bash
${TMP_ALL_PATH} mksquashfs "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" \
"${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" -comp zstd \
|| rm -f "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part"
sleep 3
EOF
chmod u+x "${PORT_WINE_TMP_PATH}"/pp_pfx_backup.sh
${pw_runtime} ${PW_TERM} "${PORT_WINE_TMP_PATH}"/pp_pfx_backup.sh
try_remove_file "${PORT_WINE_TMP_PATH}"/pp_pfx_backup.sh
if [[ -f "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" ]] ; then
mv -f "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack.part" "${PW_PREFIX_TO_BACKUP}/${PW_PREFIX_NAME}.ppack"
if pw_create_prefix_backup_cli "$PW_PREFIX_NAME" "$PW_PREFIX_TO_BACKUP" ; then
yad_info "${translations[Backup has been successfully created for prefix:]} $PW_PREFIX_NAME"
if [[ ! -f "${PORT_WINE_TMP_PATH}/pfx_backup_info" ]] ; then
yad_info "${translations[Attention! Do not pass the resev copy to third parties, there is a risk of losing accounts!]}"
@@ -7517,6 +7495,12 @@ pw_create_prefix_backup_cli () {
PW_PREFIX_NAME="$1"
PW_PREFIX_TO_BACKUP="$2"
if [[ -n "$(grep "/${PW_PREFIX_NAME}/" "${PORT_WINE_PATH}"/*.desktop )" ]] ; then
try_remove_file "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut"
grep "/${PW_PREFIX_NAME}/" "${PORT_WINE_PATH}"/*.desktop | awk -F"/${PW_PREFIX_NAME}/" '{print $2}' \
| awk -F\" '{print $1}' > "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut"
fi
unset PW_SANDBOX_HOME_PATH
pw_init_runtime
if check_flatpak; then
@@ -7583,6 +7567,16 @@ pw_unpack_prefix_cli () {
return 1
else
try_remove_file "${PORT_WINE_TMP_PATH}/pp_pfx_unpack.sh"
if [[ -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut" ]] ; then
while read -r line
do
export portwine_exe="$PORT_WINE_PATH/data/prefixes/$PW_PREFIX_NAME/$line"
if check_start_from_steam
then portwine_output_yad_shortcut --silent
else portwine_create_shortcut
fi
done < "$PORT_WINE_PATH/data/prefixes/$PW_PREFIX_NAME/.create_shortcut"
fi
return 0
fi
}

View File

@@ -390,42 +390,10 @@ export SKIP_CHECK_UPDATES="1"
[[ "$MISSING_DESKTOP_FILE" == "1" ]] && portwine_missing_shortcut
if [[ $(basename "${portwine_exe,,}") =~ .ppack$ ]] ; then
unset PW_SANDBOX_HOME_PATH
pw_init_runtime
if check_flatpak
then TMP_ALL_PATH=""
else TMP_ALL_PATH="LD_LIBRARY_PATH=\"${PW_LD_LIBRARY_PATH}\""
fi
if check_selinux
then NO_XATTRS_NEED="-no-xattrs"
else NO_XATTRS_NEED=""
fi
PW_PREFIX_NAME=$(basename "${1^^}" .PPACK)
cat << EOF > "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack.sh
#!/usr/bin/env bash
${TMP_ALL_PATH} unsquashfs $NO_XATTRS_NEED -f -d "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}" "$1" \
|| echo "ERROR" > "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack_error
sleep 3
EOF
chmod u+x "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack.sh
${pw_runtime} ${PW_TERM} "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack.sh
if grep "ERROR" "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack_error &>/dev/null ; then
try_remove_file "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack_error
try_remove_file "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack.sh
if ! pw_unpack_prefix_cli "$portwine_exe" ; then
yad_error "${translations[Unpack has FAILED for prefix:]} <b>\"${PW_PREFIX_NAME}\"</b>."
exit 1
else
try_remove_file "${PORT_WINE_TMP_PATH}"/pp_pfx_unpack.sh
if [[ -f "${PORT_WINE_PATH}/data/prefixes/${PW_PREFIX_NAME}/.create_shortcut" ]] ; then
while read -r line
do
export portwine_exe="$PORT_WINE_PATH/data/prefixes/$PW_PREFIX_NAME/$line"
if check_start_from_steam
then portwine_output_yad_shortcut --silent
else portwine_create_shortcut
fi
done < "$PORT_WINE_PATH/data/prefixes/$PW_PREFIX_NAME/.create_shortcut"
fi
else
if ! check_start_from_steam
then yad_info "${translations[Unpack is DONE for prefix:]} <b>\"${PW_PREFIX_NAME}\"</b>."
fi