diff --git a/agent-cs/setup.iss b/agent-cs/setup.iss index 46a273d..3e91bde 100644 --- a/agent-cs/setup.iss +++ b/agent-cs/setup.iss @@ -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;