Wie erstelle ich einen Installer für eine IIS Anwendung?

Kokujou

Lieutenant
Registriert
Dez. 2017
Beiträge
929
Yahoo!

Ich muss mal wieder eine Frage stellen. Undzwar habe ich eine .NET 5 (bald .NET 6) Anwendung und brauche dafür einen Installer.
Als Entwickler ist es ja einfach. Man installiert das Hosting Bundle, drückt in Visual Studio auf Starten und fertig.
Jetzt aber muss das ganze in einen Installer für einen Endnutzer der keine Entwicklungsumgebung hat.
(Installation des Hosting Bundles musst nicht zwangsläufig mit rein, das kann man ja auch als Zusatz dazulegen)

Ich weiß so gar nicht wie man mit sowas anfängt. es gibt zwar mal wieder einige Add-Ins für Visualst Studio, aber die meisten sehen aus als wären sie steinalt. Darum wollte ich wissen was denn so der modernste und natürlich der einfachste Weg ist.

Wie immer vielen Dank :)

PS: Für frühere Anwendungen haben wir den Wix Installer benutzt. Mal abgsehen von dem lächerlichen Namen höre ich aber von meinen Kollegen über diesen Installer nur beschwerden wie schrecklich er ist, das wäre also vermutlich nicht die Lösung.
 
Muss das mit IIS sein? Bei .NET Core braucht man das ja nicht mehr und kann die Anwendung direkt starten. Es würde also reichen die binaries einfach zu kopieren und auszuführen. Es gibt natürlich noch andere Sachen für die man einen Installer will. Aber sowas wie .NET Framework installieren ist z.B. nicht mehr nötig, das kann man direkt zu der Anwendung packen.
 
leider keine Option. ich schätze mal für Kunden wäre es nicht so schön dass man ein Konsolenfenster auf hat, was beim direkten Launch der Fall wäre. Es sollte unauffällig im hintergrund laufen.

Und wenn ich raten müsste (so tief bin ich nämlich noch nicht in der Materie), würde ich sagen dass in Zukunft noch viele IIS-Features benutzt werden... ich bin zwar erst bei dem neuen Projekt dabei aber ich nehme einfach mal zu Gunsten der leute an dass sie nicht ausgewürfelt haben dass sie den IIS verwenden :p
 
Kokujou schrieb:
Und wenn ich raten müsste (so tief bin ich nämlich noch nicht in der Materie), würde ich sagen dass in Zukunft noch viele IIS-Features benutzt werden... ich bin zwar erst bei dem neuen Projekt dabei aber ich nehme einfach mal zu Gunsten der leute an dass sie nicht ausgewürfelt haben dass sie den IIS verwenden
Früher ging es nur mit IIS, ich würde da nicht drauf wetten das da ein echter Grund dahintersteht. Aber ja, je mehr man da im Windows Ökosystem drin ist kann es auch sein das das Sinn macht.

Ich hab es noch nicht selbst gemacht, aber man kann eine ASP.NET Core Anwendung auch als Windows Service schreiben soweit ich das verstehe. Und einen Windows Service kann man mit einem Einzeiler in der Konsole installieren. Ist immer noch nicht ideal und nicht für Kunden die direkt Angst vor der Konsole haben.

Mich interessieren Antworten zu Installern auch, bisher kam ich jedes Mal wenn ich mir das Thema angesehen habe raus das ich das wirklich nicht machen will wenn es nicht unbedingt nötig ist. Auf den ersten Blick schien mir die einzige Wahl entweder uralte Sachen zu sein, oder sehr komplexe neue Sachen die einfach Overkill wären.
 
ja das befürchte ich auch... da wärs ja fast einfacher selbst ne installer EXE zu schreiben...
ich meine die published Files in die Program Files zu schieben ist jetzt nicht so kompliziert aber das ganze IIS zeug zu installieren schon eher...

nen Windows Service einzurichten finde ich interessant. sowas machen wir sogar, allerdings noch nicht für einen REST service. weißt du zufällig ob man da nach wie vor dieses Program.cs und Startup.cs pattern mit dependency injection und co verwenden kann? (ich will nicht so recht 'MVC' sagen da ich mit fachbegriffen zu sehr auf kriegsfuß stehe um zu wissen ob das richtig ausgedrückt wäre)
Ergänzung ()

Naja ich schätze mal allgemein wollen Kunden lieber einen Installer haben... stell dir mal eine Business anwendung vor die über eine Konsole installiert wird... wirkt glaube ich unseriös.
 
Zuletzt bearbeitet:
Wären COD oder Squirell eine Alternative?
Wenn es deutlich ausgewachsener sein soll dann noch NSIS oder IA.

Vielleicht könntest du kurz beschreiben was die Anwendung macht und ob es einen Supportplan dafür geben soll. Falls ja, wie soll der Support aussehen?
 
