Unterschied zwischen einer eigenständigen ausführbaren Datei und einer installierten ausführbaren Datei?


17

Zumindest unter Windows ist mir aufgefallen, dass Sie eine direkte, statisch verknüpfte ausführbare Datei herunterladen und direkt starten oder ein eigenes Programm schreiben und ausführen (auch dynamisch) können, ohne es installieren zu müssen.

Das bringt mich zu meinem Hauptpunkt ... Was ist der Zweck des Installationsprozesses? Ich meine außerdem vielleicht die Windows Registry . Aus praktischen Gründen und zu Zwecken der Verwendung ist es jedoch möglich, ein einzelnes, unabhängiges, eigenständiges Programm auszuführen, das nichtflüchtig gespeichert und über das Dateisystem des Geräts, auf dem es sich befindet, aufgerufen und auf dem Betriebssystem ausgeführt werden kann. Was ist das große Problem bei diesem ganzen "Install this" -Geschäft, wenn viele großartige Programme praktisch jeder Größenordnung perfekt funktionieren können, ohne eine Installationskonfiguration durchlaufen zu müssen? Es verwirrt mich ein bisschen und abgesehen von einer Datenbank oder anderen Metadaten- / Zugriffskonfigurationssystemen, was ist der wirkliche Unterschied hier, wenn das letztere (eine installierte ausführbare Datei) die gleiche Leistung erbringt und wie ein eigenständiges funktioniert?

Gibt es hier einen Unterschied zwischen einem nicht installierten und einem installierten Programm?

PS: Dies muss nicht nur für Windows-Betriebssysteme gelten, sondern für alle, die eine ähnliche Funktion implementieren.

Antworten:


16

Es gibt mehrere Gründe, warum Programme als Installer und nicht als eigenständige ausführbare Dateien angeboten werden:

Bedenken hinsichtlich der Dateigröße

  • Programme mit vielen großen Abhängigkeiten können webbasierte Installationsprogramme bündeln, die die Abhängigkeiten herunterladen und an einem gemeinsamen Speicherort ablegen, sodass sie von mehreren Programmen gemeinsam genutzt werden können. DirectX ist beispielsweise eine sehr große Bibliothek. Wenn jedes einzelne Programm auf Ihrem System, das von DirectX abhängt, nur die gesamte DirectX-Laufzeit damit bündelt, würde es ein gutes Stück Platz verbrauchen. Dies scheint im Alter von 4-TB-Festplatten keine Rolle zu spielen, aber wenn man bedenkt, dass SSDs eine viel geringere Kapazität haben und häufig in Ultrabooks verwendet werden, von denen einige nur 64 GB Speicherplatz haben. Und natürlich gibt es neben DirectX noch viele andere gemeinsam genutzte Bibliotheken.

  • Programme, die sowohl sehr umfangreich als auch ständig aktualisiert sind, lassen sich am besten als Sammlung kleiner Dateien zusammen mit einem Startprogramm oder Aktualisierungsprogramm verteilen, das das Internet auf Aktualisierungen überprüft. Wenn Aktualisierungen vorhanden sind, laden Sie nur die erforderlichen Änderungen herunter. Wenn alle großen Programme als eine einzige monolithische ausführbare Datei ausgeliefert würden, müsste die gesamte ausführbare Datei für den Patch-Vorgang wahrscheinlich erneut heruntergeladen werden, da das Patchen der ausgeführten ausführbaren Datei auf der Festplatte aufgrund von Dateisperren nahezu unmöglich ist. Da der Updater außerdem wissen muss, wo sich seine Dateien befinden, speichert er diesen Verzeichnispfad häufig an einem bekannten Speicherort in der Registrierung.

