Attualmente ho un progetto con un programma di installazione che ho creato con NSIS, ma mi piacerebbe avere un aggiornamento alle nuove versioni che hanno solo i file modificati e mostreranno un log delle modifiche. La piattaforma di destinazione è Windows. Quali metodi/suggerimenti hai per farlo?Come si crea un programma di installazione di aggiornamento con NSIS?
risposta
È possibile riconsiderare l'uso di NSIS. Se si eseguono patch e distribuzioni degli aggiornamenti, si otterrà il massimo beneficio dall'utilizzo di una tecnologia di installazione che utilizza le funzionalità di Windows Installer (msiexec).
NSIS è fondamentalmente un programma che esegue e fa ciò che si desidera mentre un programma di installazione di Windows Installer obbliga a suddividere l'applicazione in funzionalità e componenti che possono essere gestiti dal servizio msi di installazione di Windows. MSI traccerà le cose come le versioni dei prodotti che hai installato, se l'esecuzione del programma di installazione verrà eseguita di nuovo in modalità di manutenzione, se è possibile installare 2 prodotti di versioni diverse, se una patch può essere applicata a una particolare versione di un prodotto o qualsiasi altra domanda relativa agli aggiornamenti e alle installazioni.
Fondamentalmente la maggior parte delle cose che si richiedono saranno disponibili immediatamente se si passa a una tecnologia di Windows Installer. Considerando che se si utilizza NSIS (che non utilizza la tecnologia di Windows Installer), sarà necessario implementare tutto da solo.
Proprio come un esempio c'è un generatore di installazione piuttosto completo chiamato AdvancedInstaller (http://www.advancedinstaller.com/) che suona come quello che vuoi. In alternativa, se vuoi passare il resto della tua vita a visitare forum e newsgroup c'è un prodotto open source chiamato WiX che fa qualcosa di simile;)
Non sono sicuro del motivo per cui sono stato contrassegnato per questo. Mentre NSIS è open source, devi pensare allo strumento migliore per il lavoro dopo tutto quello che stai usando sotto Windows. –
Un modo possibile è quello di memorizzare un file XML sul server di download con ciascuna versione rilasciata e un elenco di file modificati per ciascuna versione. Il programma di installazione scriverà una chiave di registro all'installazione della versione dei file installata.
Quindi, durante l'aggiornamento, il programma di installazione scarica e analizza il file XML e trova tutti i nodi con numeri di versione superiori rispetto a quelli attualmente installati. Si visualizzano tutti i file in una casella di testo in una pagina di installazione e, quando l'utente conferma, il programma di installazione scarica tutti i file e quindi aggiorna il registro alla versione più recente.
Ho solo pochi file e verranno modificati con quasi ogni aggiornamento. Quindi volevo semplicemente raggrupparli in un updater.exe e far sì che il programma di installazione fosse diverso dal file exe di installazione completo. Ancora non sono sicuro di cosa sia meglio ... forse un'installazione completa ogni volta è abbastanza buona per il mio caso. – staackuser2
Nonostante il mio precedente commento ho scritto un programma di installazione di 5000 linee usando NSIS con 13 pagine personalizzate. Ho persino guardato le patch ed è un po 'un trucco. Il consiglio principale è di assicurarti di applicare la patch alla versione che ritieni di applicare, quindi utilizzare uno dei plug-in di correzione disponibili.
Esistono diverse tecnologie di patching che confrontano i file e producono file di modifica delle patch e il codice NSIS necessario per "installarli". Ho trovato che NSIS Patch Gen ha fatto quello che volevo abbastanza bene con il minor numero di problemi. La documentazione è un po 'sottile, ma una volta che l'hai capito pensi "Oh yeh".
Probabilmente avrete un po 'di problemi con un registro delle modifiche generato automaticamente. Ti suggerisco di creare il registro delle modifiche da solo (o almeno aggiungere le modifiche aggiuntive ad esso con ogni modifica dell'applicazione che apporti) e includerlo come se fosse un normale file dell'applicazione e lasciare che il generatore di patch lo aggiorni.
Alcuni compilatori come Delphi fanno un sacco di cambiamenti nel eseguibile finale anche se si cambia un po 'di parte del codice.
Quindi per prima cosa dovresti vedere se vale la pena riparare.
Un'altra considerazione è la patching di per sé. La patch potrebbe essere bloccata da alcuni software antivirus, specialmente in alcune cartelle di sistema.
e infine la dimensione dei dati di patch incrementali può aumentare oltre i file originali.
In base agli argomenti sopra riportati, non suggerisco di applicare le patch. Utilizza invece gli installer completi
hai familiarità con cURL? http://www.shininglightpro.com/products/Win32OpenSSL.html http://curl.haxx.se/download.html#openssl
verrà scaricato qualsiasi protocollo, e lo si può utilizzare per scaricare i file. è un'app della linea di comando.
nel programma di installazione, pianificare un programma che dovrebbe controllare prima di vedere se il programma principale è in esecuzione o meno e uscire se è in esecuzione in caso contrario, chiama arricciare per scaricare un file batch dal tuo sito con gli aggiornamenti, quindi esegue il file batch.
il file batch scaricato aggiorna l'app scaricando i file corretti utilizzando l'arricciatura. il processo dovrebbe essere eseguito ogni 2 settimane o una volta al mese, a seconda della frequenza di aggiornamento.
la parte di disinstallazione dell'installer dovrebbe essere in grado di rimuovere tutte le parti dell'app in questione, inclusi eventuali aggiornamenti. questo può essere ottenuto rimuovendo tutti i file da quella sottodirectory dei file di programma.
RMDir /r /REBOOTOK '$INSTDIR'
RMDir /r /REBOOTOK "$SMPROGRAMS\$StartMenuFolder"
Delete '$SMPROGRAMS\$StartMenuFolder\gpl3license.lnk'
Delete '$SMPROGRAMS\$StartMenuFolder\readme.lnk'
Delete '$SMPROGRAMS\$StartMenuFolder\${PRODUCT_TITLE}.lnk'
DeleteRegKey HKCU "Software\Your major subkey\${PRODUCT_NAME}"
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}"
DeleteRegKey /ifempty HKCU "Software\${PRODUCT_NAME}"
PRODUCT_NAME è una! Definiscono ho fatto perché io uso questi file NSI come un modello. questo è solo un pezzo della sezione di disinstallazione del file di installazione.
Hai completato il tuo progetto? Cosa hai usato alla fine? Forse potresti accettare una delle risposte :) –
Sì, l'ho completato ... ma non ho usato nessuno di questi metodi in quanto era più complicato di quanto avrei voluto. Quindi ho appena creato una versione completa per gli aggiornamenti e ho richiesto all'utente di scaricarli prima di far funzionare l'applicazione. – staackuser2
Ho appena accettato la tua risposta ... anche se non l'ho usata, sembra il miglior metodo disponibile. – staackuser2