diff --git a/AutoTx/AutoTx.cs b/AutoTx/AutoTx.cs index 6ab83e794da65e286c605f26e559871b959f1bd3..fee6fea3204001b685c6fa2829888e0d58af3389 100644 --- a/AutoTx/AutoTx.cs +++ b/AutoTx/AutoTx.cs @@ -144,18 +144,23 @@ namespace AutoTx @" and a backslash, e.g. 'D:\'!"); configInvalid = true; } - // IncomingDirectory + + // spooling directories: IncomingDirectory + ManagedDirectory if (_config.IncomingDirectory.StartsWith(@"\")) { writeLog("ERROR: IncomingDirectory must not start with a backslash!"); configInvalid = true; } - _incomingPath = Path.Combine(_config.SourceDrive, _config.IncomingDirectory); - // ManagedDirectory if (_config.ManagedDirectory.StartsWith(@"\")) { writeLog("ERROR: ManagedDirectory must not start with a backslash!"); configInvalid = true; } + _incomingPath = Path.Combine(_config.SourceDrive, _config.IncomingDirectory); _managedPath = Path.Combine(_config.SourceDrive, _config.ManagedDirectory); + if (CheckSpoolingDirectories() == false) { + writeLog("ERROR checking spooling directories (incoming / managed)!"); + configInvalid = true; + } + if (_config.ServiceTimer < 1000) { writeLog("ERROR: ServiceTimer must not be smaller than 1000 ms!"); configInvalid = true; @@ -833,6 +838,19 @@ namespace AutoTx return CreateNewDirectory(path, false) == path; } + /// <summary> + /// Ensure the required spooling directories (managed/incoming) exist. + /// </summary> + /// <returns>True if all dirs exist or were created successfully.</returns> + private bool CheckSpoolingDirectories() { + var retval = CheckForDirectory(_incomingPath); + retval &= CheckForDirectory(_managedPath); + retval &= CheckForDirectory(Path.Combine(_managedPath, "PROCESSING")); + retval &= CheckForDirectory(Path.Combine(_managedPath, "DONE")); + retval &= CheckForDirectory(Path.Combine(_managedPath, "UNMATCHED")); + return retval; + } + #endregion } diff --git a/AutoTx/Resources/Install-Service.ps1 b/AutoTx/Resources/Install-Service.ps1 index c22c5b419014b16635a0690aa4ccc56a4b40b303..daf047001e0f09f7341804662b696f8449880e41 100644 --- a/AutoTx/Resources/Install-Service.ps1 +++ b/AutoTx/Resources/Install-Service.ps1 @@ -112,13 +112,6 @@ function Uninstall-FileCopyService { } -function Create-Directories { - $foo = New-Item -ItemType Container -Force -Path "$IncomingDir" - $foo = New-Item -ItemType Container -Force -Path "$($ManagedDir)\DONE" - $foo = New-Item -ItemType Container -Force -Path "$($ManagedDir)\PROCESSING" - $foo = New-Item -ItemType Container -Force -Path "$($ManagedDir)\UNMATCHED" -} - $LocalConfiguration = ".\ScriptsConfig.ps1" if (Test-Path $LocalConfiguration) { @@ -136,12 +129,10 @@ try { Write-Host "Service $($ServiceName) already installed, updating." Stop-MyService Copy-ServiceFiles - Create-Directories } catch { Copy-ServiceFiles Install-Service - Create-Directories } Start-MyService