diff --git a/.gitignore b/.gitignore index 98c4cdd..997839b 100644 --- a/.gitignore +++ b/.gitignore @@ -2,7 +2,6 @@ bin/ obj/ publish/ -*.zip # Skripte aus publish/ im Root behalten !install-service.ps1 diff --git a/Directory.Build.props b/Directory.Build.props deleted file mode 100644 index e19a91c..0000000 --- a/Directory.Build.props +++ /dev/null @@ -1,22 +0,0 @@ - - - true - win-x64 - - $([System.String]::Copy('1.0.0')) - - - - - - - - - $(GitTagRaw.TrimStart('v').Trim()) - $(GitTagClean) - $(GitTagClean).0 - $(GitTagClean).0 - - - - diff --git a/MailPrint/MailPrint.csproj b/MailPrint/MailPrint.csproj index bf4ea0a..0406fa1 100644 --- a/MailPrint/MailPrint.csproj +++ b/MailPrint/MailPrint.csproj @@ -8,10 +8,9 @@ MailPrint MailPrint Exe - true - win-x64 - true - $(NoWarn);1591 + 1.0.0 + 1.0.0.0 + 1.0.0.0 diff --git a/MailPrint/Program.cs b/MailPrint/Program.cs index 50c158b..3e3c5a8 100644 --- a/MailPrint/Program.cs +++ b/MailPrint/Program.cs @@ -51,34 +51,7 @@ try builder.Services.AddControllers(); builder.Services.AddEndpointsApiExplorer(); builder.Services.AddSwaggerGen(c => - { - c.SwaggerDoc("v1", new() { Title = "MailPrint API", Version = "v1" }); - - // XML-Doku aus /// Kommentaren in OpenAPI uebernehmen - var xmlPath = Path.Combine(AppContext.BaseDirectory, "MailPrint.xml"); - if (File.Exists(xmlPath)) - c.IncludeXmlComments(xmlPath); - - // API-Key-Security im Schema dokumentieren -> generierte Clients - // setzen den Header automatisch, Swagger UI hat Authorize-Button - var scheme = new Microsoft.OpenApi.Models.OpenApiSecurityScheme - { - Name = "X-Api-Key", - Type = Microsoft.OpenApi.Models.SecuritySchemeType.ApiKey, - In = Microsoft.OpenApi.Models.ParameterLocation.Header, - Description = "API-Key fuer alle /api/* Endpunkte. Konfiguriert in MailPrintConfig.", - Reference = new Microsoft.OpenApi.Models.OpenApiReference - { - Type = Microsoft.OpenApi.Models.ReferenceType.SecurityScheme, - Id = "ApiKey" - } - }; - c.AddSecurityDefinition("ApiKey", scheme); - c.AddSecurityRequirement(new Microsoft.OpenApi.Models.OpenApiSecurityRequirement - { - [scheme] = Array.Empty() - }); - }); + c.SwaggerDoc("v1", new() { Title = "MailPrint API", Version = "v1" })); var app = builder.Build(); app.UseSwagger(); diff --git a/MailPrintConfig/MailPrintConfig.csproj b/MailPrintConfig/MailPrintConfig.csproj index 4d09e5e..f78cb16 100644 --- a/MailPrintConfig/MailPrintConfig.csproj +++ b/MailPrintConfig/MailPrintConfig.csproj @@ -8,14 +8,13 @@ true MailPrintConfig MailPrintConfig - true - win-x64 - app.manifest + 1.0.0 + 1.0.0.0 + 1.0.0.0 - diff --git a/MailPrintConfig/MainForm.cs b/MailPrintConfig/MainForm.cs index 5d98a89..aa4d363 100644 --- a/MailPrintConfig/MainForm.cs +++ b/MailPrintConfig/MainForm.cs @@ -491,17 +491,6 @@ 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; @@ -725,23 +714,6 @@ 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); } } @@ -813,10 +785,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") @@ -846,13 +818,12 @@ public class MainForm : Form { FileName = "powershell", Arguments = $"-NoProfile -NonInteractive {cmd}", - UseShellExecute = false, - CreateNoWindow = true, - RedirectStandardError = true + UseShellExecute = true, + Verb = "runas", + WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden }; using var p = System.Diagnostics.Process.Start(psi)!; - string err = await p.StandardError.ReadToEndAsync(); await p.WaitForExitAsync(); if (p.ExitCode == 0) @@ -869,7 +840,7 @@ public class MainForm : Form MessageBox.Show(successMsg, "Erfolgreich", MessageBoxButtons.OK, MessageBoxIcon.Information); } else - SetStatus($"'{action}' fehlgeschlagen (Code {p.ExitCode}): {err.Trim()}", Color.Red); + SetStatus($"'{action}' fehlgeschlagen (Code {p.ExitCode})", 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 68c48fd..eec6102 100644 --- a/MailPrintConfig/Program.cs +++ b/MailPrintConfig/Program.cs @@ -1,12 +1,5 @@ using MailPrintConfig; -class Program -{ - [STAThread] - static void Main() - { - Application.EnableVisualStyles(); - Application.SetCompatibleTextRenderingDefault(false); - Application.Run(new MainForm()); - } -} +Application.EnableVisualStyles(); +Application.SetCompatibleTextRenderingDefault(false); +Application.Run(new MainForm()); diff --git a/MailPrintConfig/app.manifest b/MailPrintConfig/app.manifest deleted file mode 100644 index 07e6554..0000000 --- a/MailPrintConfig/app.manifest +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - diff --git a/build.bat b/build.bat new file mode 100644 index 0000000..df03f5f --- /dev/null +++ b/build.bat @@ -0,0 +1,17 @@ +@echo off +setlocal +set PROJ=C:\Users\janwu\OneDrive - dimedtec GmbH\Programmierung\MailPrint\MailPrint\MailPrint.csproj +dotnet restore "%PROJ%" +if errorlevel 1 goto :err +dotnet build "%PROJ%" -c Release +if errorlevel 1 goto :err +dotnet publish "%PROJ%" -c Release -r win-x64 --self-contained false -o "C:\Users\janwu\OneDrive - dimedtec GmbH\Programmierung\MailPrint\publish" +if errorlevel 1 goto :err +echo. +echo === BUILD ERFOLGREICH === +goto :end +:err +echo. +echo === BUILD FEHLGESCHLAGEN === +exit /b 1 +:end