From a0234e9b530d4c271d13c4b2708574de602734b2 Mon Sep 17 00:00:00 2001 From: ihaveahax Date: Thu, 8 Jan 2026 18:04:03 -0600 Subject: [PATCH] try to search for save3ds_fuse in PATH, if not found locally --- custominstall/__main__.py | 7 +++++-- custominstall/gui.py | 6 +++++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/custominstall/__main__.py b/custominstall/__main__.py index 0bf5cfd..65a4daa 100644 --- a/custominstall/__main__.py +++ b/custominstall/__main__.py @@ -15,7 +15,7 @@ from os.path import dirname, join, isdir, isfile from random import randint from hashlib import sha256 from pprint import pformat -from shutil import copyfile, copy2, rmtree +from shutil import copyfile, copy2, rmtree, which import sys from sys import platform, executable from tempfile import TemporaryDirectory @@ -64,6 +64,9 @@ else: script_dir = dirname(__file__) save3ds_fuse_path = join(script_dir, 'bin', platform, save3ds_fuse_name) + if not isfile(save3ds_fuse_path): + save3ds_fuse_path = which('save3ds_fuse') + # missing contents are replaced with 0xFFFFFFFF in the cmd file CMD_MISSING = b'\xff\xff\xff\xff' @@ -289,7 +292,7 @@ class CustomInstall: return isdir(sd_path) def start(self): - if not isfile(save3ds_fuse_path): + if not (save3ds_fuse_path and isfile(save3ds_fuse_path)): self.log("Couldn't find " + save3ds_fuse_path, 2) return None, False, 0 diff --git a/custominstall/gui.py b/custominstall/gui.py index 4cf77b5..502fe29 100644 --- a/custominstall/gui.py +++ b/custominstall/gui.py @@ -26,7 +26,7 @@ from pyctr.type.cia import CIAError from pyctr.type.tmd import TitleMetadataError from . import __version__ -from .__main__ import CustomInstall, load_cifinish, InvalidCIFinishError, InstallStatus +from .__main__ import CustomInstall, load_cifinish, InvalidCIFinishError, InstallStatus, save3ds_fuse_path if TYPE_CHECKING: from os import PathLike @@ -739,6 +739,10 @@ class CustomInstallGUI(ttk.Frame): def main(): + if not (save3ds_fuse_path and isfile(save3ds_fuse_path)): + mb.showerror('Error', "Couldn't find save3ds_fuse. Please place it PATH.") + return + window = tk.Tk() window.title(f'custom-install {__version__}') frame = CustomInstallGUI(window)