Différence entre un fichier exécutable autonome et un exécutable installé?

17

J'ai remarqué sur Windows, au moins, que vous pouvez télécharger un fichier exécutable lié statiquement et le lancer directement, ou écrire votre propre programme et l'exécuter (même dynamiquement) sans avoir à l'installer.

Cela m'amène à mon point principal ... quel est le but du processus d'installation? Je veux dire en plus peut-être du registre Windows . Cependant, pour des raisons pratiques et d'utilisation, il est possible d'avoir un programme unique, indépendant et autonome qui peut être exécuté, stocké sur un stockage non volatile et accessible via le système de fichiers de tout appareil sur lequel il se trouve et exécuté sur le système d'exploitation. Alors, quel est le gros problème avec tout ce "installer cette" entreprise si de nombreux programmes de grande envergure peuvent fonctionner parfaitement sans passer par une configuration d'installation? Cela me laisse un peu perplexe, et à part une base de données ou d'autres systèmes de configuration de métadonnées / accès, quelle est la vraie différence ici si ce dernier (un exécutable installé) fonctionne et fonctionne de la même manière qu'un autonome?

Y a-t-il une différence que je ne connais pas avec un programme non installé par rapport à un programme installé?

PS: Cela ne doit pas seulement s'appliquer aux systèmes d'exploitation Windows, mais à tous ceux qui implémentent une fonction similaire.

ᔕᖺᘎᕊ
la source

Réponses:

16

Il existe plusieurs raisons pour lesquelles les programmes sont des installateurs plutôt que des exécutables autonomes:

Problèmes de taille de fichier

  • Les programmes avec de nombreuses dépendances importantes peuvent regrouper des programmes d'installation Web qui téléchargent les dépendances et les placent dans un emplacement commun, afin qu'elles puissent être partagées par plusieurs programmes. Par exemple, DirectX est une très grande bibliothèque. Si chaque programme de votre système qui dépend de DirectX vient de regrouper l'intégralité du runtime DirectX avec lui, il consommera un peu d'espace. Cela peut ne pas sembler avoir d'importance à l'âge de 4 To sur les disques durs, mais considérez que les SSD sont beaucoup plus petits en termes de capacité et qu'ils deviennent couramment utilisés sur les ultrabooks, certains avec aussi peu que 64 Go de stockage. Et bien sûr, il existe de nombreuses autres bibliothèques partagées à part DirectX.

  • Les programmes qui sont à la fois très volumineux et mis à jour en continu sont mieux distribués sous la forme d'une collection de nombreux petits fichiers, avec un programme de lancement ou de mise à jour qui vérifie Internet pour une mise à jour, et si une mise à jour existe, téléchargez uniquement les modifications requises. Si tous les gros programmes ont été expédiés sous la forme d'un seul exécutable monolithique, il est très probable que le processus de correction nécessitera de télécharger à nouveau l'intégralité de l'exécutable, car la correction du fichier exécutable en cours d'exécution sur le disque est presque impossible en raison des verrous de fichiers. De plus, parce que le programme de mise à jour doit savoir où se trouvent ses fichiers, il stocke souvent ce chemin de répertoire dans un emplacement bien connu du registre.

Problèmes de commodité pour les utilisateurs

  • Les programmes d'installation de très gros programmes, tels que Visual Studio et Microsoft Office, permettent à l'utilisateur de désélectionner l'installation de certaines fonctionnalités, si l'utilisateur sait qu'il n'en aura jamais besoin. Cela présente 3 avantages potentiels: il réduit la consommation d'espace disque; il peut réduire le temps de téléchargement et la consommation de bande passante si le programme d'installation est un téléchargeur Web; et il peut réduire le "fouillis" et le "ballonnement" sur la machine de l'utilisateur, moins de raccourcis du menu de démarrage / bureau, moins de programmes de démarrage, etc.

  • Les programmes d'installation de programmes complexes sont souvent livrés avec des options de configuration que l'utilisateur peut configurer à l'aide d'une interface graphique conviviale dans le cadre du programme d'installation. Voir par exemple les programmes d'installation MySQL ou SQL Server, qui peuvent vous guider tout au long du processus de mise en place et de fonctionnement de votre serveur de base de données avant même de cliquer sur "Terminer" dans le programme d'installation.

  • Les installateurs peuvent demander à l'utilisateur les informations requises, telles que les clés de licence, qui ne doivent être saisies qu'une seule fois. Cela peut simplifier la conception du programme lui-même, et réduire le nombre de choses qu'il doit faire et vérifier quand il démarre. Cela donne également à l'utilisateur la certitude qu'une fois le programme installé avec succès, il devrait "simplement fonctionner" - il n'y a plus de "pièges" dans le programme qui pourraient les empêcher de l'utiliser.