Bedenken hinsichtlich der Benutzerfreundlichkeit

  • Mit Installationsprogrammen für sehr große Programme wie Visual Studio und Microsoft Office kann der Benutzer die Installation bestimmter Features deaktivieren, wenn er weiß, dass sie niemals benötigt werden. Dies hat drei potenzielle Vorteile: Es reduziert den Speicherplatzverbrauch. Dies kann die Downloadzeit und den Bandbreitenverbrauch verringern, wenn das Installationsprogramm ein Web-Downloader ist. und es kann "Durcheinander" und "Aufblähen" auf dem Computer des Benutzers, weniger Startmenü- / Desktopverknüpfungen, weniger Startprogramme usw. reduzieren.

  • Installationsprogramme für komplizierte Programme werden häufig mit Konfigurationsoptionen geliefert, die der Benutzer mithilfe einer benutzerfreundlichen grafischen Oberfläche als Teil des Installationsprogramms einrichten kann. Sehen Sie sich zum Beispiel die MySQL- oder SQL Server-Installationsprogramme an, die Sie durch den gesamten Prozess der Inbetriebnahme Ihres Datenbankservers führen, bevor Sie im Installationsprogramm auf "Fertig stellen" klicken.

  • Installateure können den Benutzer zur Eingabe erforderlicher Informationen auffordern, z. B. von Lizenzschlüsseln, die nur einmal eingegeben werden müssen. Dies kann das Design des Programms selbst vereinfachen und die Anzahl der Aufgaben reduzieren, die es beim Starten ausführen und prüfen muss. Dies führt auch zu dem Benutzer, der das Vertrauen , dass, sobald das Programm erfolgreich installiert wurde , sollte es „nur Arbeit“ - gibt es nicht mehr „Fallstricke“ im Programm , das ihnen von dessen Verwendung halten kann.

Kompatibilitätsprobleme

  • Einige Programme stehen in Konflikt mit anderen Programmen. Dies ist eine einfache und unglückliche Tatsache der Softwareentwicklung. Vor der Installation eines Programms, bei dem Konflikte mit anderen Programmen bekannt sind, ist es häufig hilfreich, zuerst das System zu überprüfen, um festzustellen, ob ein inkompatibles Programm installiert ist. Der Benutzer kann dann benachrichtigt werden, wenn dies der Fall ist. Beispielsweise besteht in älteren Versionen von VMware und VirtualBox ein sehr gefährliches Inkompatibilitätspotenzial, das zu einem Blue Screen of Death führte, da ein Programm versuchen würde, eine spezielle Anweisung für den Virtualisierungsprozessor zu verwenden, nachdem sie bereits vom anderen Produkt für den Benutzer reserviert wurde . Wenn Sie dem Benutzer lediglich das Endprodukt ohne Installationsprogramm zur Verfügung stellen würden, müssten Sie bei jedem Produkt prüfen, ob inkompatible Produkte vorhanden sind Start Ihres Programms, was den Start des Programms verlangsamen könnte.

  • Programme können Abhängigkeiten von anderen Systemkomponenten aufweisen, die nur auf systemweiter Ebene und nicht auf Benutzerebene installiert werden können. Für die Installation dieser speziellen Systemkomponenten sind normalerweise Administratorrechte erforderlich, und normalerweise muss ein Installationsprogramm ausgeführt werden.

Erhöhte Privilegien und besondere Dienstleistungen

  • Einige Programme sind in Bezug auf ihre Funktionalität von Änderungen am Betriebssystem abhängig. Diese Änderungen können nur mit einem Installationsprogramm implementiert werden, das sie mit Administratorrechten verwaltet. Zum Beispiel können Programme, die Treiber oder Kernelmodule wie Wireshark installieren, nicht einfachausgeführt werden, da Sie die Kernel-Mode-Komponenten unbedingt in separaten Dateien ausliefern müssen. Im besten Fall müsste der Benutzer ein Archiv noch manuell entpacken und dann eine Art Installationsprogramm für den Gerätetreiber ausführen. Dienste sind ein weiteres Beispiel für etwas, für dessen Installation Administratorrechte erforderlich sind. Installer-Software ist besonders gut darin, auf elegante Weise Administratorrechte zu erhalten, ohne dass das Hauptprogramm selbst bei jeder Ausführung Administratorrechte anfordern muss (dies wäre in vielen Fällen ein unnötiges Sicherheitsrisiko).

