Ho creato un pacchetto di installazione msi per il mio progetto dal progetto di distribuzione VS2008. ma sto avendo problemi quando si tratta di aggiornare le installazioni, la versione installata in precedenza non viene sovrascritta. Come faccio a garantire che le versioni installate in precedenza vengano sovrascritte?Come assicurarsi che la distribuzione dell'applicazione winform sovrascriva le vecchie versioni
risposta
- In Visual Studio selezionare il progetto di installazione all'interno del Esplora soluzioni
- aprire la finestra Proprietà
- non fare clic con il pulsante destro del mouse su e selezionare Proprietà.
- selezionare Visualizza - Finestra Proprietà
- set RemovePreviousVersions true
- incrementare la versione ad un numero più elevato
- Selezionare Sì nella finestra di messaggio imminente
Se costruito e distribuire questo nuova configurazione, una configurazione con un numero di versione precedente verrà eliminata.
Importante: il numero della versione di installazione è completamente indipendente dall'applicazione o dal numero di versione dell'assembly!
Windows Installer ha incorporato controlli sui file per assicurarsi che la versione sia superiore alla versione precedente di quel file. In caso contrario, Windows Installer non lo sovrascriverà. Per più ampie informazioni sul modo in cui Windows Installer gestisce controllo delle versioni questo articolo di MSDN:
http://msdn.microsoft.com/en-us/library/aa368599%28VS.85%29.aspx
Abbiamo bisogno di impostare la proprietà REINSTALLMODE del nostro file msi su amus.
seguito il link per saperne di più sul significato di 'amus' http://msdn.microsoft.com/en-us/library/aa371182%28VS.85%29.aspx
Ci sono due modi per farlo.
- Utilizzando msiexec.exe che viene fornito con SDK .NET (se si dispone di VS 2005 o VS 2008 verrà con esso, basta sfogliare al prompt dei comandi di Visual Studio e lo troverete lì)
una volta trovato msiexec.exe è sufficiente digitare il seguente comando per impostare la proprietà REINSTALLMODE su amus per il proprio programma di installazione.
msiexec.exe/i pippo.msi REINSTALLMODE = amus
(risposta di Oliver è corretta, ma ho voluto aggiungere immagini e qualche dettaglio in più)
selezionare il progetto di installazione nella vostra soluzione, quindi aprire le Proprietà riquadro (la scheda successiva alla Casella degli strumenti):
- assicurarsi
DetectNewerInstalledVersion
i vero (è essere di default) - Impostare
InstallAllUsers
true - Impostare
RemovePreviousVersions
true - aggiornare il numero
Version
e premere Invio - Dopo aver colpito entrare, Visual Studio chiederà se si desidera generare un nuovo GUID per
ProductCode
, fare clic su Sì
Inoltre, è necessario aggiornare i numeri di versione per ogni progetto nella vostra soluzione, perché il programma di installazione sostituirà solo DLL se il loro numero di versione è stato incrementato:
- Aprire AssemblyInfo.cs di ciascun progetto e aggiornare le
AssemblyVersion
eAssemblyFileVersion
numeri
o un modo migliore :
- Rimuovere
AssemblyVersion
eAssemblyFileVersion
linee da ciascun del progettoAssemblyInfo.cs - Link ad un di file VersionInfo.cs nella vostra soluzione con quei 2 linee
- Step-by-step per quanto sopra: The Right Way To Version Your Assemblies
Fare clic con il tasto destro del mouse sul progetto di installazione e selezionare Proprietà (un diverso Finestra di dialogo Proprietà):
- Set Windows Installer 4.5 come Prerequisito al posto del default di Visual Studio di Windows Installer 3,1
Non sono sicuro se tutti questi passi sono necessari, e ci potrebbero essere altri modi per impostare questo, ma i passaggi sopra funzionano per me.
- 1. Disinstallare le vecchie versioni di Android SDK
- 2. Come rimuovo le vecchie versioni di node/npm?
- 3. Rimuovere le vecchie versioni di Ruby (su Windows)
- 4. Dove trovare le vecchie versioni di Android NDK
- 5. efficiente ottenere le vecchie versioni di pacchetti R
- 6. GitHub: ricerca attraverso le vecchie versioni dei file
- 7. iOS - vecchie versioni dell'app installate dall'App Store
- 8. Scrivere una stringa in un file di testo e assicurarsi che sovrascriva sempre il contenuto esistente.
- 9. Come salvare molte vecchie versioni numerate di un file
- 10. La distribuzione ClickOnce lascia più versioni (sì, più di due)
- 11. Distribuzione di app Web e più versioni
- 12. Server sta scontando le vecchie versioni dei file statici, ma tagliato oppure imbottito per abbinare la lunghezza delle nuove versioni
- 13. Posso aggiornare le vecchie versioni di Amazon di pip e setuptools?
- 14. distribuzione di un'applicazione winform con sqlite incorporato
- 15. Come assicurarsi che sto usando la JVM "server"?
- 16. Mantain vecchie versioni senza creare filiali di lunga durata
- 17. Perché gli utenti scaricano vecchie versioni della nostra app iOS?
- 18. Esistono vecchie versioni delle linee guida di Windows UX?
- 19. Copia con gestione appunti che supporta versioni vecchie e nuove di Android?
- 20. Distribuzione di 2 versioni della stessa applicazione
- 21. su pypi.python.org cosa causerebbe la restituzione di vecchie versioni nascoste tramite ricerca esplicita
- 22. Progettazione API che garantisce la compatibilità con le versioni precedenti
- 23. Distribuzione storica delle versioni della piattaforma Android
- 24. Come assicurarsi che Tomcat6 legga CATALINA_OPTS su Windows?
- 25. preg_match: assicurarsi che l'inizio e la fine contengano qualcosa
- 26. Come assicurarsi che tutti coloro che commettono un nuovo ramo abbiano le modifiche riflesse nel pom.xml?
- 27. Haskell newtype, ma mantiene le vecchie funzioni
- 28. Come eseguire vecchie versioni di Safari su Mac OS Mountain Lion?
- 29. git rimuove le revisioni più vecchie di un file
- 30. Assicurarsi che la tabella SQLite abbia solo una riga
Se solo quello ha funzionato per me! Cosa intendi con "il numero di versione del setup è completamente indipendente?" – JohnB
@JohnB: Forse hai trascurato il punto * seleziona il tuo progetto di installazione * nel primo punto elenco.Se hai selezionato il progetto di installazione e guardato nella finestra delle proprietà, troverai in basso un numero di versione. per ogni costruito che verrà pubblicato e questo numero è indipendente dal numero di versione dell'applicazione e/o degli assiemi. – Oliver