# 01-eDNC.ps1 - Install eDNC and deploy custom eMxInfo.txt (Standard) # --- Transcript --- $logDir = 'C:\Logs\SFLD' if (-not (Test-Path $logDir)) { try { New-Item -ItemType Directory -Path $logDir -Force | Out-Null } catch {} } try { Start-Transcript -Path (Join-Path $logDir '01-eDNC.log') -Append -Force | Out-Null } catch {} Write-Host "=== eDNC Setup ===" function Get-SiteConfig { $configPath = 'C:\Enrollment\site-config.json' if (-not (Test-Path -LiteralPath $configPath)) { Write-Host "site-config.json not found - using defaults" -ForegroundColor DarkGray return $null } try { return (Get-Content -LiteralPath $configPath -Raw -ErrorAction Stop | ConvertFrom-Json) } catch { Write-Warning "Failed to parse site-config.json: $_" return $null } } $siteConfig = Get-SiteConfig $siteName = if ($siteConfig) { $siteConfig.siteName } else { 'West Jefferson' } $siteNameCompact = if ($siteConfig) { $siteConfig.siteNameCompact } else { 'WestJefferson' } $edncDir = "C:\Enrollment\shopfloor-setup\Standard\eDNC" if (-not (Test-Path $edncDir)) { Write-Warning "eDNC folder not found at $edncDir - skipping." try { Stop-Transcript | Out-Null } catch {} exit 0 } # --- Find installer --- $edncMsi = Get-ChildItem -Path $edncDir -Filter "eDNC-*.msi" | Select-Object -First 1 $emxInfo = Join-Path $edncDir "eMxInfo.txt" # --- 1. Install eDNC --- if ($edncMsi) { Write-Host "Installing eDNC: $($edncMsi.Name)..." $p = Start-Process -FilePath "msiexec.exe" -ArgumentList "/i `"$($edncMsi.FullName)`" /qn /norestart LAUNCHNTLARS=false SITESELECTED=`"$siteName`"" -Wait -PassThru Write-Host " eDNC exit code: $($p.ExitCode)" } else { Write-Warning "eDNC installer not found in $edncDir (expected eDNC-*.msi)" } # --- 2. Mirror x86 install to 64-bit Program Files (app uses hardcoded paths) --- # mxTransactionDll.dll references \Dnc\Server Files\ $copies = @( @{ Src = "C:\Program Files (x86)\Dnc"; Dst = "C:\Program Files\Dnc" } ) foreach ($c in $copies) { if (Test-Path $c.Src) { if (-not (Test-Path $c.Dst)) { New-Item -Path $c.Dst -ItemType Directory -Force | Out-Null } Copy-Item -Path "$($c.Src)\*" -Destination $c.Dst -Recurse -Force Write-Host " Copied $($c.Src) -> $($c.Dst)" } } # --- 3. Set DNC site --- $regBase = "HKLM\SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC" reg add "$regBase\General" /v Site /t REG_SZ /d $siteNameCompact /f | Out-Null Write-Host " DNC site set to $siteNameCompact." # --- 4. Deploy custom eMxInfo.txt to both Program Files paths --- if (Test-Path $emxInfo) { $dest86 = "C:\Program Files (x86)\DNC\Server Files" $dest64 = "C:\Program Files\DNC\Server Files" foreach ($dest in @($dest86, $dest64)) { if (-not (Test-Path $dest)) { New-Item -Path $dest -ItemType Directory -Force | Out-Null } Copy-Item -Path $emxInfo -Destination (Join-Path $dest "eMxInfo.txt") -Force Write-Host " eMxInfo.txt -> $dest" } } else { Write-Warning "eMxInfo.txt not found at $emxInfo" } Write-Host "=== eDNC Setup Complete ===" try { Stop-Transcript | Out-Null } catch {}