Nach all diesen Gründen, warum Installer nützlich sind, sind hier einige Beobachtungen von der anderen Seite:

  • Viele Programme, auch solche, die nur als Installationsprogramm zum Herunterladen verfügbar sind und Administratorrechte erfordern, können von ihren Installationsprogrammen zwangsweise "entpackt" und direkt ausgeführt werden, ohne sie zu installieren. Andere Programme, insbesondere Open Source-Programme, werden von PortableApps in eigenständige ausführbare Dateien umgepackt . Es ist bemerkenswert, dass einige Programme, wenn sie von ihrem Installationsprogramm entpackt werden, eine eingeschränkte Funktionalität aufweisen, Fehler aufweisen oder andere Probleme aufweisen.

  • Unter anderen Betriebssystemen als Windows ist es fast immer möglich, Programme einfach herunterzuladen (oder zu kompilieren) und als normaler Benutzer auszuführen, ohne Root-Benutzer zu werden. Es gibt einige Ausnahmen in Bezug auf Pakete, die ein Kernbestandteil des Betriebssystems sind, aber für die meisten Benutzeranwendungen können Sie es in Ihrem Ausgangsverzeichnis ausführen, ohne es systemweit mit dem Paketmanager zu installieren. Windows ist ein besonderer Fall, da die meisten Desktop-Programme unter Windows über ein Installationsprogramm verfügen und normalerweise nicht auf andere Weise installiert werden können.

  • Selbst auf Nicht-Windows-Plattformen wird für Programme, die ein Kernelmodul laden müssen, ein Installationsprogramm mitgeliefert, mit dem das Kernelmodul kompiliert und im richtigen Verzeichnis installiert wird. Sie können auch ein Installationsprogramm erwarten, falls das Programm ein Daemon ist , der mit einem Systemdienstskript gestartet wird, z /etc/init.d. B. in . Diese Art von "Shrinkwrapped Binary" ist eine unter GNU / Linux weniger verbreitete Distributionsmethode. Die meisten Linux-Distributionen bieten jedoch die meiste Software in Form installierbarer Pakete an, für deren Installation jeweils Root-Zugriff (Administratorzugriff) erforderlich ist.


Schlussfolgerungen

Sie haben gefragt, warum wir Installateure benötigen. Die kurze Antwort ist, dass wir das nicht tun - zumindest nicht im engeren Sinne. Es gibt verschwindend wenige Beispiele für Anwendungen, die im Prinzip nicht in einer eigenständigen ausführbaren Datei ohne Ressourcen, ohne Installationsprogramm usw. gebündelt werden können. Selbst wenn VMware Workstation so kompliziert ist, dass sie automatisch Administratorrechte erhalten könnte, schreiben Sie das Hypervisor-Kernel-Modul aus in eine Datei auf der Festplatte und installieren Sie sie dynamisch beim Programmstart und senden Sie alle Ressourcen (Bilder, Sounds usw.), die im Datenabschnitt der ausführbaren Datei enthalten sind.

Die Verwendung eines Installationsprogramms oder nicht, ist eine Entscheidung , die Software-Hersteller treffen müssen. Die Verwendung eines Installationsprogramms hat Vor- und Nachteile. Viele Anbieter wählen , um ihre Software zu verbreiten sowohl als Installateur, und als eigenständiges binären oder zumindest als ZIP - Datei , die einfach entpackt und ausgeführt werden kann. Für Software, die nicht unbedingt einen Installer erfordert, ist dies ein sehr pragmatischer Weg, der alle glücklich macht. Normalerweise handelt es sich bei Software, die in keiner anderen Form als mit einem Installationsprogramm geliefert wird, um Software, für die Administratorrechte erforderlich sind, um eine Komponente von sich selbst zu installieren, da das Installationsprogramm die eleganteste Methode ist, um die erforderlichen Berechtigungen zu erhalten.

Persönlich finde ich Installer in meiner täglichen Arbeit sehr ärgerlich, weil ich manchmal ein Programm ausführen möchte, wenn ich keine Administratorrechte auf dem Computer habe, den ich verwende. Ich habe ziemlich viel Erfahrung damit, Installer manuell zu entpacken, um die darin enthaltenen Programmdateien zu extrahieren und diese Dateien dann zum korrekten Ausführen zu bringen. Auf meinem PC zu Hause, auf dem ich immer über Administratorrechte verfüge, finde ich Installationsprogramme jedoch nützlich und praktisch, da die meisten Installationsprogramme nützliche Optionen bieten, z. B. die Erstellung einer Desktopverknüpfung, die ich stattdessen manuell ausführen müsste.


Gute Antwort, aber Ihre Eröffnung mit DirectX und Runtime macht keinen Sinn. Zunächst einmal liegt die einzige Laufzeit von DirectX in der Sprache, in der es selbst geschrieben ist, nämlich C.

