Differenza tra un file eseguibile autonomo e un eseguibile installato?


17

Ho notato su Windows, almeno, che è possibile scaricare un file eseguibile diretto e staticamente collegato e avviarlo direttamente, oppure scrivere il proprio programma ed eseguirlo (anche dinamicamente) senza doverlo installare.

Questo mi porta al mio punto principale ... qual è lo scopo del processo di installazione? Voglio dire oltre forse il registro di Windows . Tuttavia, ai fini della praticità e dell'utilizzo, è possibile avere un singolo programma indipendente, indipendente, che può essere eseguito, archiviato su una memoria non volatile e accessibile tramite il filesystem di qualunque dispositivo sia acceso ed eseguito sul sistema operativo. Quindi qual è il grosso problema di tutto questo "installare questo" business se molti grandi programmi praticamente di qualsiasi grandezza possono funzionare perfettamente senza passare attraverso una configurazione di installazione? Mi sconcerta un po 'e, a parte un database o altri metadati / sistemi di configurazione dell'accesso, qual è la vera differenza qui se quest'ultimo (un eseguibile installato) funziona e funziona allo stesso modo di un autonomo?

C'è una differenza qui di cui non sono a conoscenza con un programma non installato rispetto a uno installato?

PS: Questo non si applica solo ai sistemi operativi Windows, ma a quelli che implementano una funzione simile.

Risposte:


16

Esistono diversi motivi per cui i programmi si presentano come programmi di installazione anziché come file eseguibili autonomi:

Preoccupazioni sulla dimensione del file

  • Programmi con molte dipendenze di grandi dimensioni possono raggruppare programmi di installazione basati sul Web che scaricano le dipendenze e le posizionano in un percorso comune, in modo che possano essere condivise da più programmi. Ad esempio, DirectX è una libreria molto grande. Se ogni singolo programma sul tuo sistema che dipende da DirectX impacchettasse l'intero runtime di DirectX con esso, consumerebbe un bel po 'di spazio. Questo potrebbe non sembrare importante all'età di 4 dischi rigidi da 4 TB, ma considera che gli SSD hanno una capacità molto più piccola e stanno diventando di uso comune sugli ultrabook, alcuni con un minimo di 64 GB di spazio di archiviazione. E ovviamente ci sono molte altre librerie condivise oltre a DirectX.

  • I programmi che sono sia di grandi dimensioni che in continuo aggiornamento sono meglio distribuiti come una raccolta di molti piccoli file, insieme a un programma di avvio o di aggiornamento che controlla Internet per un aggiornamento e, se esiste un aggiornamento, scarica solo le modifiche richieste. Se tutti i programmi di grandi dimensioni sono stati spediti come un singolo eseguibile monolitico, è molto probabile che il processo di patch richiederebbe il nuovo download dell'intero eseguibile, poiché la patch del file eseguibile in esecuzione sul disco è quasi impossibile a causa dei blocchi dei file. Inoltre, poiché il programma di aggiornamento deve sapere dove si trovano i suoi file, spesso memorizza quel percorso di directory in una posizione ben nota nel registro.

Preoccupazioni per la convenienza dell'utente

  • I programmi di installazione per programmi molto grandi, come Visual Studio e Microsoft Office, consentono all'utente di deselezionare l'installazione di determinate funzionalità, se l'utente sa che non ne avrà mai bisogno. Ciò ha 3 potenziali vantaggi: riduce il consumo di spazio su disco; può ridurre i tempi di download e il consumo della larghezza di banda se l'installer è un downloader web; e può ridurre "ingombro" e "gonfiore" sul computer dell'utente, meno menu di avvio / collegamenti sul desktop, meno programmi di avvio, ecc.

  • Gli installatori per programmi complicati spesso dispongono di opzioni di configurazione che l'utente può impostare utilizzando un'interfaccia grafica intuitiva come parte dell'installer. Vedi ad esempio i programmi di installazione di MySQL o SQL Server, che ti possono portare attraverso l'intero processo di messa in funzione del tuo server di database prima ancora di fare clic su "Fine" sul programma di installazione.

  • Gli installatori possono richiedere all'utente le informazioni richieste, come le chiavi di licenza, che devono essere immesse una sola volta. Questo può semplificare la progettazione del programma stesso e ridurre il numero di cose che deve fare e verificare quando viene avviato. Ciò comporta anche che l'utente abbia la certezza che, una volta installato con successo il programma, dovrebbe "funzionare" - non ci sono più "gotchas" all'interno del programma che potrebbero impedirgli di usarlo.

