You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
**Batch ISO to XISO** is a high-performance Windows WPF utility designed for the Xbox preservation and emulation community. It provides a streamlined way to convert standard Xbox and Xbox 360 ISOs into the optimized, trimmed **XISO** format, verify their structural integrity, and explore their contents.
8
10
9
-
Built with a **native C# XDVDFS engine**, this tool eliminates the need for legacy external command-line tools for core ISO operations, offering superior speed and modern features like real-time disk write monitoring.
10
-
11
-
The application follows modern software architecture principles with **Dependency Injection (DI)** and a **service-oriented design**, ensuring maintainability, testability, and clean separation of concerns.
11
+
Built with a **native C# XDVDFS engine**, this tool eliminates the need for external command-line tools for core ISO operations, offering superior speed and modern features like real-time disk write monitoring.
12
12
13
13

14
14

@@ -19,18 +19,18 @@ The application follows modern software architecture principles with **Dependenc
19
19
## 🚀 Key Features
20
20
21
21
### 1. Batch Conversion
22
-
***Smart Trimming**: Rebuilds ISOs into the XISO format, removing gigabytes of unnecessary system padding.
23
-
***Archive Support**: Directly process `.zip`, `.7z`, and `.rar` files. The tool extracts, converts, and cleans up automatically.
22
+
***Smart Trimming**: Rebuilds ISOs into the XISO format using a native traversal engine, removing gigabytes of unnecessary system padding.
23
+
***Archive Support**: Directly process `.zip`, `.7z`, and `.rar` files. Powered by `SharpCompress` for high-performance extraction.
24
24
***CUE/BIN Support**: Integrated `bchunk` support to convert old-school disc images to ISO before processing.
25
25
***System Update Removal**: Option to skip the `$SystemUpdate` folder to save additional space.
26
26
27
27
### 2. Integrity Testing
28
-
***Structural Validation**: Traverses the XDVDFS file tree to ensure the filesystem is valid and readable.
29
-
***Deep Surface Scan**: Optional sequential sector reading to detect physical data corruption or "bad sectors" in the image.
28
+
***Structural Validation**: Deep traversal of the XDVDFS file tree to ensure the filesystem is valid and readable.
29
+
***Deep Surface Scan**: Optional sequential sector reading to detect physical data corruption or "bad sectors".
30
30
***Batch Organization**: Automatically move "Passed" or "Failed" images into dedicated subfolders.
31
31
32
32
### 3. XISO Explorer
33
-
***Native Browsing**: Open any Xbox ISO to browse files and directories without extracting them.
33
+
***Native Browsing**: Open any Xbox ISO to browse files and directories without extraction.
34
34
***Metadata View**: View file sizes, attributes, and directory structures directly within the UI.
35
35
36
36
### 4. Advanced Monitoring
@@ -39,37 +39,31 @@ The application follows modern software architecture principles with **Dependenc
39
39
40
40
---
41
41
42
-
## 🏗️ Architecture
42
+
## 🏗️ Architecture Refactor
43
43
44
-
The application is built with a **modern, modular architecture** using:
44
+
The application has been recently refactored to follow modern software engineering principles, ensuring a robust and maintainable codebase:
45
45
46
46
### Dependency Injection (DI)
47
-
- Services are registered and resolved through a central DI container (`Microsoft.Extensions.DependencyInjection`)
48
-
- Promotes loose coupling and enables easy unit testing
49
-
- Proper service lifecycle management (singletons, transients)
47
+
The project now utilizes `Microsoft.Extensions.DependencyInjection` for comprehensive service management. All core logic is decoupled from the UI, allowing for easier testing and modular updates.
50
48
51
49
### Service-Oriented Design
52
-
The codebase is organized into well-defined interfaces and implementations:
50
+
The codebase is organized into specialized services, each with a clear responsibility:
53
51
54
-
| Interface | Service | Purpose|
52
+
| Interface | Service Implementation | Responsibility|
55
53
| :--- | :--- | :--- |
56
-
|`ILogger`|`LoggerService`| Centralized logging to the UI |
-**Testability**: Interfaces enable mocking for unit tests
70
-
-**Maintainability**: Clear separation of concerns between UI and business logic
71
-
-**Extensibility**: New features can be added by implementing existing interfaces
72
-
-**Reliability**: Proper disposal patterns and exception handling throughout
54
+
|`IOrchestratorService`|`OrchestratorService`| Coordinates the high-level workflow of batch operations. |
55
+
|`INativeIsoIntegrityService`|`NativeIsoIntegrityService`| Handles XDVDFS filesystem validation and surface scanning. |
56
+
| (Native Class) |`XisoWriter`| Core engine for rewriting and trimming ISO files. |
57
+
|`IFileExtractor`|`FileExtractorService`| Manages archive extraction with robust error handling. |
58
+
|`IFileMover`|`FileMoverService`| Handles safe file relocation with retry logic and disk monitoring. |
59
+
|`IDiskMonitorService`|`DiskMonitorService`| Provides real-time metrics on disk I/O performance. |
60
+
|`IBugReportService`|`BugReportService`| Automated error reporting and diagnostic collection. |
61
+
|`ILogger`|`LoggerService`| Centralized asynchronous logging across the application. |
62
+
|`IUpdateChecker`|`UpdateChecker`| Manages version checks via the GitHub API. |
63
+
|`IMessageBoxService`|`MessageBoxService`| Abstracted UI interactions for better testability. |
64
+
65
+
### Clean Code-Behind
66
+
The `MainWindow` has been refactored into logical **partial classes** (`ConversionAndTesting`, `UIHelpers`, `XIsoExplorerLogic`, etc.), significantly improving readability and preventing the "God Object" anti-pattern.
73
67
74
68
---
75
69
@@ -91,42 +85,22 @@ The codebase is organized into well-defined interfaces and implementations:
91
85
92
86
---
93
87
94
-
## 📖 How to Use
95
-
96
-
### Conversion
97
-
1. Select your **Source Folder** (contains your ISOs or archives).
98
-
2. Select an **Output Folder** (where the trimmed XISOs will be saved).
99
-
3.*(Optional)* Enable **Delete original files** if you wish to replace your library with XISOs (use with caution!).
100
-
4. Click **Start Conversion**.
101
-
102
-
### Integrity Testing
103
-
1. Switch to the **Test Integrity** tab.
104
-
2. Select the folder containing your ISOs.
105
-
3. Choose whether to perform a **Deep Surface Scan** (thorough but slower).
106
-
4. Click **Start Integrity Test**.
107
-
108
-
### Explorer
109
-
1. Switch to the **Explorer** tab.
110
-
2. Browse for a specific `.iso` file.
111
-
3. Double-click folders to navigate the internal Xbox filesystem.
112
-
113
-
---
114
-
115
88
## 🛡️ Safety & Reliability
116
89
117
-
***Temp Folder Protection**: To prevent data loss, the app restricts users from selecting system temporary directories as source or destination folders.
118
-
***Cloud-Aware**: Detects if files are stored in the cloud (e.g., OneDrive) and prompts for hydration/download instead of crashing.
119
-
***Atomic Operations**: Converted files are verified before the original is deleted (if that option is enabled).
90
+
***Cloud-Aware**: Automatically detects and handles files stored in the cloud (e.g., OneDrive), prompting for hydration instead of failing.
91
+
***Atomic Operations**: Converted files are verified before any original files are deleted.
92
+
***Automatic Cleanup**: The application features a `TempFolderCleanupHelper` that ensures orphaned temporary files are removed on startup or after crashes.
120
93
***Robust Error Handling**: Comprehensive exception handling with automatic bug reporting and graceful degradation.
121
94
122
95
---
123
96
124
97
## 📜 Acknowledgements
125
98
99
+
***XboxKit**: Used as a reference for the core XDVDFS logic. [GitHub Repository](https://github.com/Deterous/XboxKit).
126
100
***bchunk**: Used for CUE/BIN to ISO conversion.
127
-
***SevenZipSharp**: Used for high-performance archive extraction.
101
+
***SharpCompress**: Used for high-performance archive extraction.
128
102
***Pure Logic Code**: Developed and maintained by [Pure Logic Code](https://www.purelogiccode.com).
129
103
130
104
---
131
105
132
-
⭐ **If you find this tool useful, please give us a Star on GitHub!** ⭐
106
+
⭐ **If you find this tool useful, please give us a Star on GitHub!** ⭐
0 commit comments