@TomTurkey Ähm ... was? Warum ist es wichtig, in welcher Sprache es geschrieben ist? Sicher, Sie können alle DirectX-Komponenten, die Sie benötigen , statisch direkt mit Ihrer ausführbaren Datei verknüpfen, aber wie ich bereits sagte, stellt dies ein Problem in Bezug auf die Dateigröße dar, wenn viele Programme dies mit großen Bibliotheken ausführen (Qt 4.x ist beispielsweise ungefähr 40 MB groß) ). Der Code muss irgendwo sein, und Sie können nicht einfach davon ausgehen, dass die von Ihnen benötigte DirectX-Version bereits auf dem System installiert ist. Andernfalls wird eine Fehlermeldung angezeigt, wenn jemand Ihr Programm unter Windows XP SP2 öffnet, das nicht gepatcht wurde Alter.
allquixotic

4
Oh, ich glaube, Sie haben mich missverstanden. In meiner Antwort habe ich nicht über die Installation von DirectX selbst gesprochen . Ich sprach über die Installation eines Programms, das von DirectX abhängt . Um diese Abhängigkeit zu erfüllen, können Sie DirectX entweder direkt in Ihre Anwendung kompilieren, wodurch der verschwendete Speicherplatz erhöht wird, oder Sie können eine kleine App in Ihrem Installationsprogramm bündeln, die prüft, ob die entsprechenden DirectX-Laufzeiten installiert sind, und falls nicht, diese herunterladen und installieren Platziert sie an einem zentralen Systemstandort. Letzteres ist in Bezug auf Speicherplatz und Download-Größe wesentlich effizienter.
allquixotic

3
@allquixotic Auch Lizenzierung. Manchmal ist eine Bibliothek möglicherweise nicht für die Weitergabe lizenziert, unabhängig von ihrem Installationsprogramm. DirectX kann in die Kategorie fallen, ich bin nicht sicher. Das .NET Framework funktioniert, denke ich. Es ist keine technische Einschränkung, sondern eine rechtliche. (Das .NET Framework hat jedoch zusätzliche technische Einschränkungen. Es ist ziemlich eng in das Betriebssystem integriert.)
Bob

1
boop . Der Klang eines überstimmten Kommentars. Im Kopf.
allquixotic

3

Der Installationsprozess berücksichtigt die folgenden Elemente:

  1. Unabhängig davon, ob Sie eine Bibliothek (API) installiert haben, z. B. die .NET Framework-Version oder Direct X.

  2. Installieren Sie einige zusätzliche System-DLL-Dateien im Systemordner. Wenn der Systemordner diese Dateien bereits enthält (dieselbe Version), ignorieren Sie diesen Schritt. Auf diese Weise benötigen Sie nicht mehrere Kopien derselben DLL-Dateien.

  3. Installieren Sie Verknüpfungen in Ihrem Startmenü oder auf Ihrem Desktop, damit Sie die Anwendung schnell starten können.

  4. Wie Sie sagten, Registrierungsänderung. Dieser Schritt kann tatsächlich ausgeführt werden, wenn die Anwendung zum ersten Mal auf diesem Computer ausgeführt wird. Daher ist er nicht besonders wichtig.

  5. Sehr wichtig: ob Sie eine Software (z. B. Google Desktop Bar oder Yahoo! Bar) in Ihrem IE bündeln möchten. Auf diese Weise schafft eine Menge unabhängiger Software Einnahmen für den Entwickler. Vergiss das nicht, wenn du freie Software verwendest.

Da wir eine "ausführbare" Anwendung in Betracht ziehen, müssen wir nicht die Schritte erläutern, mit denen ein IE-Add-On oder verwandte Dinge installiert werden können.


3

Eigenständiges Programm hat keine externen Abhängigkeiten.

Es muss sich nicht nur um eine EXE-Datei handeln, sondern es können auch zugehörige Bibliotheken und Datendateien vorhanden sein: Entpacken Sie das Archiv in einen Ordner und führen Sie die ausführbare Datei aus. Wenn Sie nur ein Archiv entpacken, wird dem Startmenü keine Verknüpfung hinzugefügt. Navigieren Sie daher zu dem Ordner, in dem sich die entpackte Anwendung befindet, und starten Sie sie von dort aus, oder erstellen Sie eine Verknüpfung im Startmenü. Vielen Computernutzern fällt es schwer.

Einfacher zu bedienen

Ein Installationsprogramm führt Benutzer durch den Installationsprozess. Sie laden das Installationsprogramm (.exe oder .msi) herunter (ersteres ist für nicht fortgeschrittene Benutzer vorzuziehen) und führen es aus. Es nimmt den Installationsordner auf, normalerweise in Program Files, kopiert die Dateien und erstellt eine Verknüpfung im Startmenü. Sie sind fertig: In den meisten Fällen klicken Sie einfach mehrmals auf Weiter.

