Skip to content

Commit faf4e65

Browse files
Revamp README with architecture refactor section, updated badges, feature highlights (SharpCompress), and safety enhancements
1 parent cac19db commit faf4e65

1 file changed

Lines changed: 34 additions & 60 deletions

File tree

ReadMe.md

Lines changed: 34 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
# Batch ISO to XISO Converter
22

3-
[![.NET 10.0](https://img.shields.io/badge/.NET-10.0-blue.svg)](https://dotnet.microsoft.com/download/dotnet/10.0)
43
[![Platform](https://img.shields.io/badge/Platform-Windows-lightgrey.svg)](https://www.microsoft.com/windows)
5-
[![License](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE)
4+
[![.NET 10.0](https://img.shields.io/badge/.NET-10.0-blue.svg)](https://dotnet.microsoft.com/download/dotnet/10.0)
5+
[![Platform](https://img.shields.io/badge/platform-Windows%20x64%20%7C%20ARM64-blue)](https://github.com/drpetersonfernandes/BatchConvertIsoToXiso/releases)
6+
[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE.txt)
7+
[![GitHub release](https://img.shields.io/github/v/release/drpetersonfernandes/BatchConvertIsoToXiso)](https://github.com/drpetersonfernandes/BatchConvertIsoToXiso/releases)
68

79
**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.
810

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.
1212

1313
![Convert Screenshot](screenshot.png)
1414
![Test Screenshot](screenshot2.png)
@@ -19,18 +19,18 @@ The application follows modern software architecture principles with **Dependenc
1919
## 🚀 Key Features
2020

2121
### 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.
2424
* **CUE/BIN Support**: Integrated `bchunk` support to convert old-school disc images to ISO before processing.
2525
* **System Update Removal**: Option to skip the `$SystemUpdate` folder to save additional space.
2626

2727
### 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".
3030
* **Batch Organization**: Automatically move "Passed" or "Failed" images into dedicated subfolders.
3131

3232
### 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.
3434
* **Metadata View**: View file sizes, attributes, and directory structures directly within the UI.
3535

3636
### 4. Advanced Monitoring
@@ -39,37 +39,31 @@ The application follows modern software architecture principles with **Dependenc
3939

4040
---
4141

42-
## 🏗️ Architecture
42+
## 🏗️ Architecture Refactor
4343

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:
4545

4646
### 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.
5048

5149
### 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:
5351

54-
| Interface | Service | Purpose |
52+
| Interface | Service Implementation | Responsibility |
5553
| :--- | :--- | :--- |
56-
| `ILogger` | `LoggerService` | Centralized logging to the UI |
57-
| `IBugReportService` | `BugReportService` | Automatic error reporting |
58-
| `IDiskMonitorService` | `DiskMonitorService` | Real-time disk write speed monitoring |
59-
| `IFileExtractor` | `FileExtractorService` | Archive extraction (.zip, .7z, .rar) |
60-
| `IFileMover` | `FileMoverService` | Safe file moving with retry logic |
61-
| `IMessageBoxService` | `MessageBoxService` | Abstracted UI dialogs for testability |
62-
| `INativeIsoIntegrityService` | `NativeIsoIntegrityService` | XDVDFS filesystem validation |
63-
| `IOrchestratorService` | `OrchestratorService` | Coordinates batch operations |
64-
| `IExternalToolService` | `ExternalToolService` | External tool execution (bchunk) |
65-
| `IUpdateChecker` | `UpdateChecker` | GitHub release checking |
66-
| `IUrlOpener` | `UrlOpenerService` | Cross-platform URL handling |
67-
68-
### Key Benefits
69-
- **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.
7367

7468
---
7569

@@ -91,42 +85,22 @@ The codebase is organized into well-defined interfaces and implementations:
9185

9286
---
9387

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-
11588
## 🛡️ Safety & Reliability
11689

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.
12093
* **Robust Error Handling**: Comprehensive exception handling with automatic bug reporting and graceful degradation.
12194

12295
---
12396

12497
## 📜 Acknowledgements
12598

99+
* **XboxKit**: Used as a reference for the core XDVDFS logic. [GitHub Repository](https://github.com/Deterous/XboxKit).
126100
* **bchunk**: Used for CUE/BIN to ISO conversion.
127-
* **SevenZipSharp**: Used for high-performance archive extraction.
101+
* **SharpCompress**: Used for high-performance archive extraction.
128102
* **Pure Logic Code**: Developed and maintained by [Pure Logic Code](https://www.purelogiccode.com).
129103

130104
---
131105

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

Comments
 (0)