Wie erstelle ich ein InstallShield LE-Projekt, um einen Windows-Dienst zu installieren?


104

Ich habe Visual Studio 2012 gestern heruntergeladen, als es auf MSDN veröffentlicht wurde. Ich habe festgestellt, dass einige der Projekttypen, die wir 2010 hatten, weg sind oder anders. Der größte Unterschied für mich ist derzeit das Entfernen des Windows Installer-Projekts. Jetzt müssen wir InstallShield LE (Limited Edition) verwenden. Das Problem hier ist, dass ich eine Menge Windows-Dienste schreibe und nicht sehe, wie InstallShield LE eingerichtet wird. Es scheint, dass wir (meine Firma) in Lizenzen für die Professional Edition investieren müssen.

Hat jemand eine Möglichkeit gefunden, Dienste in InstallShield LE zu installieren? Wenn Sie das Windows Installer-Projekt verwenden, legen Sie einfach die benutzerdefinierten Aktionen fest.


1
Die Verwendung von benutzerdefinierten InstallUtil-Aktionen in Visual Studio Deployment-Projekten war eigentlich eine sehr schlechte Praxis. Grundsätzlich wird das Rad mit einer fragilen Lösung neu erfunden, da das zugrunde liegende Authoring-Tool die nativen Funktionen von MSI nicht offengelegt hat.
Christopher Painter

Antworten:


161

Gehen Sie für Visual Studio 2012 und InstallShield LE wie folgt vor:

  • Führen Sie den InstallShield-Projektassistenten aus und fügen Sie die primäre Ausgabe Ihres Dienstes zum Abschnitt Anwendungsdateien hinzu.
  • Nachdem Sie mit dem Projektassistenten fertig sind, doppelklicken Sie unter Schritt 2 des Setup-Projekts auf das Element "Dateien".

Abschnitt Dateien

  • Klicken Sie mit der rechten Maustaste auf die primäre Ausgabe Ihres Dienstes und gehen Sie zu Eigenschaften.
  • Klicken Sie auf die Registerkarte "COM- und .NET-Einstellungen" und aktivieren Sie das Kontrollkästchen "Installer Class". Geben Sie hier die Bildbeschreibung ein
  • OK klicken

Sobald Sie Ihre Installation erstellt und ausgeführt haben, wird Ihr Dienst im Windows Services-Snap-In angezeigt.

Beachten Sie, dass dies voraussetzt, dass Sie Ihrem Serviceprojekt ein "Projektinstallationsprogramm" hinzugefügt haben (Klicken Sie mit der rechten Maustaste auf das Service Design Sheet und klicken Sie auf "Installationsprogramm hinzufügen"). Ich kann diese Arbeit unter Windows 8 mit Visual Studio 2012 / InstallShield LE bestätigen.


Ok, das funktioniert auch in VS 2010 und Win 7 Pro. Ich habe es in VS 2012 noch nicht ausprobiert, aber das sollte es tun. Vielen Dank.
Fizch

3
Ist es möglich, dass ein Dialogfeld den Benutzer nach der Datenbankverbindungszeichenfolge (Server, Authentifizierung und Datenbankname) fragt und die Windows-Dienstkonfigurationsdatei mit InstallShield LE aktualisiert?
Adelia Benalius

2
Dies ist eine ziemlich gute Anleitung: c-sharpcorner.com/uploadfile/cb88b2/… .
Jonty


1
Diese Option startet den Dienst nach der Installation nicht. Um den Dienst zu installieren und zu starten, wählen Sie im Solution Explorer 3. Konfigurieren Sie das Zielsystem> Dienste .
Rajeev

24

Ich habe kürzlich VS 2012 mit Install Shield LE installiert. Zuerst wurde nach einem Build immer wieder ein interner ISEXP-5036-Serverfehler angezeigt (dies geschah nach dem Einrichten eines ISLE-Projekts und dem Ausführen des Install Shield-Projektassistenten). Schließlich stellte ich fest, dass versucht wurde, das MSI im DVD-5-Medientyp zu erstellen, bei dem es fehlschlug. Aus irgendeinem Grund wird beim erneuten Erstellen der Lösung von Grund auf erkannt, dass nur die Medientypen CD_ROM und SingleImage erstellt werden, die funktionieren.

Um den 5036-Fehler zu beheben, klicken Sie in VS 2012 (oberes Menü) auf die Registerkarte Erstellen, wählen Sie Konfigurationsmanager aus, und Sie sollten sehen, dass Ihre IS-Setup-Datei in der DVD-5-Konfiguration ausgewählt ist. Ändern Sie dies in CD_ROM und klicken Sie auf Schließen. Sobald Sie erstellt / neu erstellt haben, wird es ohne IS 5036-Fehler abgeschlossen.

