Releases: Rodrigo-Matsuura/MoonWiiVCInjector
Release list
Release v1.1.0
Full Changelog: v1.0.0...1.1.0
🚀 Moon WiiVC Injector v1.1.0
🌟 Highlights
- True Standalone Single-File Executable: Both Windows and Linux builds are now distributed as a single standalone executable (~51 MB). All native C++ libraries (SkiaSharp, HarfBuzz, Angle) and databases (GameTDB) are packed directly inside the binary. No external DLLs or
Resources/folder required. - Native In-Process NKit Engine: The NKit conversion engine was modernized and integrated directly into the solution (
NKit.csproj). Disc images in.nkit.isoand.nkit.gczformats are now processed in-memory with real-time UI progress, completely eliminatingConvertToISO.exeand Wine overhead on Linux. - External Tools Replaced by Pure C#:
C2wPatcher.cs: Native AES-128-CBC and hardware-accelerated SHA-1 replacingc2w_patcher(no keys written to disk).DolPatcher.cs: Native in-memory byte patching replacingGetExtTypePatcher.exeandwii-vmc.exe.BtsndConverter.cs: Native PCM 16-bit 48kHz audio resampler and BTSND container generator replacingwav2btsnd.exeand SoX.BaseIsoTemplate.cs: Embedded GameCube template disc structures and Nintendont forwarders directly as C# resources.
- Modernized Asset Downloader (
cucholix/wiivc-bis): Switched to the activewiivc-bisrepository with smart cross-regional fallback matching (PAL/US/JP) for icons, TV banners, DRC/GamePad banners, logos, and boot sounds. - Linear & Real-Time Progress Bar: Re-calibrated 0% - 100% progress tracking with live MB and percentage indicators during heavy NFS encryption (
Nfs2Iso2Nfs). - Pre-Flight Environment Checks (
ValidatePrerequisites): Added early detection for Java (required by JNUSTool/NUSPacker) and WIT/Wine before conversion begins, with platform-specific install hints. - Centralized Versioning: Added
Directory.Build.propsas the single source of truth for solution versions, with the window title dynamically reflecting the compiled assembly version. - Dependency Updates & C# 13: Updated Avalonia UI to
12.1.2, CommunityToolkit.Mvvm to8.4.2, purged hundreds of lines of legacy dead code, and achieved a clean build with 0 warnings (-warnaserror).
Release v1.0.0
What's Changed
- Renaming files and fix for creating a build by @lara25gomes-cpu in #1
- updating .NET Framework 4.8.1 to .NET 9 by @lara25gomes-cpu in #3
- feat: complete modernization to .NET 9, Avalonia UI, and MVVM architecture by @Rodrigo-Matsuura in #4
New Contributors
- @lara25gomes-cpu made their first contribution in #1
Full Changelog: v4.0.0...1.0.0
🚀 Moon WiiVC Injector - v1.0.0 (Stable Release)
This release marks the stable milestone of the modernized .NET 9 and Avalonia UI rewrite. It introduces a clean MVVM architecture, build cancellation support, native drag-and-drop capabilities, a dedicated real-time logs viewer, low-level memory optimizations, and numerous reliability improvements.
🌟 Highlights & New Features
🛑 1. Safe Build Cancellation
- Implemented full
CancellationTokenSourcesupport across the injection pipeline (BuildEngine). - Users can safely cancel in-progress conversions at any time with automatic cleanup of temporary files and external processes.
📂 2. Native Drag-and-Drop Support
- Added intuitive drag-and-drop functionality: drop game disk images (ISO, WBFS, GC), banner artwork, icons, or audio files directly into the application window.
📋 3. Dedicated Real-Time Logs Tab
- Added a dedicated in-app Logs tab to monitor the conversion process in real time (
Nfs2Iso2Nfs,wit, auxiliary tool output). - Introduced a centralized
AppLoggerservice with automaticconversion.logfile generation.
🏗️ Architecture & Refactoring
🧱 Full MVVM Pattern with CommunityToolkit.Mvvm
- Refactored the entire codebase away from monolithic code-behind files into a decoupled Model-View-ViewModel (MVVM) architecture.
- Introduced dedicated ViewModels:
MainViewModel: Manages injection modes, game paths, remote art retrieval, and build triggers.SdCardViewModel: Controls the Nintendont SD card preparation workflow and assets downloader.SettingsViewModel: Handles user preferences and persistent default paths.ViewModelBase: Unified observable foundation.
- Leveraged modern XAML data bindings and reactive commands (
[RelayCommand],[ObservableProperty]).
💬 Decoupled Dialog Architecture (IDialogService)
- Implemented
IDialogServiceandAvaloniaDialogServiceto abstract message boxes, folder pickers, and prompt dialogs away from business logic.
📜 File-Scoped Namespaces
- Modernized all C# source files using C# 10+/13 file-scoped namespaces, streamlining indentation and improving code readability.
⚡ Performance & Memory Efficiency
🧠 Zero-Allocation Buffer Pooling (ArrayPool<byte>)
- Refactored
Nfs2Iso2Nfsbyte-buffer allocations to useArrayPool<byte>.Shared.Rent/Return, drastically reducing Garbage Collection (GC) pressure when processing multi-gigabyte ISOs and NFS archives.
🔍 Optimized Database Lookups & Strings
- Enhanced
GameTdbdatabase parsing withStringComparison.OrdinalIgnoreCasefor fastO(1)dictionary queries. - Replaced redundant network downloads with lightweight HTTP
HEADchecks (HttpMethod.Head) for remote icon/banner verification.
🛠️ Tool Execution & System Enhancements
- Dynamic Java JAR & Wine Execution:
BuildEnginenow dynamically discovers local.jarfiles prior to resolving system binaries or Wine wrappers, improving cross-platform compatibility. - Robust File Operations (
FileUtil): Added safe deletion and retry mechanisms to prevent locked-file exceptions during temporary workspace cleanup. - Updated Tool Resources: Refreshed internal
TOOLDIR.zipassets.
Release v1.0.0-beta
Release Notes
A major overhaul of the Moon WiiVC Injector! This release marks a significant milestone by completely rewriting the user interface, upgrading the backend runtime, and paving the way for native cross-platform support.
What's New
🚀 Cross-Platform UI Migration (Avalonia UI & .NET 9)
- Linux, macOS & Windows Support: Fully migrated the graphical interface from Windows Forms (WinForms) to Avalonia UI, enabling a hardware-accelerated, native user experience across multiple operating systems.
- Modern Cross-Platform Settings: Replaced legacy registry/WinForms settings with a clean, JSON-based configuration store that works seamlessly across systems.
- Custom Desktop Dialogs: Built native Avalonia prompt, settings, and dialog windows (
MessageBoxWindow,PromptWindow,SettingsWindow) for a modern look and feel.
⚙️ Core Enhancements & Modernization
- Decoupled Architecture: Extracted all packing, compilation, and game injection operations from the UI classes into a dedicated, robust
BuildEngine. - Upgraded Hashing & Rendering APIs:
- Adopted
.NET 9's staticMD5.HashDatamethods for faster integrity checks. - Updated
SkiaSharprendering pipelines to leverage modernSKSamplingOptions.
- Adopted
- Improved NFS Logic: Optimized stream allocations, updated header generation, and added support for
EGGSheaders inNfs2Iso2Nfs.cs. - Better Asynchronous I/O: Refactored multiple legacy synchronous file reading/writing routines to use modern asynchronous equivalents.
🐧 Linux & Tooling Optimizations
- Native
c2w_patcherSupport: Implemented logic to set Unix file permissions and launch native binaries instead of relying strictly on Wine. - Streamlined Tool Launching: Added smart runtime detection to fallback gracefully on native tools (
wit,sox) if installed in the host environment. - Bundled Resources: Updated the embedded
TOOLDIR.zipstructure, optimized extraction routines, and updated the bundledwiitdb.txtdatabase for better game detection.
🛠️ Other Improvements
- Styling Improvements: Refined layout and margins for a consistent light-themed desktop style.
- Repository Cleanup: Relocated the GNU GPL v3 license to the repository root and removed all stale Windows Forms project files.
Release v4.0.0
We are proud to present version 4.0.0.0 of TeconMoon's WiiVC Injector!
This release brings a complete structural overhaul to eliminate years of technical debt, introduce ultra-fast in-memory caching, modernize network connectivity, and add support for new compressed formats.
🛠 What has changed since the original base?
📦 1. Support for New Image Formats
- NKIT & NASOS: Full native support for reading and converting compressed files in the
.nkit.isoand.iso.dec/.decformats, eliminating the need for manual decompression by the user.
⚡ 2. Database Performance Optimization (wiitdb)
- Instant
O(1)Lookups: We completely rewrote the query engine of theGameTdb.csclass. Thewiitdb.txtdatabase file (334 KB) is now processed only once in a static constructor. - In-Memory Cache: Searches by IDs and Names now use static in-memory
Dictionaryobjects, replacing the previous slow and repetitive sequential disk I/O operations (O(N)).
🌐 3. High-Performance Network Connectivity (HttpClient)
- Goodbye WebClient/HttpWebRequest: All network logic in the application has been modernized to use the native and robust
HttpClientAPI. - Singleton HttpClient: We created a single shared static HTTP client (
Program.Client) used across the entire application. This prevents socket exhaustion, optimizes bandwidth usage, and speeds up automatic downloads of covers and Nintendont dependencies. - Lightweight Connection Check: Internet connectivity checks have been centralized and now use lightweight header requests (
HttpMethod.Head).
🔒 4. Security & Flexibility (No Admin Rights Required)
- No More Windows Registry Keys: We migrated the storage of critical Wii U encryption keys (Common Key, Title Key, and Ancast Key) from the global Windows Registry to the application's internal User Settings (
Settings). - Zero Elevated Privileges: The program now works perfectly without needing to run "As Administrator," making it significantly safer and more portable.
🧼 5. Dead Code Cleanup & Clean Build (Zero Warnings)
- 0 Warnings, 0 Errors: We eliminated all C# compiler warnings (including the notorious
CS0169andCS0414). All obsolete fields and variables left over from previous refactors have been removed. - Structural Refactor of
LaunchProgram: We decoupled external executable initialization from screen global variables by passing process hiding flags directly as parameters. - Path Safety: We standardized and cleaned up temporary directory management using robust
Path.Combinecalls instead of manual string concatenation.
🐧 6. Simplified Cross-Platform Builds
- Linux/Mono Friendly Support: We disabled automatic ClickOnce manifest generation in the
.csproj, resolving the classic Mono/MSBuild bug that prevented direct builds on Linux.
💾 Download Information
The attached executable is fully portable and self-contained (all dependency .dll libraries are embedded directly into the .exe itself).
- Requirements: Windows 7 SP1 or newer with .NET Framework 4.8 installed (or Linux running through Wine).