Problèmes de compatibilité

  • Certains programmes sont en conflit avec d'autres programmes. C'est un fait simple et malheureux du génie logiciel. Avant d'installer un programme qui a connu des conflits avec d'autres programmes, il est souvent utile de vérifier d'abord le système pour voir si un programme incompatible est installé. L'utilisateur peut alors être alerté le cas échéant. Par exemple, il existe un potentiel d'incompatibilité très dangereux dans les anciennes versions de VMware et VirtualBox, qui a abouti à un écran bleu de la mort, car un programme tenterait d'utiliser une instruction spéciale de processeur de virtualisation après qu'elle ait déjà été réservée à l'utilisateur par l'autre produit. . Si vous deviez simplement fournir le produit final à l'utilisateur sans installateur, vous devriez vérifier la présence de produits incompatibles à chaque début de votre programme, ce qui pourrait ralentir le démarrage du programme.

  • Les programmes peuvent avoir des dépendances sur d'autres composants du système qui ne peuvent être installés qu'au niveau du système, pas au niveau de chaque utilisateur. Pour installer ces composants système spéciaux, des privilèges administratifs sont généralement requis et un programme d'installation doit généralement être exécuté.

Privilèges élevés et services spéciaux

  • Certains programmes dépendent des modifications apportées au système d'exploitation pour leur fonctionnalité, et ces modifications ne peuvent pas être facilement mises en œuvre sans une sorte de programme d'installation pour prendre soin d'eux avec des privilèges administratifs. Par exemple, les programmes qui installent des pilotes ou des modules du noyau, tels que Wireshark, ne peuvent pas simplementêtre exécuté, car vous devez absolument expédier les composants en mode noyau dans des fichiers séparés. Dans le meilleur des cas, vous devrez toujours faire dézipper manuellement une archive par l'utilisateur, puis exécuter une sorte de programme d'installation pour le pilote de périphérique. Les services sont un autre exemple de quelque chose qui nécessite des privilèges administratifs pour l'installation. Le logiciel d'installation est particulièrement efficace pour obtenir les droits d'administrateur d'une manière élégante, sans exiger que le programme principal lui-même demande des droits d'administrateur à chaque exécution (ce serait une exposition de sécurité inutile dans de nombreux cas).

Après avoir donné toutes ces raisons pour lesquelles les installateurs sont utiles, voici quelques observations de l'autre côté:

  • De nombreux programmes, même ceux qui ne sont disponibles au téléchargement qu'en tant qu'installateur nécessitant des privilèges d'administrateur, peuvent être «décompressés» de force de leurs installateurs et s'exécuter directement sans les installer. D'autres programmes, en particulier ceux open source, sont reconditionnés en exécutables autonomes par PortableApps . Il est à noter que certains programmes, lorsqu'ils seront décompressés de leur programme d'installation, auront des fonctionnalités réduites, présenteront des erreurs ou d'autres problèmes.

  • Sur les systèmes d'exploitation autres que Windows, il est presque toujours possible de simplement télécharger (ou compiler) des programmes et de les exécuter en tant qu'utilisateur normal, sans obtenir root. Il existe quelques exceptions en ce qui concerne les packages qui font partie intégrante du système d'exploitation, mais pour la plupart des applications utilisateur, vous pouvez l'exécuter dans votre répertoire personnel sans l'installer à l'échelle du système à l'aide du gestionnaire de packages. Windows est un peu un cas particulier dans la mesure où la plupart des programmes de bureau sous Windows ont un programme d'installation et ne peuvent généralement pas être installés autrement.

  • Même sur les plates-formes non Windows, les programmes qui ont besoin de pouvoir charger un module du noyau sont livrés avec une sorte de programme d'installation, qui compile le module du noyau et l'installe dans le bon répertoire. Vous pouvez également vous attendre à voir un programme d'installation dans le cas où le programme est un démon qui sera démarré à l'aide d'un script de service système, par exemple dans /etc/init.d. Ce type de "binaire rétracté" est une méthode de distribution moins courante sur GNU / Linux, mais la plupart des distributions Linux fournissent toujours la plupart des logiciels sous la forme de packages installables, dont chacun nécessite un accès root (accès administrateur) pour l'installation.


Conclusions

Vous avez demandé pourquoi nous avons besoin d'installateurs. La réponse courte est que nous ne le faisons pas - pas à proprement parler, de toute façon. Il existe peu d'exemples d'applications qui , en principe, ne peuvent pas être regroupées dans un seul exécutable autonome sans ressources, sans programme d'installation, etc. dans un fichier sur le disque, installez-le dynamiquement au démarrage du programme et expédiez toutes ses ressources (images, sons, etc.) regroupées dans la section des données de l'exécutable.