Geben Sie hier die Bildbeschreibung ein


2
Das hat vielleicht nichts mit seinem Problem zu tun, aber es hat meins gelöst. Danke! +1
David

Das gleiche Problem für mich von Anfang an, die Standardinstallation hatte DVD-5 als Konfiguration und das Setup konnte nicht erstellt werden. Mit deinem Tipp habe ich es in Single Image geändert und ohne Probleme gebaut!
Nick Bork

DVD-5 wurde ausgewählt. Einfache aber gute Antwort
Beaumondo

6

Während die Verwendung des Kontrollkästchens der Installationsklasse in einigen Fällen funktioniert, tritt möglicherweise der folgende Fehler auf:

Fehler 1001. Der angegebene Dienst ist bereits vorhanden

Hier ist ein Auszug aus diesem Link, wie Sie dieses Problem beheben können:

Für Fehler: Fehler 1001. Der angegebene Dienst ist bereits vorhanden

Dieser Fehler tritt auf, wenn die Komponente, die einen .NET-Dienst installiert, falsch konfiguriert ist und ".NET Installer Class" auf "Ja" gesetzt ist. Die Methode zum Installieren eines .NET-Dienstes besteht darin, die Ansicht "Komponente \ Erweiterte Einstellungen \ Dienste" zu verwenden, nicht die Einstellung ".NET-Installationsklasse". Durch das Erstellen von Definitionen in der Ansicht Komponente \ Erweiterte Einstellungen \ Dienste werden Einträge in den Tabellen Windows Installer ServiceControl und ServiceInstall erstellt. Diese Einträge werden von der Windows Installer-Aktion "InstallServices" verwendet, um den Dienst zu installieren.



Es ist in der Premier Edition des Installationsprogramms (ffs! Microsoft, warum haben Sie den Setup-Projekttyp entfernt!). Wenn Sie die Premier Edition haben. community.flexerasoftware.com/…
Paul Hutchinson

Ich habe festgestellt, dass dies mit der Länge des Setup-Projektnamens zusammenhängt, dh ändern Sie den Namen Ihres Setup-Projekts in einen kürzeren Namen wie "Installieren" oder "Setup".
Jonty

4

Wenn Ihr Projekt .NET ist, versuchen Sie es, und verwenden Sie die ServiceProcessInstaller-Klasse mit InstallShield LE.

Damit es mit InstallShield funktioniert, müssen Sie in den Baum "Dateien" von InstallShield gehen und mit der rechten Maustaste auf Ihre Datei klicken. Aktivieren Sie dann das Kontrollkästchen für "Installer-Klasse" auf der Registerkarte "COM- und .NET-Einstellungen".

Ich habe es zum Laufen gebracht, aber ich hatte Probleme auf einigen Betriebssystemen wie Windows 2008R2. Ihr Kilometerstand kann variieren.

Hier ein Beispiel: http://www.codeproject.com/Articles/14353/Creating-a-Basic-Windows-Service-in-C


1
Es tut uns leid. Das habe ich bis heute nicht gesehen. Es sieht so aus, als wäre es so ziemlich die gleiche Antwort wie die, die ich akzeptiert habe. Ich werde es +1.
Fizch

4

Ich hatte alle möglichen Probleme damit.

Wie folgt.

  1. Das Herunterladen von InstallShield dauert ewig
  2. Der Registrierungsprozess ist ein Schmerz.
  3. Die Konfigurationsoptionen sind verwirrend und zu komplex.
  4. Die akzeptierte Lösung für diesen Thread ist ein Hack und funktioniert nicht immer - siehe 1001 in der Dokumentation. Im Wesentlichen müssen Sie die Paywall durchlaufen, um die richtigen Konfigurationsoptionen für die Installation eines Windows-Dienstes zu erhalten.

Wie an anderer Stelle erwähnt, bestand die Lösung für mich darin, InstallShield aufzugeben

Geben Sie hier die Bildbeschreibung ein

Von diesem Punkt an sehr einfach.

Bearbeiten: Aktualisieren - Installieren Sie die neueste Version von hier https://wix.codeplex.com/releases/view/115492 für vs 2013/2015


3

Visual Studio-Setup-Projekte sind als Visual Studio-Erweiterung wieder in VS 2013 enthalten.

https://visualstudiogallery.msdn.microsoft.com/9abe329c-9bba-44a1-be59-0fbf6151054d

Bitte aktualisieren Sie Ihre Lösung und Projekte auf VS 2013. Wenn Sie sich noch in VS 2010 befinden, ist es wahrscheinlich besser, wenn Sie direkt auf VS 2013 aktualisieren.

