to get the files ready for the package, there is a lot of copy and pasting at release time
Quando si tratta di file "copia / incolla", non c'è quasi nulla che non possa essere codificato in uno script (devi scegliere un linguaggio di scripting, forse il linguaggio di script della shell del tuo sistema operativo - lasciami indovinare, il suo MS Windows - forse un linguaggio di scripting più moderno come Powershell o Python, qualunque cosa tu preferisca). E se hai bisogno di manipolare i file durante questo processo (ad esempio, per aumentare un numero di versione o modificare un GUID in un file), crea alcuni strumenti che facciano questo per te.
La maggior parte dei moderni framework di installazione (credo che anche Installhield) consentirà di automatizzare la creazione di un pacchetto. Quindi tutti questi passaggi possono essere inclusi nel processo di compilazione sul proprio server CI, proprio come la build di compilazione standard già implementata. Quante volte lasciate che il server esegua l'imballaggio automatico dipende da voi, dipenderà sicuramente da quanto tempo ci vorrà per il vostro software, e quanto velocemente avrete bisogno di feedback se quella parte della costruzione si rompe.
we're never quite confident that all files/dependencies are included within the installer
Da qualche parte, quando dovrai testare l'installazione e questo include l'esecuzione dei programmi dopo l'installazione. Devi decidere se è necessario automatizzare anche quella parte del processo o se è sufficiente un test manuale (che dipenderà probabilmente dalla frequenza di implementazione e dalla frequenza in cui le dipendenze cambiano). Se si decide di automatizzare il test di installazione, è possibile fornire una "modalità di test dell'interfaccia utente libera" nell'applicazione. Quando questa modalità è attivata, controlla solo se tutte le dipendenze necessarie sono soddisfatte (e scrive un file di log, o restituisce un codice di errore se non). Questo sarà qualcosa che il tuo server CI può controllare.
Tuttavia, l'ultimo passaggio potrebbe richiedere qualche sforzo, se si desidera testare l'installazione sempre in un ambiente pulito simile alla produzione (e non in un ambiente simile allo sviluppo). Utilizzare una macchina virtuale potrebbe essere un possibile approccio qui. Devi decidere se vale lo sforzo per la tua situazione.