Preoccupazioni di compatibilità

  • Alcuni programmi sono in conflitto con altri programmi. Questo è un fatto semplice e sfortunato dell'ingegneria del software. Prima di installare un programma che ha conosciuto conflitti con altri programmi, è spesso utile controllare innanzitutto il sistema per verificare se è installato un programma incompatibile. In tal caso l'utente può essere avvisato. Ad esempio, esiste un potenziale di incompatibilità molto pericoloso nelle versioni precedenti di VMware e VirtualBox, che ha portato a una schermata blu della morte, perché un programma tenterebbe di utilizzare un'istruzione del processore di virtualizzazione speciale dopo che era già stato riservato all'utente dall'altro prodotto . Se dovessi semplicemente fornire il prodotto finale all'utente senza un installatore, dovresti verificare la presenza di prodotti incompatibili in ogni avvio del programma, che potrebbe rallentare l'avvio del programma.

  • I programmi possono avere dipendenze da altri componenti del sistema che possono essere installati solo a livello di sistema, non a livello di utente. Per installare questi componenti di sistema speciali, in genere sono richiesti privilegi di amministratore e di solito è necessario eseguire un programma di installazione.

Privilegi elevati e servizi speciali

  • Alcuni programmi dipendono dalle modifiche al sistema operativo per la loro funzionalità e queste modifiche non possono essere facilmente implementate senza un qualche tipo di programma di installazione che si prenda cura di loro con privilegi amministrativi. Ad esempio, i programmi che installano driver o moduli del kernel, come Wireshark, non possono semplicementeessere eseguito, perché devi assolutamente spedire i componenti in modalità kernel in file separati. Nel migliore dei casi, dovrai comunque decomprimere manualmente un archivio e quindi eseguire un tipo di programma di installazione per il driver del dispositivo. I servizi sono un altro esempio di qualcosa che richiede l'installazione di privilegi di amministratore. Il software di installazione è particolarmente efficace nell'ottenere i diritti di amministratore in modo elegante, senza richiedere che il programma principale stesso richieda i diritti di amministratore ogni volta che viene eseguito (ciò costituirebbe un'esposizione alla sicurezza non necessaria in molti casi).

Dopo aver fornito tutti questi motivi per cui gli installatori sono utili, ecco alcune osservazioni dall'altra parte:

  • Molti programmi, anche quelli disponibili per il download solo come installer che richiedono privilegi di amministratore, possono essere "decompressi" forzatamente dai loro installatori ed eseguiti direttamente senza installarli. Altri programmi, in particolare quelli open source, vengono riconfezionati in eseguibili autonomi da PortableApps . È interessante notare che alcuni programmi, quando vengono decompressi dal loro programma di installazione, avranno funzionalità ridotte, errori di esposizione o altri problemi.

  • Su sistemi operativi diversi da Windows, è quasi sempre possibile semplicemente scaricare (o compilare) programmi ed eseguirli come utente normale, senza ottenere root. Vi sono alcune eccezioni rispetto ai pacchetti che sono una parte fondamentale del sistema operativo, ma per la maggior parte delle applicazioni utente, è possibile eseguirlo nella directory principale senza installarlo a livello di sistema utilizzando il gestore pacchetti. Windows è un po 'un caso speciale in quanto la maggior parte dei programmi desktop su Windows ha un programma di installazione e di solito non può essere installato in nessun altro modo.

  • Anche su piattaforme non Windows, i programmi che richiedono la capacità di caricare un modulo del kernel hanno una sorta di programma di installazione, che compila il modulo del kernel e lo installa nella directory giusta. Puoi anche aspettarti di vedere un programma di installazione nel caso in cui il programma sia un demone che verrà avviato usando uno script di servizio di sistema, ad esempio in /etc/init.d. Questo tipo di "binario termoretraibile" è un metodo di distribuzione meno comune su GNU / Linux, ma la maggior parte delle distribuzioni Linux fornisce ancora la maggior parte del software sotto forma di pacchetti installabili, ognuno dei quali richiede l'accesso root (accesso amministratore) per l'installazione.


conclusioni

Hai chiesto perché abbiamo bisogno di installatori. La risposta breve è che non lo facciamo - non in senso stretto, comunque. Esistono pochissimi esempi di applicazioni che , in linea di principio, non possono essere raggruppate in un singolo eseguibile autonomo senza risorse, nessun programma di installazione, ecc. Anche qualcosa di così complicato come VMware Workstation potrebbe ottenere automaticamente i privilegi di amministratore, scrivere il modulo del kernel hypervisor su un file su disco e installarlo in modo dinamico all'avvio del programma e spedire tutte le sue risorse (immagini, suoni, ecc.) raggruppate all'interno della sezione dati dell'eseguibile.

L'uso di un programma di installazione o meno è una scelta che i produttori di software devono fare. Ci sono vantaggi e svantaggi nell'utilizzo di un programma di installazione. Molti fornitori scelgono di distribuire il loro software sia come programma di installazione, sia come file binario autonomo, o almeno come file ZIP che può essere semplicemente decompresso ed eseguito. Per i software che non richiedono assolutamente un programma di installazione, questa è una strada molto pragmatica e rende tutti felici. Di solito, il software che non viene fornito in una forma diversa da quella di un programma di installazione è un software che richiede i privilegi di amministratore per installare alcuni componenti di se stesso, poiché il programma di installazione è il modo più elegante per ottenere i privilegi necessari.

Personalmente trovo che gli installatori siano molto fastidiosi nel mio lavoro quotidiano, perché a volte voglio eseguire un programma quando non ho i diritti amministrativi sul computer che sto usando. Ho un po 'di esperienza nel decomprimere manualmente i programmi di installazione per estrarre i file del programma all'interno e quindi far funzionare correttamente questi file. Tuttavia, sul mio PC personale a casa dove ho sempre accesso amministrativo, trovo gli installatori utili e convenienti, perché la maggior parte degli installatori mi offre opzioni utili, come se creare un collegamento sul desktop, che avrei dovuto fare manualmente invece senza di esso.


Ottima risposta, ma l'apertura con DirectX e runtime non ha senso. Prima di tutto, l'unico runtime di DirectX è nella lingua in cui è scritto, che è C.

@TomTurkey Um ... cosa? Perché è importante in quale lingua è scritta? Certo, si potrebbe staticamente collegare i componenti di DirectX che è necessario direttamente nel tuo eseguibile, ma come ho detto, che presenta un problema dimensione del file se molti programmi di iniziare a fare questo con grandi librerie (Qt 4.x, per esempio, gestisce circa 40 MB ). Il codice deve trovarsi da qualche parte e non puoi semplicemente supporre che la versione di DirectX di cui hai bisogno sia già installata sul sistema, oppure visualizzerai un errore quando qualcuno apre il tuo programma su Windows XP SP2 che non è stato patchato età.
allquixotic,

4
Oh, penso che tu mi abbia frainteso - nella mia risposta, non stavo parlando dell'installazione di DirectX stesso ; Stavo parlando dell'installazione di un programma che dipende da DirectX. Per soddisfare tale dipendenza, è possibile compilare DirectX direttamente nell'applicazione, aumentando in tal modo il consumo di spazio su disco sprecato, oppure è possibile raggruppare una piccola app nel programma di installazione che verifica se sono installati i runtime di DirectX appropriati e, in caso contrario, scaricarli e li mette in una posizione di sistema centralizzata. Quest'ultimo è molto più efficiente in termini di spazio su disco e dimensioni del download.
allquixotic,

3
@allquixotic Inoltre, le licenze. A volte, una libreria potrebbe non essere autorizzata per la ridistribuzione indipendentemente dal suo programma di installazione. DirectX potrebbe rientrare nella categoria, non ne sono sicuro. Penso che il framework .NET funzioni. Non è una limitazione tecnica, ma legale. (Il framework .NET ha ulteriori restrizioni tecniche, tuttavia. È abbastanza strettamente integrato nel sistema operativo.)
Bob

1
boop . Il suono di un commento votato. Nella mia testa.
allquixotic,

3

Il processo di installazione considera questi elementi:

  1. se hai richiesto la libreria (api) installata, come la versione di .net framework o X diretta.

  2. Installare alcuni file DLL di sistema aggiuntivi nella cartella di sistema. Se la cartella di sistema contiene già questi file (stessa versione), ignora questo passaggio. In questo modo non sono necessarie più copie degli stessi file DLL.

  3. Installa i collegamenti nel menu Start o sul desktop per aiutarti a avviare rapidamente l'applicazione.

  4. Come hai detto, modifica del registro. Questo passaggio può effettivamente essere eseguito quando l'applicazione viene eseguita per la prima volta in questo computer, quindi non è particolarmente importante.

  5. molto importante: se raggruppare un software (come la barra del desktop di Google o la barra di Yahoo! in IE). Questo è il modo in cui molti software indipendenti creano entrate per lo sviluppatore. Non dimenticarlo, se stai utilizzando software gratuito.

Poiché stiamo prendendo in considerazione un'applicazione "eseguibile", non è necessario discutere i passaggi che possono installare un componente aggiuntivo IE o elementi correlati.


3

Il programma autonomo non ha dipendenze esterne.

Non deve essere solo un file .exe, può avere librerie e file di dati di accompagnamento: decomprimere l'archivio in una cartella ed eseguire l'eseguibile. Se decomprimi un archivio, non viene aggiunto alcun collegamento al menu Start, quindi dovrai accedere alla cartella in cui si trova l'applicazione decompressa e avviarla da lì, oppure creare manualmente un collegamento nel menu Start. Molti utenti di computer lo trovano difficile.

Più facile da usare

Un programma di installazione guida gli utenti attraverso il processo di installazione. Scaricare il programma di installazione, .exe o .msi (il primo è preferibile per utenti non esperti) ed eseguirlo. Prende la cartella di installazione, di solito in Program Files, copia i file, crea un collegamento nel menu Start. Hai finito: nella maggior parte dei casi fai semplicemente clic su Avanti più volte.

Quindi vai al menu Start ed esegui l'applicazione. Alcuni programmi di installazione offrono un'opzione per avviare l'applicazione al termine dell'installazione.

Se l'applicazione apre file o documenti di un certo tipo, il programma di installazione la registra con la shell. In modo che sia possibile fare clic sul file per aprirlo.

Accordo di licenza

Molte applicazioni, sia commerciali sia gratuite, richiedono l'accettazione del contratto di licenza prima di poter utilizzare la loro applicazione. L'installazione non procede fino a quando non si accetta di accettare i termini della licenza. Anche se non hai letto la licenza, hai accettato.

dipendenze

A volte non è sufficiente copiare semplicemente i file eseguibili. Le applicazioni utilizzano spesso componenti condivisi o speciali librerie di runtime. Ad esempio, il runtime del framework .Net deve essere installato per eseguire l'applicazione scritta per .Net; anche il runtime di Visual C ++, se non è staticamente collegato, deve essere installato. L'installatore si occupa di garantire che tutte le dipendenze siano soddisfatte.

Se un'applicazione è composta da più file .exe e / o .dll, il collegamento dinamico al runtime di Visual C ++ riduce lo spazio su disco. Se .exe e .dll sono collegati staticamente, il runtime viene duplicato in ogni singolo file.

I termini di licenza di una biblioteca potrebbero non consentire il collegamento statico.

Sicurezza

Se viene rilevata una vulnerabilità nel runtime, può essere aggiornata separatamente dall'applicazione. Gli aggiornamenti al runtime .Net e Visual C ++ vengono installati automaticamente tramite Windows Update.

Se eseguibili e librerie sono collegati staticamente, il fornitore dell'applicazione deve ricompilare l'applicazione e rilasciare la versione aggiornata. Pertanto, l'utilizzo del runtime condiviso riduce i costi di manutenzione delle applicazioni per sviluppatori e fornitori.

L'installazione su Program Filesfornisce anche un ambiente più sicuro: i file non possono essere modificati o eliminati senza i privilegi di amministratore.

Registro

Molte applicazioni Windows si basano su voci nel registro. Se l'applicazione utilizza COM, tutti gli oggetti devono essere registrati, altrimenti l'applicazione non riuscirà a creare l'oggetto necessario e non si avvierà.


1
+1 per gli aggiornamenti di sicurezza dei componenti condivisi: non ho pensato di scriverlo nella mia risposta.
allquixotic,

0

Risposta breve: un exe autonomo non richiede l'installazione di librerie sul computer e non richiede voci di registro o altri componenti.

Un file installato può essere autonomo in un pacchetto di installazione, ma in genere dipende da una varietà di componenti e librerie installati accanto ad esso.

In molti casi, tramite Universal Extractor (aggiornamento non ufficiale: qui ), è possibile estrarre il contenuto di un programma di installazione ed eseguire un programma senza privilegi amministrativi in ​​Windows. Gli installer MSI possono essere decompressi con lessmsi .

Nella maggior parte degli altri sistemi operativi, tutti i programmi possono essere eseguiti senza privilegi di amministratore / root, tramite 'bin', 'lib' e altre directory specifiche dell'utente nella directory home. Personalmente, disprezzo gli installatori la maggior parte delle volte, perché mi rendono più difficile usare programmi senza privilegi amministrativi quando non li ho. Ma sono confezionati in questo modo dalle grandi aziende per semplificare il processo per l'utente finale medio.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.