Utiliser ou non un programme d'installation est un choix que les producteurs de logiciels doivent faire. L'utilisation d'un programme d'installation présente des avantages et des inconvénients. De nombreux fournisseurs choisissent de distribuer leur logiciel à la fois en tant qu'installateur et en tant que fichier binaire autonome, ou au moins en tant que fichier ZIP qui peut simplement être décompressé et exécuté. Pour les logiciels qui ne nécessitent absolument aucun installateur, c'est une façon de faire très pragmatique et qui rend tout le monde heureux. Habituellement, les logiciels qui ne sont livrés sous aucune autre forme qu'avec un programme d'installation sont des logiciels qui nécessitent des privilèges administratifs pour installer certains composants de lui-même, car le programme d'installation est le moyen le plus élégant d'obtenir les privilèges nécessaires.

Personnellement, je trouve les installateurs très ennuyeux dans mon travail quotidien, car parfois je veux exécuter un programme quand je n'ai pas de droits administratifs sur l'ordinateur que j'utilise. J'ai un peu d'expérience en décompressant manuellement les programmes d'installation pour extraire les fichiers du programme, puis en exécutant ces fichiers correctement. Cependant, sur mon PC personnel à la maison où j'ai toujours un accès administratif, je trouve les installateurs bénéfiques et pratiques, car la plupart des installateurs me donnent des options utiles, comme la création d'un raccourci sur le bureau, que j'aurais dû faire manuellement sans lui.