Gehen Sie dann zum Startmenü und führen Sie die Anwendung aus. Einige Installationsprogramme bieten eine Option zum Starten der Anwendung, wenn die Installation abgeschlossen ist.

Wenn die Anwendung Dateien oder Dokumente eines bestimmten Typs öffnet, registriert das Installationsprogramm sie bei der Shell. Damit können Sie auf die Datei klicken, um sie zu öffnen.

Lizenzvereinbarung

Für viele kommerzielle und kostenlose Anwendungen müssen Sie die Lizenzvereinbarung akzeptieren, bevor Sie deren Anwendung verwenden können. Die Installation wird erst fortgesetzt, wenn Sie bestätigen, dass Sie den Lizenzbedingungen zustimmen. Auch wenn Sie die Lizenz nicht gelesen haben, haben Sie ihr zugestimmt.

Abhängigkeiten

Manchmal reicht es nicht aus, die ausführbaren Dateien einfach zu kopieren. Anwendungen verwenden häufig gemeinsam genutzte Komponenten oder spezielle Laufzeitbibliotheken. Beispielsweise muss die .NET Framework-Laufzeit installiert sein, damit die für .NET geschriebene Anwendung ausgeführt werden kann. Sogar die Visual C ++ - Laufzeit muss installiert werden, wenn sie nicht statisch verknüpft ist. Das Installationsprogramm stellt sicher, dass alle Abhängigkeiten erfüllt sind.

Wenn eine Anwendung aus mehreren EXE- und / oder DLL-Dateien besteht, verringert die dynamische Verknüpfung mit der Visual C ++ - Laufzeit den Speicherplatz. Wenn .exe und .dll statisch verknüpft sind, wird die Laufzeit in jeder einzelnen Datei dupliziert.

Die Lizenzbestimmungen einer Bibliothek erlauben möglicherweise keine statische Verknüpfung.

Sicherheit

Wenn in der Laufzeit eine Sicherheitslücke gefunden wird, kann diese separat von der Anwendung aktualisiert werden. Updates für .NET und Visual C ++ werden automatisch über Windows Update installiert.

Wenn ausführbare Dateien und Bibliotheken statisch verknüpft sind, muss der Anwendungshersteller die Anwendung neu kompilieren und die aktualisierte Version freigeben. Durch die Verwendung von Shared Runtime werden die Kosten für die Anwendungswartung für Entwickler und Anbieter gesenkt.

Die Installation Program Filesunter bietet außerdem eine sicherere Umgebung: Die Dateien dort können ohne Administratorrechte nicht geändert oder gelöscht werden.

Registry

Viele Windows-Anwendungen sind auf Einträge in der Registrierung angewiesen. Wenn die Anwendung COM verwendet, müssen alle Objekte registriert werden. Andernfalls kann die Anwendung das erforderliche Objekt nicht erstellen und startet nicht.


1
+1 für Sicherheitsupdates für gemeinsam genutzte Komponenten - das habe ich in meiner Antwort nicht geschrieben.
allquixotic

0

Kurze Antwort: Für eine eigenständige Exe müssen keine Bibliotheken auf dem Computer installiert sein, und es sind keine Registrierungseinträge oder andere Komponenten erforderlich.

Eine installierte Datei kann eine eigenständige Datei in einem Installationspaket sein, hängt jedoch im Allgemeinen von einer Vielzahl von Komponenten und Bibliotheken ab, die daneben installiert sind.

In vielen Fällen können Sie mit Universal Extractor (inoffizielles Update: hier ) den Inhalt eines Installationsprogramms extrahieren und ein Programm ohne Administratorrechte in Windows ausführen. MSI-Installer können mit lessmsi entpackt werden .

In den meisten anderen Betriebssystemen können alle Programme ohne Root- / Administratorrechte über die benutzerspezifischen Verzeichnisse 'bin', 'lib' und andere Verzeichnisse im Basisverzeichnis ausgeführt werden. Persönlich verachte ich Installateure die meiste Zeit, weil sie es mir erschweren, Programme ohne Administratorrechte zu verwenden, wenn ich sie nicht besitze. Sie werden jedoch von großen Unternehmen auf diese Weise verpackt, um den Prozess für den durchschnittlichen Endbenutzer zu vereinfachen.

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.