wake-up-neo.com

Installer: WIX oder Inno Setup?

Ich vergleiche diese beiden Tools. Der Eindruck den ich habe ist:

  • Inno Setup erzeugt kein MSI, kann aber alles, was WIX kann
  • WIX erstellt zwar eine MSI, weist jedoch eine steile Lernkurve auf

Stimmen Sie dieser Charakterisierung zu? Welche anderen Unterschiede gibt es? Wie bringt WIX # diese Geschichte auf den Kopf? Haben Sie Probleme bei der Deinstallation, da Inno Setup den Windows-Installer nicht verwendet? Kann Inno Setup auf Befehl eine Installation auf eine frühere Version zurückstufen - oder kann es nur Anwendungen installieren/aktualisieren?

43
Brent Arias

Ich habe lange nicht mehr mit MSI gearbeitet, als ich zu InnoSetup gewechselt bin, habe ich nie zurückgeschaut. 

Ich wollte nicht, dass meine Installation Kopfschmerzen verursacht. Ich brauchte etwas wo ich konnte "Set es und vergiss es"

Standardmäßig führt InnoSetup eine Deinstallation durch. Es kann einfache oder komplexe Installations- und Deinstallationsanforderungen erfüllen. 

Mit InnoSetup haben Sie verschiedene Möglichkeiten, Anwendungen zu aktualisieren. 

  • Anfangs haben wir die Überschreibungsmethode verwendet, die die vorhandene Installation überschrieben hat.
  • Vor kurzem haben wir eine automatische Deinstallation der vorherigen Version geändert, als die neue Version installiert wurde. 

Bei InnoSetup-Downgrades werden die älteren Versionen normalerweise deinstalliert und neu installiert.

44
Robert Love

Sie haben recht mit dem MSI-Teil und nicht mit dem MSI-Teil, und Sie haben Recht, dass die Lernkurve des MSI steiler ist. Aber beide haben Funktionen, die andere nicht haben. Lassen Sie mich Glytzhkof über die Vorteile von MSI zitieren.

