Nel mondo reale si vuole davvero avvicinarsi al solo clic su un pulsante e avere tutto automatizzato il più possibile. Se stai installando te stesso vale la pena per il tempo che risparmia e perché vuoi rendere molto difficile fare un errore con il software live. Se non lo sei, vale la pena, perché in quasi tutti i casi poche persone si occuperanno di un processo di installazione difficile.
Questo può essere un bel po 'di lavoro ma è concettualmente piuttosto semplice. Devi scrivere un codice che verifichi che la chiusura transitiva di tutte le dipendenze sia soddisfatta e aggiusti qualcosa che manca o che abbia un buon messaggio di errore. Se ci sono opzioni di installazione che non puoi sapere in anticipo, devi supportare l'impostazione di quelle tramite un'interfaccia utente o uno script o entrambi. Devi giocare bene con qualsiasi meccanismo di installazione standard presenti nel tuo ambiente.
Le dipendenze potrebbero non essere solo file, ma potrebbero essere cose come assicurarsi che le voci del registro di Windows di cui il programma si basa siano presenti, configurare un server web per il programma, ecc.
Fondamentalmente devi fare programmaticamente tutto ciò che qualcuno farebbe a mano, gestendo tutti i diversi scenari possibili.
La compilazione automatica è un termine abbastanza esplicativo. Molte volte la build non ottiene tutto l'amore di cui ha bisogno e il processo di compilazione è scritto in un documento con molti passaggi. In genere vale la pena di avere qualche forma di configurazione alla guida di uno script completamente automatico. Questa è una build automatizzata. Di solito parte della build sta eseguendo test automatici per assicurarsi che non solo la build produca un programma, ma che almeno le parti testate del programma funzionino davvero.
L'integrazione continua non è fattibile senza una build automatizzata, il che è un grande motivo per cui vale la pena fare una build automatizzata. Significa che la build viene eseguita automaticamente usando uno schema (come "ogni volta che il nuovo codice è stato archiviato da quando ho terminato l'ultima build su cui stavo lavorando"). Generalmente una grande parte del valore di questo è che la build esegue test automatici, quindi se le modifiche al codice rompono qualche angolo polveroso del programma lo scoprirete automaticamente e abbastanza velocemente. Ci può essere qualche valore solo sapendo che tutto si compila comunque.
Distribuire il tuo lavoro e renderlo facile per gli altri implicherebbe creare un programma di installazione e seguire le convenzioni che il tuo pubblico potrebbe aspettarsi, come mettere in un app store o un repository di codice sorgente. Ci sono molti strumenti in vari ambienti che, dato un nome, vanno a cercarti il codice e installarlo. Il tuo codice può partecipare a questo se segui tutte le regole necessarie affinché quegli strumenti funzionino.
Sono stato incredibilmente generico perché i dettagli cruenti variano un po 'in ambienti diversi, quindi una risposta specifica dipenderà molto da quello che stai facendo.