MSI rimuove richiesto assemblea l'aggiornamento installa, ma lo sostituisce in Riparazione
-
19-09-2019 - |
Domanda
Sto sperimentando alcune stranezze relative al MSI di installazione di aggiornamento, forse qualcuno può aiutarmi:
Ho due Msi, un originale e un aggiornamento:
- MSI versione 1.0
- Contiene un .NET assembly, foo.dll per essere installato a GAC
- foo.dll è di tipo "Assemblea" (non "Output") all'interno del file MSI sistema di gui.
- MSI versione 2.0
- Contiene anche foo.dll (stessa versione), più una serie di ulteriori assemblee.
- Vorrei MSI 2.0 a sostituire completamente 1.0, ho RemovePerviousVersion False.
Ora i due scenari di installazione:
Ho eseguito MSI 1.0.Foo.dll è installato il GAC correttamente.Ho quindi eseguire MSI 2.0 e Foo.dll sembra di essere rimosso dal GAC, ma le assemblee ci sono.Non ho idea del modo.Tuttavia, se mi vai a Aggiungi/Rimuovi programmi " e fare clic su "Repair," Foo.dll viene messo in.
MSI 1.0 è mai stato installato e ho eseguito MSI 2.0.Foo.dll (e gli altri assembly) è c', come previsto.
Tutte le idee perché la foo.dll viene rimosso durante l'aggiornamento??Grazie in anticipo!
-Ken
AGGIORNAMENTO Dopo alcuni rinfrescante/ricostruzione, sembra funzionare ora.Tuttavia, ora non rimuovere foo.dll quando disinstallo i driver MSI, anche se la sua proprietà "Permanente" è impostata su false.Non più grande di un problema, ma sarebbe bello sapere che cosa stava succedendo.
Soluzione
Per correggere la stranezza, ho finito di fare le seguenti operazioni:
- Installato Orca.exe parte di Windows SDK.
- Aggiunto REINSTALLMODE=amus per la Struttura della tabella di via Orca, post di costruire.
Questo ha risolto il mio problema immediato e corretto l'installazione/disinstallazione problemi che stavo vivendo.L'unico problema è che questo è un processo manuale.Il passo successivo, fare di questo una parte di un sistema automatico di post-build evento in qualche modo.