Wix-Dienst bei Deinstallation / Upgrade anhalten: Popup "Neustart" verhindern (Datei-in-Use-Situation)
Ich habe das Problem, dass sich der Neustart-Manager beim Deinstallieren (oder Aktualisieren) über eine in Verwendung befindliche Datei beschwert und daher einen Neustart erzwingt:
RESTART MANAGER: Detected that application with id 7000, friendly name 'javaw.exe', of type RmCritical and status 1 holds file[s] in use.
RESTART MANAGER: Did detect that a critical application holds file[s] in use, so a reboot will be necessary.
Der Service, über den sich RESTART MANAGER beschwert, ist ein Java-basierter Service. Der Dienst (hier myservice.exe genannt) startet rekursiv Java-Child-Prozesse:
Myservice.exe --run
↳ javaw.exe --someArguments
↳ someother.exe --someArguments
↳ javaw.exe --someMoreArguments
Das wix-Snippet für die Service-Definition:
<DirectoryRef Id="BINDIR">
<Component Id="myservice.exe" Guid="PUT-GUID-HERE">
<File Id="myservice.exe" KeyPath="yes" Vital="yes"
Source="SourceDir\bin\myservice.exe"/>
<ServiceInstall Id="MyService" Type="ownProcess"
Vital="yes" Name="MyService" DisplayName="My Service"
Description="My Service" Start="auto" Account=".\LocalSystem"
ErrorControl="normal" Interactive="no" Arguments="--run"/>
<ServiceControl Id="MyService" Name="MyService" Wait="yes" Remove="uninstall" Stop="uninstall" Start="install"/>
</Component>
</DirectoryRef>
Nun, der interessante Teil:
Der Dienst konnte bei der Installation von @ gestartet werdon uninstall:
wenn es nicht läuft, wird es entferntwenn ausgeführt wird und nur einem Neustart zustimmtit wird in der Tat innerhalb von 2-3 Sekunden gestoppt (ich schätze durch die StopServices-Aktion)und erfolgreich entfernt (durch RemoveServices-Aktion)Die Einträge in den Service * -Tabellen scheinen mir bisher gut zu sein.
ServiceControl-Table:
ServiceControl Name Event Arguments Wait Component_
MyService MyService 161 1 myservice.exe
ServiceInstall-Table:
ServiceInstall Name DisplayName ServiceType StartType ErrorControl LoadOrderGroup Dependencies StartName Password Arguments Component_ Description
MyService MyService My Service 16 2 32769 .\LocalSystem --run myservice.exe My Service
So, um alles aufzuschlüsseln: Es scheint, dass der Neustart-Manager nicht erkennt, dass die Java-Prozesse untergeordnete Prozesse sind und von der StopServices-Aktion gestoppt werden.
Ich habe hier ähnliche Probleme gefunden:https: //www.mail-archive.com/[email protected]/msg57924.htm
Wix Installer Problem: Warum markiert RestartManager Service als RMCritical und nicht als RMService
Vielen Dank im Voraus für jede Hilfe, um dieses Problem zu lösen!