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);
|
procedure CurStepChanged(CurStep: TSetupStep);
|
||||||
var
|
var
|
||||||
ResultCode: Integer;
|
ResultCode: Integer;
|
||||||
|
AppData: String;
|
||||||
begin
|
begin
|
||||||
if CurStep = ssInstall then begin
|
if CurStep = ssInstall then begin
|
||||||
// Service stoppen (neue Architektur)
|
// Service stoppen (neue Architektur)
|
||||||
Exec('net.exe', 'stop "IT Nexus Agent"', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
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" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||||
Exec('schtasks.exe', '/delete /tn "IT Nexus Agent Watcher" /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 "ITNexusAgent" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||||
Exec('schtasks.exe', '/delete /tn "ITNexusAgentWatcher" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
Exec('schtasks.exe', '/delete /tn "ITNexusAgentWatcher" /f', '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
|
||||||
// Autostart-Eintrag aus vorheriger Version entfernen (falls vorhanden)
|
// Autostart-Eintrag aus vorheriger Version entfernen (falls vorhanden)
|
||||||
RegDeleteValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'IT Nexus Agent');
|
RegDeleteValue(HKCU, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run', 'IT Nexus Agent');
|
||||||
Sleep(2000);
|
Sleep(1500);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|||||||
Reference in New Issue
Block a user