2009-03-02 19 views
5

Qualcuno può elencare i passaggi necessari per installare un'applicazione su Windows in modo programmatico. Oltre a copiare i file dove devono essere, quali sono i passaggi aggiuntivi necessari affinché la tua app sia di prima classe in Windows (ad es. Nell'elenco programmi, disinstallazione elenco ... ecc.)istruzioni pratiche: installazione programmatica su Windows?

Ho provato a google questo, ma non ho avuto fortuna.

BTW: Questo è per un'applicazione C++ non gestita (sviluppata in Qt), quindi preferirei non coinvolgere il framework .net se non è necessario.

risposta

7

penso che il tema per le risposte che vedrete qui è che si dovrebbe utilizzare un programma di installazione e che non si dovrebbe scrivere il programma di installazione da soli. Utilizzare uno dei tanti programmi di installazione, ad esempio Inno Setup, InstallSheild o qualsiasi altra cosa consigliata da qualcuno.

Se si tenta di scrivere il programma di installazione da soli, probabilmente fai male. Questo non è un leggero contro di te personalmente. È solo che ci sono un sacco di piccoli dettagli che un installatore dovrebbe prendere in considerazione, e molte cose che possono andare storte, e se vuoi scrivere tu stesso l'installer, devi riuscire a fare tutto bene. Ciò significa molte ricerche e molti test da parte tua. Salva te stesso il problema.

Inoltre la copia dei file, operazioni di installazione variano molto a seconda di ciò che il programma ha bisogno. Forse hai bisogno di mettere un'icona nel menu Start; uno strumento di installazione dovrebbe avere un modo per farlo accadere molto facilmente, compilando automaticamente il percorso di installazione che il cliente ha scelto in precedenza nell'installazione e magari scegliendo anche la lingua locale corretta per l'etichetta del collegamento.

Potrebbe essere necessario creare le voci del Registro di sistema, come ad esempio per le associazioni di file o di licenza. Lo strumento di installazione dovrebbe già avere un modo semplice per specificare quali chiavi e valori creare o modificare.

Potrebbe essere necessario registrare un server COM. È un'azione abbastanza comune che il tuo programma di installazione probabilmente ha un modo per specificarlo come parte dell'operazione di copia post-file.

Se ci sono alcune azioni che lo strumento di installazione scelto non già prevede, lo strumento probabilmente offrirà un modo per aggiungere azioni personalizzate, magari attraverso un linguaggio di scripting, o forse attraverso il collegamento di codice esterno da una DLL che si vorrebbe scrivi che viene incluso con il tuo programma di installazione. Le azioni personalizzate possono includere il download di un aggiornamento da un sito Web specifico, l'invio di e-mail o l'inventario di ciò che altri prodotti della tua azienda sono già installati.

Un paio di cose finali che uno strumento di installazione dovrebbe fornire sono modi per si applicano gli aggiornamenti a un'installazione esistente, e un modo per disinstallazione il programma, annullando tutte quelle operazioni di installazione (l'eliminazione di file, ripristino dei backup, l'annullamento della registrazione Server COM, ecc.).

+0

La tua risposta sembrava riassumere l'essenza del resto dei post. Molte grazie! – JimDaniel

5

Ho usato Inno Setup per pacchettizzare il mio software per C++. È molto semplice rispetto alle soluzioni per carichi pesanti come InstallShield. Tutto può essere contenuto in un singolo setup.exe senza creare tutti questi script batch impazziti e così via.

verificarlo qui: http://www.jrsoftware.org/isinfo.php

+0

Mentre stai ricevendo InnoSetup, assicurati di avere gli strumenti Inno della GUI; rende molto semplice la configurazione dello script di installazione e può eseguire il compilatore per creare l'installazione senza dover andare al prompt dei comandi. –

0

Hai già i passi principali. Uno che hai tralasciato è quello di installare nel menu Start e fornire un'opzione per creare un desktop e/o icona di avvio rapido.

Vorrei incoraggiarvi a utilizzare un programma di installazione, come suggerito da Jeremy.

10

Consiglio vivamente NSIS. Open Source, sviluppo molto attivo, ed è difficile eguagliare/battere la sua estensibilità.

Per aggiungere al programma di Add/Remove Programs (o Programmi e funzionalità) la lista, aggiungere le seguenti chiavi reg:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\PROGRAM_NAME] 
"DisplayName"="PROGRAM_NAME" 
"Publisher"="COMPANY_NAME" 
"UninstallString"="PATH_TO_UNINSTALL_PROGRAM" 
"DisplayIcon"="PATH_TO_ICON_FILE" 
"DisplayVersion"="VERSION" 
"InstallLocation"="PATH_TO_INSTALLATION_LOCATION" 
+0

Perché il voto negativo? –

+0

Non so. Forse qualcuno odia NSIS. –

+0

Forse qualcuno pensava che non avessi davvero risposto alla domanda e invece parlassi solo di un esempio. –

1

La GUI per InnoSetup (altamente consigliato) è Istool

È può anche utilizzare l'installer MSI integrato in Visual Studio, è una curva di apprendimento più ripida (ovvero è un dolore) ma è utile se si sta installando software in un ambiente aziendale.

2

Sembra che sia necessario controllare il sistema di Windows Installer. Se ti serve il nitty-grintoso, consulta lo official documentation. Per notizie, leggi il blog del team di installazione. Infine, dato che sei un programmatore, probabilmente vorrai costruire l'installer come farebbe un programmatore. WiX 3.0 è il mio strumento di scelta - codice open source, da Microsoft per l'avvio. Inizia con this tutorial on WiX. Va bene.

1

di avere il vostro programma di presentarsi nel menu del programma di avvio, si avrebbe bisogno di creare la cartella C: \ Documents and Settings \ All Users \ Menu Avvio \ Programmi e ha aggiunto una scorciatoia per il programma che si desidera lanciare. (Se si desidera che l'applicazione essere elencati direttamente nel menu di avvio, o nel sottomenu programmi, si dovrebbe mettere la vostra scorciatoia nelle rispettive directory)

Per creare programically una scorciatoia è possibile utilizzare IShellLink (See MSDN article).

Dal momento che si desidera disinstallare, questo diventa molto più impegnativo perché non si vuole semplicemente eliminare DLL o altri file comuni senza controllare le dipendenze. Vorrei raccomandare l'uso di un generatore di installazione/installazione, specialmente oggigiorno Vista è così perspicace, è piuttosto complicato eseguire il rollup della propria installazione se si ha bisogno di qualcosa di più di un singolo file eseguibile e di un menu di scelta rapida.

Sono stato con Paquet Builder generatore di configurazione per diversi anni. (La versione registrata include la disinstallazione).

+0

Anche se anziché utilizzare "C: \ Documents and Settings \ All Users \ Menu Avvio \ Programmi", è necessario utilizzare una variabile di ambiente appropriata. –

+0

Destra, utilizzare più specificamente qualcosa come CSIDL_COMMON_PROGRAMS o CSIDL_PROGRAMS vedere: http://msdn.microsoft.com/en-us/library/bb762494.aspx –

+0

E che a seconda se si sta eseguendo come amministratore, e in caso affermativo, se si Stai facendo un'installazione solo admin o all-user. Ma quando si scrive un programma di installazione, la seconda attività (dopo la copia del file) dovrebbe essere quella di configurare la voce Installazione applicazioni per pulire tutto. – MSalters