Installieren/Registrieren von NTDiensten

Fragen zum AKInstallerMSI
Antworten
renem
Beiträge: 10
Registriert: 18.11.2010, 18:43

Installieren/Registrieren von NTDiensten

Beitrag von renem »

Guten Tag Herr Kapust

Wiedermal ein paar Installations-Themen

1. Frage:
Wie werden bei der Installation die NTDienste registriert (SC.exe, InstallUtil.exe, anderes Tool)? Davon abhängig ist ja, ob unsere Einstellungen beruhend auf der .net-Klasse System.Configuration.Installer berücksichtigt werden.

2. Frage:
Aus diversen Gründen müsste ich bei gewissen Kunden einen Dienst mehrfach installieren können (Unterschiedliche Dienstkonten, Berechtigungen, Lastausgleich, Versionswechsel usw). Besteht die Möglichkeit, dass ich dem Installer irgendwie während der Installation den Dienstnamen u. den Anzeigename (muss ja auch eindeutig sein) dynamisch mitteilen kann?
Grundsätzlich stehen die Angaben ja in den Tabellen ServiceControl und ServiceInstall.

Über Themen wie "Was passiert bei der Deinstallation/Update/Repairmode usw", mache ich mir nachher noch Gedanken, wenn ich weiss, ob es überhaupt möglich ist.

Es Grüsst
renem
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Installieren/Registrieren von NTDiensten

Beitrag von Andreas Kapust »

Guten Tag!

1: Der WI benutzt die Nativ-Funktionen.

2: Sie können den Dienst mehrfach aufnehmen und Name und DisplayName per Eigenschaft zuteilen. Der Identifier muss natürlich eindeutig sein. Regeln können Sie dies über die Komponenten.

Beachten Sie aber, das Assemblies, die in den GAC installiert werden nicht über diese Funktionen als Dienst gestartet werden können. Dieses müsste per CA nach MsiPublishAssemblies geschehen.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
renem
Beiträge: 10
Registriert: 18.11.2010, 18:43

Re: Installieren/Registrieren von NTDiensten

Beitrag von renem »

Guten Tag!

Ich habe das mit dem Namen und DisplayNamen nochmals mit Eigenschaften getestet. Das funktioniert jetzt Problemlos (irgendwas muss beim ersten mal falsch gewesen sein).

Nun habe ich aber das Problem beim Deinstallieren.

Mein MSI lässt drei Instanzen zu, entsprechend wird der Dienst drei mal registriert. Dienstname und Displayname kann der Techniker beim Installieren einfach über eine Textbox eingeben, diese ist an eine Eigenschaft gebunden, welche im Servicename/-displayname eingebunden ist. Soweit so gut.
Wenn ich jetzt aber eine der Instanzen deinstalliere, kann er den Dienst nicht mehr entregistrieren da ja die Eigenschaft nicht gesetzt ist und er entsprechend nicht den vollen Namen kennt.
Mein Lösungsansatz wäre jetzt, beim Installieren in das Installationsverzeichnis eine XML-Datei zu generieren, welche die zwei Angaben beinhaltet. Beim Deinstallieren/Updaten könnte er dann bei den Vorbedingungen die Werte herauslesen.
Wenn ich jetzt aber eine der drei Instanzen entfernen möchte, liest er immer (wohl aufgrund des letzten Installationspfades?) die XML-Datei aus der zuletzt installierten Instanz, was natürlich dazu führt, dass er den falschen Dienst abmeldet (Deinstallieren funktioniert ansonsten wie gewünscht). Wie kann ich die XML-Datei aus dem richtigen Verzeichnis aufzwängen?
Oder haben Sie eine elegantere Lösung anstelle der XML-Dateien?

Es ist mir ausserdem aufgefallen, dass bei der Installation einer weiteren Instanz immer das Installationsverzeichnis der vorhergehenden Installation als Default vorgeschlagen wird. Müsste nicht prinzipiell das Ürsprüngliche Installationsverzeichnis vorgeschlagen werden?

Es grüsst
renem
Andreas Kapust
Administrator
Beiträge: 1083
Registriert: 29.02.2004, 15:51
Wohnort: Hamburg
Kontaktdaten:

Re: Installieren/Registrieren von NTDiensten

Beitrag von Andreas Kapust »

Guten Tag!

Bitte mailen Sie mal die Projektdatei, damit ich mir ein Bild über den gesamten Aufbau machen kann.
Mit freundlichen Grüßen,
AKApplications, Andreas Kapust
Antworten