# Extract CHM file contents using hh.exe and ITS protocol param( [string]$ChmPath = "C:\GEVISOFT\Documentation\GeViSoft .NET SDK API Documentation.chm", [string]$OutputDir = "C:\DEV\COPILOT\geutebruck-api\docs\chm-extracted" ) $ErrorActionPreference = "Continue" Write-Host "Extracting CHM file..." -ForegroundColor Cyan Write-Host "Source: $ChmPath" -ForegroundColor Gray Write-Host "Output: $OutputDir" -ForegroundColor Gray Write-Host "" # Create output directory New-Item -ItemType Directory -Force -Path $OutputDir | Out-Null # Try method 1: hh.exe with -decompile Write-Host "[1] Trying hh.exe -decompile..." -ForegroundColor Yellow $result = Start-Process -FilePath "hh.exe" -ArgumentList "-decompile", $OutputDir, $ChmPath -Wait -PassThru -NoNewWindow Write-Host " Exit code: $($result.ExitCode)" -ForegroundColor Gray # Check if files were created $files = Get-ChildItem -Path $OutputDir -Recurse -File Write-Host " Files extracted: $($files.Count)" -ForegroundColor Gray if ($files.Count -eq 0) { Write-Host "[2] Trying expand.exe..." -ForegroundColor Yellow expand.exe $ChmPath $OutputDir $files = Get-ChildItem -Path $OutputDir -Recurse -File Write-Host " Files extracted: $($files.Count)" -ForegroundColor Gray } if ($files.Count -gt 0) { Write-Host "" Write-Host "[OK] Successfully extracted CHM contents" -ForegroundColor Green Write-Host "" Write-Host "HTML files found:" -ForegroundColor Cyan $htmlFiles = $files | Where-Object { $_.Extension -match '\.(html?|htm)$' } | Select-Object -First 10 foreach ($file in $htmlFiles) { Write-Host " - $($file.Name)" -ForegroundColor White } } else { Write-Host "" Write-Host "[ERROR] Could not extract CHM file" -ForegroundColor Red Write-Host "" Write-Host "Alternative: You can manually extract using:" -ForegroundColor Yellow Write-Host " 1. 7-Zip: Right-click CHM -> 7-Zip -> Extract" -ForegroundColor Gray Write-Host " 2. CHM Decoder: http://www.manmrk.net/tutorials/CHM/" -ForegroundColor Gray Write-Host " 3. View in browser: mk:@MSITStore:$ChmPath" -ForegroundColor Gray }