Glytzhkof sagt hallo ;-) . Bitte lesen Sie meine beiden Originalantworten auf serverfault.com , um eine Übersicht der häufigsten Probleme mit MSI zu erhalten, die sich aus der steilen Lernkurve ergeben. Diese Antwort konzentriert sich hier auf die theoretischen Vorteile, die andere Antwort (im selben Thread) fasst die häufigsten MSI-Probleme von Kopf bis Fuß zusammen. Ergänzungen sind am willkommensten - ich habe gerade die häufigsten Probleme hinzugefügt.

  • Transparenz (Open Installer-Format) - Ein MSI kann überprüft und Überprüft werden. Dies ist ein großes Problem für Große Unternehmen. Mit der Ausnahme Von kompilierten benutzerdefinierten Aktionen ist eine MSI-Datei Eine "weiße Box". Wenn das Setup Etwas verrückt ändert, wie die systemweiten Netzwerkeinstellungen, können Sie Tatsächlich sehen.
  • Anpassbarkeit - Ein MSI kann über Transformationen angepasst werden, um den Anforderungen und Standards Der Organisation Zu entsprechen, wobei die Interoperabilität Mit den Aktualisierungen des Installationsprogramms des Anbieters weiterhin gewährleistet ist. Sie ändern das Installationsprogramm nicht selbst. Sie erstellen Ihre Anpassung in einer Separaten, organisationsspezifischen Datei , Die als Transformation bezeichnet wird. Sie können Benutzerdefinierte Aktionen deaktivieren. Im Allgemeinen Können Sie alles im Installationsprogramm und benutzerdefinierte Aktionen des schwarzen Kästchens Deaktivieren, indem Sie Den Verkäufer kontaktieren Erklärung. Diese Transformationsdateien werden auch verwendet, um eine MSI-Datei in verschiedenen Sprachen zu lokalisieren. Mehrere Transformationen können auf ein einzelnes MSI angewendet werden.
  • Standardisierung - MSI eignet sich nicht dazu, "etwas zuzulassen". Bietet einen umfassenden Rahmen für Für den Installer, der auch Das Deinstallationsprogramm enthält - alles im Standardformat. Die Benutzeroberfläche des Installationsprogramms ist Ebenfalls standardisiert mit integrierten Funktionen zur Unterstützung der unbeaufsichtigten Installation und Deinstallation, die Remote ausgelöst werden kann.
  • Verwaltung und Berichterstellung - Windows Installer verwaltet eine umfassende Datenbank aller Elemente, die ein Produkt installiert hat. Sie können Zuverlässig feststellen, ob ein Produkt Installiert ist, welche Funktionen Installiert wurden und welche Dateiversionen Installiert waren. Außerdem können Sie eine Liste aller Patches erhalten, die Auf das Basisprodukt angewendet wurden, sofern vorhanden.
  • Security - Anhand der umfassenden Installationsdatenbank Können Sicherheitslücken In den installierten Produkten erkannt werden. MSI umfasst auch die Prinzipien von "Erhöhte Rechte", die es einem eingeschränkten Benutzer ermöglichen, Die Installation eines Produkts auszulösen, für dessen Installation Administratorrechte erforderlich sind. Dies ist Teil der "Ankündigungsfunktion" , Mit der ein Administrator Installationsprogramme für Benutzer verfügbar machen kann, ohne dass Sie tatsächlich auf allen Installiert hat. Arbeitsstationen. Es besteht keine Notwendigkeit, Mit zeitweiligen Rechten zu stören, um Dinge Zum Laufen zu bringen.
  • Validation - MSI-Dateien können mit Validierungsregeln auf Überprüft werden, um sicherzustellen, dass sie eine Anzahl von Internen Konsistenzregeln (Als ICE bezeichnet) einhalten. . Unternehmen können Eigene ICE-Prüfungen erstellen, um Spezielle Unternehmensregeln und Anforderungen durchzusetzen. Dies ist sehr hilfreich bei QA.
  • Ausfallsicherheit - Die Funktion Admin-Installation des Windows-Installationsprogramms Bietet eine Standardmethode zum Extrahieren der Quelldateien Aus einem MSI. Diese Quelldateien Können dann auf einer Freigabe abgelegt werden und Steht allen Arbeitsstationen für die Installation von Zur Verfügung. Dies gewährleistet, dass Reparaturen durchgeführt werden, Deinstallations- und Änderungsvorgänge Abgeschlossen werden, ohne dass das Installationsmedium Auf CD oder einem ähnlichen Datenträger angefordert wird. Dies ist besonders wichtig für das Patchen und Aktualisierungsvorgänge, für die unter bestimmten Umständen Zugriff auf die alten Quelldateien erforderlich ist.
  • Rollback - Die Installation einer MSI-Datei wird normalerweise die Erstellung eines Wiederherstellungspunkts durch Auslösen. Außerdem werden alle Dateien und Elemente der Registrierung , Die während [ ersetzt oder überschrieben wurden. .____.] Die Installation wird gespeichert und wird wiederhergestellt, wenn die Installation nicht erfolgreich abgeschlossen wird. Dadurch wird sichergestellt, dass sich die Workstation In einem stabilen Zustand Befindet, selbst wenn die Installation fehlschlägt. Als Können Sie erwarten, dass schlecht entworfene MSI -Dateien die integrierten -Funktionen von Windows hier verletzen können. Weitere Informationen finden Sie in meinem anderen Beitrag in diesem Thread.
  • Patching & Updates - obwohl in Windows Das hochkomplexe Patching-Installationsprogramm vollständig verwaltet und Auf dem System registriert ist, kann der Sicherheitsstatus des Systems bestimmt, indem geprüft wird, was installiert wurde. Aktualisierungen sind auf einige grundlegende Varianten standardisiert. Dadurch können Aktualisierungen mit einem höheren Sicherheitsgrad Durchgeführt werden. Bereitstellungssysteme (.____.) Können berichten, welche Aktualisierungen fehlgeschlagen sind und warum.
  • Logging - Windows Installer bietet ein standardisiertes Protokollierungsmerkmal , Das den vorherigen Inkarnationen Weit überlegen ist, jedoch fast Übermäßig wortreich ist. Protokolldateien können mit Protokollanalysatoren Entschlüsselt werden, und mit Benutzerdefinierten Protokollierungsstufen kann Das Generieren zu großer Protokolldateien Mit unnötigen Informationen vermieden werden. [.____. .] Für Debugging-Zwecke ist die ausführliche Protokollierung Äußerst nützlich. Unter Rob Menschings Blog finden Sie eine gute manuelle Methode zum Lesen einer MSI-Protokolldatei.
31
Lars Truijens

Ich bin zu spät auf diesen Thread zu antworten. Ich habe Inno Setup seit Jahren für das Produkt meines Unternehmens verwendet. Es macht die meisten Dinge sehr gut, aber die größte Hürde sind benutzerdefinierte Aktionen. In Inno Setup muss eine Variante der Pascal-Sprache verwendet werden. Mit dem WiX Toolset kann und kann ich C # für meine benutzerdefinierten Aktionen verwenden, was für mich wesentlich komfortabler ist. Das ist zwar eine persönliche Präferenz, aber es ist der Hauptgrund, warum ich von einer ansonsten exzellenten Inno Setup-Plattform zu einer ebenfalls exzellenten WiX-Plattform gewechselt bin. Dies und die Tatsache, dass die Verwendung von MSI so viele Vorteile brachte, wurde bereits in einer anderen Antwort erwähnt.

