diff --git a/winehelper b/winehelper index 1b5ab6a..3df0af8 100755 --- a/winehelper +++ b/winehelper @@ -1378,6 +1378,55 @@ remove_winehelper () { fi } +create_base_pfx () { + export WINEPREFIX="$1" + check_prefix_var + + local prefix_dir="$WINEPREFIX" + local drive_c_dir="$prefix_dir/drive_c" + local users_dir="$drive_c_dir/users" + local archive_path="$WH_TMP_DIR/pfx/new_${PREFIX_NAME}.tar.xz" + + try_copy_dir "$prefix_dir" "${prefix_dir}_bak" + + for wtlog in workaround isolate internal winxp win2 win7 win10 + do sed -i "/$wtlog/d" "$prefix_dir/winetricks.log" + done + + if [[ -d "$users_dir/$USER" ]] \ + && [[ ! -L "$users_dir/$USER" ]] + then + if [[ -L "$users_dir/xuser" ]] + then try_remove_dir "$users_dir/xuser/" + fi + create_new_dir "$users_dir/xuser/" + cp -fr "$users_dir/$USER"/* "$users_dir/xuser/" + fi + + try_remove_file "$prefix_dir/.update-timestamp" + try_remove_file "$prefix_dir/.firstboot" + try_remove_file "$prefix_dir/last.conf" + try_remove_dir "$prefix_dir/dosdevices/" + try_remove_dir "$users_dir/$USER" + try_remove_dir "$users_dir/xuser/AppData/Local/Temp/" + try_remove_dir "$drive_c_dir/ProgramData/Package Cache/" + try_remove_dir "$drive_c_dir/windows/temp/" + try_remove_dir "$drive_c_dir/windows/Installer/" + + rm -fr "$drive_c_dir/windows/Microsoft.NET"/*/*/SetupCache/ + + cd "$prefix_dir" + if tar --no-xattrs -c -I 'xz --memlimit=8000MiB -9 -T0' -f "$archive_path" ./* ; then + print_ok "Архив создан по пути: $archive_path" + xdg-open "$(dirname "$archive_path")" & + cd - + else + try_remove_file "$archive_path" + cd - + fatal "Не удалось создать архив." + fi +} + backup_prefix() { export WINEPREFIX="$1" check_prefix_var @@ -1594,6 +1643,7 @@ case "$arg1" in restore-prefix) restore_prefix "$@" ;; remove-all) remove_winehelper "$@" ;; remove-prefix) remove_prefix "$@" ;; + create-base-pfx) create_base_pfx "$@" ;; *) if [[ -f "$arg1" ]] ; then WIN_FILE_EXEC="$(readlink -f "$arg1")"