| title | Getting Started |
|---|---|
| nav_order | 3 |
- OS: Windows 10 / 11, x64 or ARM64
- Runtime: .NET 10.0 Desktop Runtime
- Bundled executables (shipped with the app, must stay next to
BatchConvertToCHD.exe):chdman.exe/chdman_arm64.exe— MAME CHD tool (conversion only)7za.exe/7za_arm64.exe— 7-Zip fallback extractor
- Nothing else to install — CSO, ISZ, ECM, Alcohol
.mds/.mdfand split volume sets are all handled inside the application, so x64 and ARM64 get the same feature set.
- .NET SDK 10.0.x (
global.jsonpins10.0.0withrollForward: latestMajor) - Windows SDK for WPF development
- No other global tools required
- Download the latest binary from the Releases page.
- Extract the contents to a permanent folder (do not run from a temp/Downloads folder if you want update/self-containment to behave).
- Important: keep all
.exefiles (including ARM64 variants) in the same directory asBatchConvertToCHD.exe—chdman.exeand7za.exeare located relative to the app's base directory (MainWindow.xaml.cs:96–101). - Launch
BatchConvertToCHD.exe.
# Clone
git clone https://github.com/drpetersonfernandes/BatchConvertToCHD.git
cd CSharp_BatchConvertToCHD
# Build the whole solution
dotnet build CSharp_BatchConvertToCHD.sln -c Release
# Run the tests
dotnet test CSharp_BatchConvertToCHD.sln -c Release
# Or just the application
dotnet build BatchConvertToCHD/BatchConvertToCHD.csproj -c ReleaseThe solution contains five projects:
| Project | Kind | Target framework |
|---|---|---|
BatchConvertToCHD |
WPF application (WinExe) | net10.0-windows |
BatchConvertToCHD.Tests |
xUnit test suite | net10.0-windows |
CCDSharp |
class library (CloneCD parsing) | net10.0;net8.0 |
CSOSharp |
class library (CSO decompression) | net10.0;net8.0 |
PBPSharp |
class library (PBP/SFO parsing) | net10.0;net8.0 |
Note:
chdman.exeand7za.exeare copied to the output directory by the build (BatchConvertToCHD.csproj:26–40). The libraries are referenced as project references, not NuGet packages, exceptCHDSharp(NuGet 1.2.0) and other packages listed below.
| Package | Version | Purpose |
|---|---|---|
| CHDSharp | 1.2.0 | Pure C# CHD reading, verification, extraction |
| WPF-UI | 4.3.0 | Fluent Design theming and controls |
| SharpCompress | 0.50.x | Archive extraction (7z/rar), and bzip2 decompression for ISZ chunks |
| NAudio | 3.0.1 | MP3 decoding via Media Foundation |
| Serilog | 4.4.0 | Structured logging |
| Serilog.Sinks.File | 7.0.0 | Rolling file logs |
| Serilog.Sinks.Debug | 3.0.0 | Debugger sink |
| Meziantou.Analyzer | 3.0.x | Roslyn analyzers (build-time only) |
The application accepts an optional folder path argument to pre-populate the Convert to CHD source folder:
BatchConvertToCHD.exe "C:\ROMs\MyGames"The path is applied in MainWindow_LoadedAsync via SetInputFolder (MainWindow.xaml.cs:148–153).
- The app verifies that
chdman.exeis present and shows a warning if not (status bar indicator "Dependencies: CHDMAN" + a message box). - Usage statistics are recorded once (anonymous
{ applicationId, version }POST — see Services Reference). - An update check against GitHub releases runs in the background.
- Leftover temp directories from crashed sessions and legacy files are cleaned up after a short delay.
Only one instance can run: a global mutex Global\BatchConvertToCHD_SingleInstance is acquired at startup; a second launch shows "Another instance of BatchConvertToCHD is already running." and exits (App.xaml.cs:80–105).
- Open the Convert to CHD tab.
- Source Files → browse to your folder of images/archives.
- Output CHD → browse to your target folder.
- Click Start Conversion.
Files appear in the list pre-selected; uncheck any you want to skip. The log pane shows live chdman output; the status bar and stat cards show progress, speed, and elapsed time.
See the User Guide for all options and the other two workflows (extraction and verification).