Releases: drpetersonfernandes/BatchConvertIsoToXiso
release_2.5.0
7-Zip CLI Fallback for .7z Archives
SharpCompress can struggle with certain .7z archives (especially those using newer compression methods). This release adds an automatic fallback to the 7-Zip command-line tool when SharpCompress fails.
Smart Temp Drive Selection
When the system temp drive runs low on space during archive extraction, the app now automatically searches alternative local drives with sufficient free space. This prevents failures when processing large archives on systems where the C: drive is nearly full.
Archive Info Pre-Scan
Before extraction, archives are now analyzed to determine their uncompressed size and file count. This enables the drive space check to be smarter and provides a more accurate progress indicator before extraction begins.
Enhanced Error Handling
- Added bug reporting for failures in
ExternalToolService,ExtractXisoService,NativeIsoIntegrityService, andXisoWriter - Disk space checks now include a 10% safety buffer (minimum 200MB) to account for filesystem overhead
Under the Hood
- Upgraded SharpCompress to 0.49.0
- Over 30 new unit tests covering
DisplayInstructions,Formatter,GenerateFilename, andConvertToPastTense
Full Changelog: release_2.4.0...release_2.5.0
release_2.4.0
Encrypted Archive Detection
Password-protected archives (ZIP, RAR, 7z) are now automatically detected. Instead of cryptic "bad state" or "end of stream" errors, you'll see a clear message explaining the file is encrypted and guidance on how to extract it manually. This prevents confusion when processing archives downloaded from sites that password-protect their downloads.
File Lock Detection
If an archive is currently open in another program (file explorer preview, antivirus scan, download manager, etc.), the application now detects this before attempting extraction and provides a clear error message asking you to close the locking program.
Retry Logic with Exponential Backoff
Archive analysis and extraction now include automatic retry on transient I/O errors (up to 3 attempts with increasing delays), reducing failures caused by temporary file locks or brief network interruptions.
Drive Readiness Check
Before processing files, the application verifies the target drive is actually ready — preventing confusing errors when working with disconnected external drives or network shares that have gone offline.
Improved Shutdown Handling
- The application now properly cancels and disposes background operations when closing
- Added a safety net that force-terminates the process if the UI becomes unresponsive during shutdown (prevents the app from lingering in the background)
- Closing the window while an operation is running is now smoother and more reliable
Code Quality & Maintainability
- Extracted
GetXgdTypemethod for cleaner Redump ISO type detection BuildFullMessagemade testable (nowinternal static)UpdateCheckernow uses injected version string instead of runtime assembly reflection- Removed unused
ApplicationSettingsmodel and orphaned methods (GetUncompressedArchiveSizeAsync,RobustMoveFileAsync) - Added 4 new unit test files, bringing the test suite to 173 passing tests
- Async methods now follow the
Asyncsuffix naming convention - NuGet dependencies updated:
SharpCompress0.48.1,Microsoft.Extensions.DependencyInjection10.0.8
Full Changelog: release_2.3.1...release_2.4.0
release_2.3.1
- Update Microsoft.Extensions.DependencyInjection to 10.0.6
- Remove unused TextOptions from App.xaml
- Fix a bug during application launch
release_2.3.0
- Add fallback-safe font families (Segoe UI, Arial, etc.) and terminal fonts for better rendering on Windows, Wine/Proton, and Linux.
- Enhance error handling for font/rendering issues with detailed diagnostics and user guidance.
- Update SharpCompress package.
- Improve exception reporting with environment details.
release_2.2.0
- Add a helper method to detect when output drives or network paths become unavailable. When such errors occur, the batch operation is now stopped immediately rather than continuing to process files that cannot be written.
- Improves error detection by checking specific HRESULT codes.
- Adds Czech translation support for device not ready errors.
- Batch operations will now stop immediately on fatal environmental errors instead of marking files as failed and continuing.
- Implement IsDiskSpaceError check to stop batch processing when the output drive is full.
- Improve the bug reports.
- Update SharpCompress dependency to version 0.47.3.
release_2.1.2
1. New Features & Improvements
- Disk Space Verification: Added a
CheckDiskSpacemethod that calculates the total size of an archive's contents and verifies if the destination drive has sufficient free space before starting the extraction. - Extraction Metadata: The logs now display the total size of the files to be extracted alongside the file count and archive format.
- Dependency Update: Updated the
SharpCompresslibrary from version0.47.0to0.47.1.
2. Enhanced Error Handling
- Specific Archive Exceptions: Added dedicated catch blocks for
ArchiveExceptionandArchiveOperationException. This provides users with clearer feedback if an archive is corrupt, invalid, or in an unsupported format. - Disk Space Alerts: Improved the reporting of "not enough space" errors, providing a user-friendly message suggesting the user free up space rather than showing a generic IO error.
- Refined Bug Reporting Filters: Updated the exception filtering logic to ensure that environmental issues (like low disk space) and archive-specific errors (like corruption or invalid passwords) are handled gracefully and not flagged as application bugs.
3. Code Cleanup
- Simplified the extraction loop by pre-filtering entries to exclude directories.
- Added necessary imports (
SharpCompress.Common) to support new exception types.
release_2.1.1
- Resource Management: External conversion processes now run with
BelowNormalpriority to ensure the system remains responsive during heavy tasks. - UI Stability: The logging service now automatically truncates long logs to prevent the interface from freezing.
- Cancellation Handling: New logic ensures that if a conversion is canceled, any partially created files are automatically deleted to prevent data clutter.
- Asynchronous Improvements: Conversion operations are now explicitly wrapped in background tasks to keep the UI fluid.
release_2.1.0
🚀 UI Overhaul & Stability Improvements
This update brings a major visual and technical refresh to the application, focusing on a more professional "Terminal" aesthetic and improved handling of environmental file issues.
🎨 UI & User Experience
- New Dark Theme: Transitioned to a sleek "Deep Slate" and "Terminal Green" color palette with centralized styles for a consistent look across all windows.
- Refined Layouts: Completely redesigned the About Window with a modern card-based layout and improved the main window's responsiveness.
- Visual Feedback: Added active state styling to navigation buttons and improved
GridViewheaders with bold, themed typography. - Memory Tracking: Added a real-time memory usage indicator in the status bar to monitor application performance.
🛠️ Stability & Compatibility
- Cloud File Support: Added detection and automatic "hydration" for files stored on OneDrive, Dropbox, and Google Drive, preventing crashes when files aren't yet downloaded.
- Enhanced Error Handling: Implemented graceful handling for system rendering errors (
SEHException) and more descriptive messaging for corrupt archives or interrupted operations. - Better Logging: Added detailed status updates during CUE/BIN to ISO conversions and updated the log viewer to use non-blocking asynchronous updates.
⚡ Performance & Core Logic
- Optimized Searching: Leveraged
Span<T>for high-performance signature scanning within ISO files. - Thread Safety: Implemented file stream locking to ensure stability during multi-threaded operations in the XISO engine.
- Smooth Explorer: File extraction during drag-and-drop operations now runs asynchronously, keeping the UI responsive.
- Smart Defaults: Set
xdvdfs.exeas the default conversion engine for improved compatibility.
release_2.0.0
🚀 New Features & Engines
- Multi-Engine Conversion: Added support for external conversion tools. You can now choose between the Native C# Engine, extract-xiso, and the newly integrated xdvdfs (Rust-based) engine.
- XISO Explorer Enhancements:
- Drag & Drop: Extract files directly from an ISO to Windows Explorer or your Desktop.
- Quick Open: Double-click any file within an ISO to open it immediately with its default Windows application.
- Improved Hardware Monitoring: Added a real-time Read Speed monitor alongside the existing write speed metrics to help identify I/O bottlenecks.
🛠 Core Improvements & Bug Fixes
- Enhanced XISO Detection: Implemented a prioritized signature scanning approach to accurately identify game partitions in non-standard or unknown Redump ISO variants.
- Recursive Traversal Fix: Refactored the native directory traversal to be iterative (stack-based), preventing potential stack overflow errors on complex directory structures.
- Robust File Operations: Added network-resilient retry logic with exponential backoff for operations involving UNC paths, mapped drives, or cloud-synced folders (like OneDrive).
- Performance Optimization:
- Added Sparse File support (NTFS) to save disk space.
- Optimized buffer sizes based on system architecture (x64/x86).
- Implemented a "Fast Path" for contiguous file layouts.
release_1.10.0
- Enhanced Bug Reporting: Centralized and expanded environment details (OS version, .NET info, architecture, etc.) in
BugReportServicefor better diagnostics. - Archive Extraction Upgrade: Replaced 7z library with SharpCompress for improved compatibility, security, and removal of external DLL dependencies.
- Disk Space Safety: Added available disk space checks in file moving operations to prevent failures due to insufficient storage.