Meine Erfahrung mit Installsheild LE ist, dass es sehr eigenartig ist, aber sobald Sie die Tricks herausgefunden haben, ist es einfacher zu verwenden. Ich denke jedoch, dass die Limited Edition eine Möglichkeit für Microsoft und Flexera ist, die voll funktionsfähige Edition zu verkaufen. Mit anderen Worten, zuerst zahlen wir Microsoft viel Geld für Visual Studio und dann ihren Partner (im Bereich Kriminalität) mehr für Installsheild. Schlechte Strategie, die nicht geklappt hat, da sie die Setup-Projekte in VS 2013 zurückbringen mussten.


2

Ich habe über dieses Thema geschrieben:

Erweitern von InstallShield mithilfe von Windows Installer XML - Windows Services

Grundsätzlich erstellen Sie ein Zusammenführungsmodul mit WiX, um den Dienst zu kapseln, und fügen ihn dann Ihrem Installshield-Projekt hinzu. (Stellen Sie sicher, dass Sie dem INSTALLDIR-Verzeichnis zugeordnet sind, um sicherzustellen, dass Ihre Datei dort abgelegt wird, wo Sie es erwarten.) Erstellen und testen Sie auf einer VM. Stück Kuchen.


Eine andere Technologie zum Lernen? Bis gestern hatte ich noch nichts von WIX gehört. Ich weiß immer noch nichts darüber. Es hört sich so an, als würde dieser ganze Prozess für etwas, das früher nur ein paar Klicks dauerte, immer schwieriger.
Fizch

Es dauert nur ein paar Klicks, um ein Installationsprogramm auszuführen . Das Verfassen war schon immer weitaus aufwändiger.
Christopher Painter

Es dauerte auch nur ein paar Klicks, um das Installationsprogramm einzurichten. Sie mussten den Titel, den Hersteller usw. eingeben, aber Sie mussten nicht ein ganzes XML-Dokument erstellen. Was kannst du mir über WIX erzählen? Ich kann sagen, dass Sie offensichtlich viel darüber wissen. Was ist es? Woher bekomme ich es? Wie benutze ich es? Usw. ...
Fizch

Ich schreibe seit 16 Jahren Installationsprogramme und nur einfache Installationen mit einer einzigen EXE-Datei und Verknüpfung bringen mich mit nur wenigen Klicks zum Autor. In beiden Fällen finden Sie WiX auf CodePlex und es gibt ein Buch zu diesem Thema. Die zugrunde liegende Technologie ist Windows Installer. Diese Dokumentation finden Sie im Platform SDK und auf MSDN.
Christopher Painter

5
Ernsthaft "es gibt ein Buch zu diesem Thema ... Dokumente im SDK". ?? Chris, wir versuchen nur, unsere 2010-Lösungen auf 2012 zu migrieren, und die Installation / Einrichtung hält uns auf. MS, bringen Sie VS Setup / Installer visualstudio.uservoice.com/forums/121579-visual-studio/…
JimSTAT


2

Ich habe gerade einige Probleme beim Finden des Installationsprogramms, wie in der Antwort angegeben. Also hier ist es wie.

Doppelklicken Sie in Ihrem Windows-Dienstprojekt auf Ihre Dienstklasse. Ein leerer Bildschirm mit dem Text "Um Komponenten zu Ihrer Klasse hinzuzufügen, ziehen Sie sie aus der Toolbox und verwenden Sie das Eigenschaftenfenster, um ihre Eigenschaften festzulegen ..." Klicken Sie mit der rechten Maustaste auf eine beliebige Stelle außer auf die Links und wählen Sie "Installer hinzufügen"

Tschüss


0

Denken Sie daran, dass alle oben genannten Erklärungen Ihnen nicht helfen, wenn Sie später ein Upgrade dieses Setups erstellen möchten. InstallShiled LE kann den ausgeführten Dienst beim Upgrade nicht stoppen. Sie können dies auch nicht über das Windows Service Installer -> BeforeInstall-Ereignis tun.


0

Wollte das hier setzen;

Auf VS 2015 stieß ich dabei bei der Installation wiederholt auf den Fehler 1001.

Die Antwort auf dieser Seite erklärte, dass Sie in den neueren Versionen (alles nach 2012) anscheinend die Option für die Installationsklasse explizit deaktiviert lassen und dann Ihren Windows-Dienst im Abschnitt Dienste unter Schritt 3 des Installationsprojekts hinzufügen müssen:

Fehler 1001 bei der Installation des benutzerdefinierten Windows-Dienstes

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.