Skip to content

Latest commit

 

History

History
112 lines (79 loc) · 4.59 KB

File metadata and controls

112 lines (79 loc) · 4.59 KB
title Getting Started
nav_order 3

2. Getting Started

2.1 Requirements

Runtime (end users)

  • 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/.mdf and split volume sets are all handled inside the application, so x64 and ARM64 get the same feature set.

Build (developers)

  • .NET SDK 10.0.x (global.json pins 10.0.0 with rollForward: latestMajor)
  • Windows SDK for WPF development
  • No other global tools required

2.2 Installation (End Users)

  1. Download the latest binary from the Releases page.
  2. Extract the contents to a permanent folder (do not run from a temp/Downloads folder if you want update/self-containment to behave).
  3. Important: keep all .exe files (including ARM64 variants) in the same directory as BatchConvertToCHD.exechdman.exe and 7za.exe are located relative to the app's base directory (MainWindow.xaml.cs:96–101).
  4. Launch BatchConvertToCHD.exe.

2.3 Building from Source

# 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 Release

The 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.exe and 7za.exe are copied to the output directory by the build (BatchConvertToCHD.csproj:26–40). The libraries are referenced as project references, not NuGet packages, except CHDSharp (NuGet 1.2.0) and other packages listed below.

NuGet dependencies (application)

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)

2.4 Running the Application

From the command line

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

First launch

  1. The app verifies that chdman.exe is present and shows a warning if not (status bar indicator "Dependencies: CHDMAN" + a message box).
  2. Usage statistics are recorded once (anonymous { applicationId, version } POST — see Services Reference).
  3. An update check against GitHub releases runs in the background.
  4. Leftover temp directories from crashed sessions and legacy files are cleaned up after a short delay.

Single-instance behavior

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


2.5 First Conversion in 30 Seconds

  1. Open the Convert to CHD tab.
  2. Source Files → browse to your folder of images/archives.
  3. Output CHD → browse to your target folder.
  4. 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).