diff --git a/controllers/path_handler.py b/controllers/path_handler.py new file mode 100644 index 0000000..4b50837 --- /dev/null +++ b/controllers/path_handler.py @@ -0,0 +1,12 @@ +import os + +def fix_windows_path(dos_path: str, encoding=None): + if os.name == 'nt': + if (not isinstance(dos_path, str) and encoding is not None): + dos_path = dos_path.decode(encoding) + path = os.path.abspath(dos_path) + if path.startswith(u"\\\\"): + return u"\\\\?\\UNC\\" + path[2:] + return u"\\\\?\\" + path + else: + return dos_path \ No newline at end of file diff --git a/devicemanagement/device_manager.py b/devicemanagement/device_manager.py index 4ead1b9..60bbae2 100644 --- a/devicemanagement/device_manager.py +++ b/devicemanagement/device_manager.py @@ -12,6 +12,8 @@ from pymobiledevice3.exceptions import MuxException, PasswordRequiredError from devicemanagement.constants import Device, Version from devicemanagement.data_singleton import DataSingleton +from controllers.path_handler import fix_windows_path + from tweaks.tweaks import tweaks, FeatureFlagTweak, EligibilityTweak, AITweak, BasicPlistTweak, AdvancedPlistTweak, RdarFixTweak, NullifyFileTweak from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks from tweaks.posterboard_tweak import PosterboardTweak @@ -331,7 +333,7 @@ class DeviceManager: elif isinstance(tweak, PosterboardTweak): tmp_pb_dir = TemporaryDirectory() tweak.apply_tweak( - files_to_restore=files_to_restore, output_dir=tmp_pb_dir.name, + files_to_restore=files_to_restore, output_dir=fix_windows_path(tmp_pb_dir.name), version=self.get_current_device_version() ) if tweak.enabled: @@ -437,9 +439,9 @@ class DeviceManager: if tmp_pb_dir != None: try: tmp_pb_dir.cleanup() - except Exception as e: + except Exception as e2: # ignore clean up errors - print(str(e)) + print(str(e2)) show_apply_error(e, update_label) ## RESETTING MOBILE GESTALT diff --git a/gui/main_window.py b/gui/main_window.py index 48ad413..efa0eac 100644 --- a/gui/main_window.py +++ b/gui/main_window.py @@ -20,7 +20,7 @@ from tweaks.custom_gestalt_tweaks import CustomGestaltTweaks, ValueTypeStrings from tweaks.daemons_tweak import Daemon App_Version = "5.0.3" -App_Build = 1 +App_Build = 0 class Page(Enum): Home = 0 diff --git a/requirements.txt b/requirements.txt index ea89fba..8aef6d6 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,4 +1,3 @@ pymobiledevice3 PySide6-Essentials -PyInstaller -rarfile \ No newline at end of file +PyInstaller \ No newline at end of file diff --git a/tweaks/posterboard_tweak.py b/tweaks/posterboard_tweak.py index d33961b..928b0f5 100644 --- a/tweaks/posterboard_tweak.py +++ b/tweaks/posterboard_tweak.py @@ -1,6 +1,5 @@ import os import zipfile -import rarfile import uuid import re from random import randint @@ -9,6 +8,7 @@ from PySide6 import QtWidgets, QtCore, QtGui from .tweak_classes import Tweak from Sparserestore.restore import FileToRestore from controllers.plist_handler import set_plist_value +from controllers.path_handler import fix_windows_path from qt.ui_mainwindow import Ui_Nugget class TendieFile: @@ -183,16 +183,7 @@ class PosterboardTweak(Tweak): for tendie in self.tendies: zip_output = os.path.join(output_dir, str(uuid.uuid4())) os.makedirs(zip_output) - if os == 'nt': - rar_archive = rarfile.RarFile(tendie.path) - try: - # Extract the contents to the target directory - rar_archive.extractall(path=zip_output) - finally: - # Close the RAR file to release resources - rar_archive.close() - else: - with zipfile.ZipFile(tendie.path, 'r') as zip_ref: - zip_ref.extractall(zip_output) + with zipfile.ZipFile(tendie.path, 'r') as zip_ref: + zip_ref.extractall(zip_output) # add the files self.recursive_add(files_to_restore, curr_path=output_dir)