Der IIS ist ein Addon für Windows, die wenigsten werden das installiert haben und als Anwender würde ich nicht wollen, dass eine Anwendung einfach mal einen Windows-Service installiert, der im Hintergrund dauerhaft einen Webserver laufen lässt. Außerdem wird für den IIS ein Plugin benötigt, um ASP .NET 5 Sachen laufen zu lassen.
Warum eine Webanwendung beim Kunden auf dem lokalen Rechner laufen soll, ist schon von der Architektur her höchst fragwürdig. Eine Webanwendung gehört auf einen Server. Installer bietet man für Desktop-Anwendungen an.
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Es geht hier um eine OnPrem Umgebung. Der Kunde installiert mit unserer Anwendung ein lokales Netzwerk in seiner Firma. Also Stichwort Intranet. Ein Admin installiert unser Programm als server damit seine Angestellten sich damit verbinden können.

das Plugin - also das .NET 5 Hosting Bundle - wird als prerequisite angesehen, das schreiben wir in die Dokumentation.

Ich kenne aber wie gesagt auch keine IIS Features und wüsste nicht ob sie zwingend erforderlich sind, darum muss ich für diesen Post einfach mal annehmen dass meine Kollegen dafür schon ihre Gründe haben werden, solange bis man mir das erklärt. Und wie schon gesagt wurde ist ein Windows Service REST Service nicht unbedingt die beste Idee. Offenbar.... wobei icha uch nicht verstehe was der Unterschied zwischen IIS und Windows Service ist... der IIS ist ja auch nur ein Windows Service.

Über einen Supportplan weiß ich nichts
 
Die "Installation" einer Anwendung auf dem IIS sieht wie folgt aus. Zeug irgendwo in den IIS Root entpacken, im IIS aus dem Ordner eine Webanwendung machen und dabei einen AppPool zuweisen. Fertig. Das bekommt ein Admin auch ohne Installer hin.
Der IIS ist ein Webserver wie Apache oder nginx. Ein Windows-Service hat mit Web und Ports erstmal nix zu tun und unterliegt auch diversen Einschränkungen. .NET 5 bringt einen eigenen Webserver mit (kestrel). Der IIS hat einige Features (z.B. NTLM-Authentifizierung) bei denen sich der auch unter Linux laufende Kestrel etwas schwer tut. Ob die Anwendung im Kestrel hinter dem IIS läuft (eigener Prozess dotnet) oder direkt im IIS (w3wp Prozesse) liegt an der Konfiguration.
 
  • Gefällt mir
Reaktionen: Kokujou
naja was Admins "hinkriegen" die nicht vom IE11 wegkommen sei mal dahingestellt :p
aber gerade weil es so einfach ist sollte es doch einen guten installer dafür geben.

am liebsten wäre es mir in visual studio einfach nur rechtsklick und create installer machen zu können.
Vor allem weil visual studio dir ja sogar den IIS installiert. Das kann man in den launchsettings konfigurieren. die Logik in ne EXE schreiben und fertig.
 
Visual Studio installiert dir keinen IIS. Er bringt einen IIS-Express mit sich, wenn man im VS-Installer die Web-Geschichten anhakt. IIS und IIS-Express sind 2 grundverschiedene Dinge.
 
Kokujou schrieb:
stell dir mal eine Business anwendung vor die über eine Konsole installiert wird... wirkt glaube ich unseriös.
Ne AS400, so ziemlich alles unter Linux und was heute so in irgendwelchen Clouds läuft ist also keine "Business Anwendung"? Oder meinst du damit eher für so "Business Kasperle Anwendungen" für Leute, die in Excel schon eine Datenbank sehen?^^
Für solche "Admins" hab ich das hier gefunden, ist zwar für ältere .NET Sachen aber lässt sich ggf. adaptieren: https://docs.microsoft.com/de-de/visualstudio/deployment/installer-projects-net-core?view=vs-2019
 
  • Gefällt mir
Reaktionen: Kokujou
pvc-junkie schrieb:
Visual Studio installiert dir keinen IIS. Er bringt einen IIS-Express mit sich, wenn man im VS-Installer die Web-Geschichten anhakt. IIS und IIS-Express sind 2 grundverschiedene Dinge.
er installiert dir nicht den IIS aber er installiert dir die Anwendung in den IIS, wenn du verstehst. Detailiert ausgedrückt erstellt er dir nen App Pool und registriert die Anwendung dort, und vermutlich schreibt er auch die web.config in die IIS settings... oder der IIS liest die web.config automatisch je nachdem
 
Das ist soweit richtig. Er hängt das Verzeichnis des Webprojektes als ein neues virtuelles Verzeichnis im IIS ein, wenn man denn richtigen IIS verwendet. Das geht auch per PowerShell. Und ja, die web.config im Verzeichnis des Webprojektes wirkt sich dann automatisch und direkt auf den IIS aus.
 
  • Gefällt mir
Reaktionen: Kokujou
Zurück
Oben