Fix: Installer self-contained Publish + Selbstbereinigung vor Install (v2.5.0)
- dotnet publish lief zuvor mit --self-contained false → Installer nur 2MB ohne .NET-Runtime, schlägt auf Rechnern ohne .NET 8 fehl. Jetzt wieder self-contained Single-File wie historische Versionen (~53MB) - setup.iss: Vor Installation werden jetzt automatisch verwaiste IT-Nexus-Agent.exe Prozesse gekillt und Reste eines laufenden Self-Update-Zyklus (update.cmd, heruntergeladener Installer) entfernt - Behebt Installations-Instabilität durch File-Locks bei Upgrades Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -64,17 +64,31 @@ Type: files; Name: "{commonappdata}\IT Nexus Agent\agent.log"
|
||||
procedure CurStepChanged(CurStep: TSetupStep);
|
||||
var
|
||||
ResultCode: Integer;
|
||||
AppData: String;
|
||||
begin
|
||||
if CurStep = ssInstall then begin
|
||||
// Service stoppen (neue Architektur)
|
||||
Exec('net.exe', 'stop "IT Nexus Agent"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
// Alte Scheduled Tasks (v1.x PowerShell-Agent) entfernen
|
||||
Sleep(1500);
|
||||
|
||||
// Verwaiste Prozesse hart killen (überlebt Service-Stop manchmal, z.B. Consent/Capture-Helper)
|
||||
Exec('taskkill.exe', '/F /IM IT-Nexus-Agent.exe /T', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
Sleep(1000);
|
||||
|
||||
// Reste eines laufenden Self-Update-Zyklus entfernen (update.cmd + heruntergeladener Installer)
|
||||
AppData := ExpandConstant('{commonappdata}\IT Nexus Agent');
|
||||
if FileExists(AppData + '\update.cmd') then
|
||||
DeleteFile(AppData + '\update.cmd');
|
||||
if FileExists(AppData + '\IT-Nexus-Agent-Setup-Update.exe') then
|
||||
DeleteFile(AppData + '\IT-Nexus-Agent-Setup-Update.exe');
|
||||
|
||||
// Alte Scheduled Tasks (v1.x PowerShell-Agent + RDP-Helper-Reste) entfernen
|
||||
Exec('schtasks.exe', '/delete /tn "IT Nexus Agent" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
Exec('schtasks.exe', '/delete /tn "IT Nexus Agent Watcher" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
Exec('schtasks.exe', '/delete /tn "ITNexusAgent" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
Exec('schtasks.exe', '/delete /tn "ITNexusAgentWatcher" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||
// Autostart-Eintrag aus vorheriger Version entfernen (falls vorhanden)
|
||||
RegDeleteValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'IT Nexus Agent');
|
||||
Sleep(2000);
|
||||
Sleep(1500);
|
||||
end;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user