diff --git a/MailPrintConfig/MailPrintConfig.csproj b/MailPrintConfig/MailPrintConfig.csproj
index dd16daf..4d09e5e 100644
--- a/MailPrintConfig/MailPrintConfig.csproj
+++ b/MailPrintConfig/MailPrintConfig.csproj
@@ -10,10 +10,12 @@
MailPrintConfig
true
win-x64
+ app.manifest
+
diff --git a/MailPrintConfig/MainForm.cs b/MailPrintConfig/MainForm.cs
index aa4d363..5d98a89 100644
--- a/MailPrintConfig/MainForm.cs
+++ b/MailPrintConfig/MainForm.cs
@@ -491,6 +491,17 @@ public class MainForm : Form
?? Path.Combine(AppContext.BaseDirectory, "appsettings.json");
}
+ private static bool IsServiceRunning()
+ {
+ try
+ {
+ var svc = System.ServiceProcess.ServiceController.GetServices()
+ .FirstOrDefault(s => s.ServiceName == ServiceName);
+ return svc?.Status == System.ServiceProcess.ServiceControllerStatus.Running;
+ }
+ catch { return false; }
+ }
+
private void BrowseFolder(int rowIndex)
{
string? result = null;
@@ -714,6 +725,23 @@ public class MainForm : Form
Directory.CreateDirectory(Path.GetDirectoryName(path)!);
File.WriteAllText(path, root.ToString(Formatting.Indented));
SetStatus($"Gespeichert: {path}", Color.DarkGreen);
+
+ // Dienst-Neustart anbieten wenn Dienst läuft
+ if (IsServiceRunning())
+ {
+ if (MessageBox.Show(
+ "Konfiguration gespeichert.\n\nDienst jetzt neu starten um Änderungen zu übernehmen?",
+ "Dienst neu starten?",
+ MessageBoxButtons.YesNo,
+ MessageBoxIcon.Question) == DialogResult.Yes)
+ {
+ _ = ServiceActionAsync("stop").ContinueWith(async _ =>
+ {
+ await Task.Delay(1500);
+ await ServiceActionAsync("start");
+ });
+ }
+ }
}
catch (Exception ex) { SetStatus($"Fehler: {ex.Message}", Color.Red); }
}
@@ -785,10 +813,10 @@ public class MainForm : Form
private async Task ServiceActionAsync(string action)
{
- var publishDir = Path.GetDirectoryName(txtConfigPath.Text) ?? AppContext.BaseDirectory;
- var exePath = Path.Combine(publishDir, "MailPrint.exe");
- var installPs = Path.Combine(publishDir, "..", "install-service.ps1");
- var uninstallPs= Path.Combine(publishDir, "..", "uninstall-service.ps1");
+ var publishDir = Path.GetDirectoryName(txtConfigPath.Text) ?? AppContext.BaseDirectory;
+ var exePath = Path.Combine(publishDir, "MailPrint.exe");
+ var installPs = Path.Combine(publishDir, "install-service.ps1");
+ var uninstallPs = Path.Combine(publishDir, "uninstall-service.ps1");
// Bestätigung nur bei Install/Deinstall
if (action is "install" or "uninstall")
@@ -818,12 +846,13 @@ public class MainForm : Form
{
FileName = "powershell",
Arguments = $"-NoProfile -NonInteractive {cmd}",
- UseShellExecute = true,
- Verb = "runas",
- WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
+ UseShellExecute = false,
+ CreateNoWindow = true,
+ RedirectStandardError = true
};
using var p = System.Diagnostics.Process.Start(psi)!;
+ string err = await p.StandardError.ReadToEndAsync();
await p.WaitForExitAsync();
if (p.ExitCode == 0)
@@ -840,7 +869,7 @@ public class MainForm : Form
MessageBox.Show(successMsg, "Erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
- SetStatus($"'{action}' fehlgeschlagen (Code {p.ExitCode})", Color.Red);
+ SetStatus($"'{action}' fehlgeschlagen (Code {p.ExitCode}): {err.Trim()}", Color.Red);
}
catch (Exception ex) { SetStatus($"Fehler: {ex.Message}", Color.Red); }
finally { DisableServiceButtons(false); RefreshStartStop(); }
diff --git a/MailPrintConfig/Program.cs b/MailPrintConfig/Program.cs
index eec6102..68c48fd 100644
--- a/MailPrintConfig/Program.cs
+++ b/MailPrintConfig/Program.cs
@@ -1,5 +1,12 @@
using MailPrintConfig;
-Application.EnableVisualStyles();
-Application.SetCompatibleTextRenderingDefault(false);
-Application.Run(new MainForm());
+class Program
+{
+ [STAThread]
+ static void Main()
+ {
+ Application.EnableVisualStyles();
+ Application.SetCompatibleTextRenderingDefault(false);
+ Application.Run(new MainForm());
+ }
+}
diff --git a/MailPrintConfig/app.manifest b/MailPrintConfig/app.manifest
new file mode 100644
index 0000000..07e6554
--- /dev/null
+++ b/MailPrintConfig/app.manifest
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+