allquixotic
la source
Excellente réponse, mais votre ouverture avec DirectX et le runtime n'a pas de sens. Tout d'abord, le seul runtime de DirectX est dans le langage dans lequel il est écrit, c'est-à-dire C.
@TomTurkey Um ... quoi? Pourquoi est-ce important dans quelle langue il est écrit? Bien sûr, vous pouvez lier statiquement tous les composants DirectX dont vous avez besoin directement dans votre exécutable, mais comme je l'ai dit, cela présente un problème de taille de fichier si de nombreux programmes commencent à le faire avec de grandes bibliothèques (Qt 4.x, par exemple, exécute environ 40 Mo ). Le code doit être quelque part, et vous ne pouvez pas simplement supposer que la version DirectX dont vous avez besoin est déjà installée sur le système, ou vous obtiendrez une erreur lorsque quelqu'un ouvrira votre programme sur Windows XP SP2 qui n'a pas été corrigé âge.
allquixotic
4
Oh, je pense que vous m'avez mal compris - dans ma réponse, je ne parlais pas d' installer DirectX lui-même ; Je parlais d'installer un programme qui dépend de DirectX. Pour satisfaire cette dépendance, vous pouvez soit compiler DirectX directement dans votre application, augmentant ainsi la consommation d'espace disque gaspillé, soit regrouper une petite application dans votre programme d'installation qui vérifie si vous avez installé les runtimes DirectX appropriés, et sinon, les télécharge et les place dans un emplacement système centralisé. Ce dernier est beaucoup plus efficace en termes d'espace disque et de taille de téléchargement.
allquixotic
3
@allquixotic Aussi, licence. Parfois, une bibliothèque peut ne pas être autorisée pour la redistribution indépendamment de son programme d'installation. DirectX peut tomber dans la catégorie, je ne suis pas sûr. Je pense que le framework .NET le fait. Ce n'est pas une restriction technique, mais légale. (Le framework .NET a cependant des restrictions techniques supplémentaires. Il est assez étroitement intégré dans le système d'exploitation.)
Bob
1
boop . Le son d'un commentaire surévalué. Dans ma tête.
allquixotic
3

Le processus d'installation prend en compte ces éléments:

  1. si vous avez installé la bibliothèque (api), telle que la version du framework .net ou direct X.

  2. Installez des fichiers DLL système supplémentaires dans le dossier système. Si le dossier système contient déjà ces fichiers (même version), ignorez cette étape. De cette façon, vous n'avez pas besoin de plusieurs copies des mêmes fichiers DLL.

  3. Installez des raccourcis dans votre menu Démarrer ou votre bureau pour vous aider à démarrer rapidement l'application.

  4. Comme vous l'avez dit, modification du registre. Cette étape peut en fait être effectuée lorsque l'application est exécutée pour la première fois sur cet ordinateur, elle n'est donc pas très importante.

  5. très important: s'il faut regrouper un logiciel (comme la barre de bureau Google ou la barre Yahoo! dans votre IE). C'est ainsi que de nombreux logiciels indépendants génèrent des revenus pour le développeur. N'oubliez pas que si vous utilisez un logiciel gratuit.

Parce que nous envisageons une application "exécutable", nous n'avons pas besoin de discuter de ces étapes qui peuvent installer un module complémentaire IE ou des choses connexes.

Ben Lin
la source
3

Le programme autonome n'a pas de dépendances externes.

Il ne doit pas être uniquement un fichier .exe, il peut avoir des bibliothèques et des fichiers de données d'accompagnement: décompressez l'archive dans un dossier et exécutez l'exécutable. Si vous venez de décompresser une archive, aucun raccourci n'est ajouté au menu Démarrer, vous devrez donc naviguer vers le dossier où se trouve l'application décompressée et la démarrer à partir de là, ou créer manuellement un raccourci pour celle-ci dans le menu Démarrer. De nombreux utilisateurs d'ordinateurs éprouvent des difficultés.

Plus facile à utiliser

Un programme d'installation guide les utilisateurs tout au long du processus d'installation. Vous téléchargez le programme d'installation, .exe ou .msi (le premier est préférable pour les utilisateurs non avancés) et l'exécutez. Il récupère le dossier d'installation, généralement dans Program Files, copie les fichiers, crée un raccourci dans le menu Démarrer. Vous avez terminé: dans la majorité des cas, vous cliquez simplement sur Suivant plusieurs fois.

Ensuite, allez dans le menu Démarrer et exécutez l'application. Certains installateurs offrent une option pour démarrer l'application une fois l'installation terminée.

Si l'application ouvre des fichiers ou des documents d'un certain type, le programme d'installation l'enregistre avec le shell. Pour que vous puissiez cliquer sur le fichier pour l'ouvrir.

Accord de licence

De nombreuses applications, à la fois commerciales et gratuites, vous obligent à accepter le contrat de licence avant de pouvoir utiliser leur application. L'installation ne se poursuit que lorsque vous reconnaissez avoir accepté les termes de la licence. Même si vous n'avez pas lu la licence, vous l'avez acceptée.

Dépendances

Parfois, il ne suffit pas de copier simplement les fichiers exécutables. Les applications utilisent souvent des composants partagés ou des bibliothèques d'exécution spéciales. Par exemple, l'environnement d'exécution du framework .Net doit être installé pour exécuter l'application écrite pour .Net; même le runtime Visual C ++, s'il n'est pas lié statiquement, doit être installé. L'installateur veille à ce que toutes les dépendances soient satisfaites.

Si une application se compose de plusieurs fichiers .exe et / ou .dll, la liaison dynamique au runtime Visual C ++ réduit l'espace disque. Si .exe et .dll sont liés statiquement, le runtime est dupliqué dans chaque fichier.

Les conditions de licence d'une bibliothèque peuvent ne pas autoriser la liaison statique.

Sécurité

Si une vulnérabilité est trouvée dans le runtime, elle peut être mise à jour séparément de l'application. Les mises à jour du runtime .Net et Visual C ++ sont installées automatiquement via Windows Update.

Si les exécutables et les bibliothèques sont liés statiquement, le fournisseur de l'application doit recompiler l'application et publier la version mise à jour. Ainsi, l'utilisation du runtime partagé réduit les coûts de maintenance des applications pour les développeurs et les fournisseurs.

L'installation de Program Filesfournit également un environnement plus sécurisé: les fichiers ne peuvent pas être modifiés ou supprimés sans privilèges d'administrateur.

Enregistrement

De nombreuses applications Windows reposent sur des entrées du registre. Si l'application utilise COM, tous les objets doivent être enregistrés sinon l'application ne parviendra pas à créer l'objet requis et ne démarrera pas.

Alexey Ivanov
la source
1
+1 pour les mises à jour de sécurité des composants partagés - je n'ai pas pensé à écrire cela dans ma réponse.
allquixotic
0

Réponse brève: un exe autonome ne nécessite aucune bibliothèque installée sur l'ordinateur pour fonctionner et ne nécessite aucune entrée de registre ou d'autres composants.

Un fichier installé peut être autonome dans un package d'installation, mais dépend généralement d'une variété de composants et de bibliothèques installés en parallèle.

Dans de nombreux cas, grâce à Universal Extractor (mise à jour non officielle: ici ), vous pouvez extraire le contenu d'un programme d'installation et exécuter un programme sans privilèges administratifs dans Windows. Les installateurs MSI peuvent être décompressés avec lessmsi .

Dans la plupart des autres systèmes d'exploitation, tous les programmes peuvent être exécutés sans privilèges root / administrateur, via les répertoires «bin», «lib» spécifiques à l'utilisateur et d'autres répertoires du répertoire personnel. Personnellement, je méprise les installateurs la plupart du temps, car ils rendent plus difficile pour moi d'utiliser des programmes sans privilèges administratifs quand je ne les ai pas. Mais ils sont conditionnés de cette façon par les grandes entreprises pour simplifier le processus pour l'utilisateur final moyen.

Wyatt8740
la source