Ehrlich gesagt war die Lernkurve von Pascal für mich größer als die von WiX, die das Buch verwendet, WiX 3.6: Ein Entwicklerhandbuch für Windows Installer XML .

7
Mike

Wir haben beides in unser Build-System integriert. 

Wir haben uns jedoch entschlossen, exe-Dateien von innosetup für Nicht-Geschäftskunden und msi aus einem einfachen Grund nur auf Anfrage zu veröffentlichen. 

Sie können mit MSI keine mehrfach lokalisierte Version des Setup-Programms versenden. Sie würden für jede Sprache einen Installer brauchen, und das ist enorm scheiße. Es könnte schweres Hacken geben, mit dem Sie die gesamte GUI umschreiben können. Dies ist jedoch nicht gut dokumentiert und es gibt keine Open Source, die gestohlen werden kann, und viel Arbeit. 

Die grafische Benutzeroberfläche ist der schlechteste Teil von WiX, der ansonsten Innosetup technisch überlegen ist.

Mit Innosetup ist es einfach, eine Exe in 5 Sprachen zu versenden. Wir haben bereits 6 Binaries [Free, Home, Pro - jeweils 32/64bit], also wäre die Explosion der Varianten einfach riesig und wenn Sie eine japanische Version mit einer japanischen Webseite vermarkten, kommt als Erstes nur eine englische Installation vor ein schlechter Eindruck.

Das MSI für Geschäftsbenutzer, die Gruppenrichtlinien usw. benötigen, ist nur in englischer Sprache verfügbar, und das ist für Unternehmensbenutzer ausreichend.

3
Lothar

Ich merke, dass diese Antwort sehr spät kommt. Aber ich traf diesen Beitrag und dachte, eine Antwort auf die Frage könnte einfach lauten: "Warum nicht beides?" (essen Sie Kuchen und haben Sie es auch) und auch "Warum die Mühe aufwenden, um beides zu implementieren, wenn ich nur die Mühe für einen aufwenden und den zweiten für praktisch frei bekommen könnte?"

Zu diesem Zweck präsentiere ich ein Inno Setup-Skript mit MSI-Unterstützung:

https://github.com/cubiclesoft/php-app-server/blob/master/installers/win-innosetup/yourapp.iss

Es gibt einige benutzerdefinierte Pascal-Funktionen, die hier verwendet werden, wenn /MSI={GUID} in der Befehlszeile übergeben wird und nützliche Änderungen am Skript ausgelöst werden (z. B. kein Deinstallationssymbol in Start oder Software).

Und ich präsentiere ein WiX-Skript mit Unterstützung für das oben genannte Inno Setup-Skript:

https://github.com/cubiclesoft/php-app-server/blob/master/installers/win-wix/yourapp.wxs

Das WiX-Skript bündelt die EXE-Datei des Inno Setup-basierten Installationsprogramms (die einzige Nutzlast) auf eine Weise, die das Inno Setup-Skript dazu veranlasst, die MSI-kompatiblen Schritte auszuführen, und die MSI ausreißen. Es ist nicht perfekt, aber es spart eine Menge Zeit, wenn Sie die Dinge auf die Inno-Setup-Weise ausführen lassen und dann die meisten Vorteile von MSI nutzen können (z. B. die stille Bereitstellung von GPO/SCCM/DSC), ohne an den Haaren zu ziehen. Dies funktioniert am besten, wenn meistens nur Dateien auf dem System und eine Handvoll Registrierungseinträge bereitgestellt werden (d. H. Eine Basis-App). Ich würde diesen Ansatz nicht für eine größere Anwendung empfehlen, in der es viele, viele Komponenten gibt. Wenn Sie es jedoch versuchen und es funktioniert, lassen Sie es mich wissen! Mit einer MSI-Version, die die Inno-Setup-EXE-Datei startet, können Sysadmins bei Bereitstellungen zumindest etwas Vernünftiges tun.

Beachten Sie, dass das WiX-Skript von den benutzerdefinierten Pascal-Funktionen auf der Inno Setup-Seite abhängt. Sie können nicht einfach irgendein altes Inno Setup-Installationsprogramm mit dem WiX-Skript einpacken und erwarten, dass es funktioniert (wird es wahrscheinlich nicht tun). Aber vielleicht unterstützt eine zukünftige Version von Inno Setup etwas Ähnliches.

1
CubicleSoft