Ho un servizio di Windows scritto in C# usando VS2005.Come posso persuadere un VS2005 msi per l'aggiornamento?
L'installazione avviene tramite una procedura guidata che chiama msiexec per installare il file msi creato anche con VS2005.
Ho problemi a generare un file msi che aggiornerà da una versione del servizio a un'altra. Il programma della procedura guidata gestisce il rilevamento della versione correntemente installata, interrompendo il servizio, fornendo una riga di comando appropriata per msiexec e quindi riavviando il servizio.
L'msi esistente ha una versione di versione di 1.1.02, quella nuova è 1.1.03. I codici prodotto e aggiornamento sono identici.
La disinstallazione manuale di 1.1.02 tramite programmi di aggiunta/rimozione funziona correttamente, così come l'installazione di 1.1.03 su un sistema "pulito".
L'aggiornamento da 1.1.02 a 1.1.03 passa attraverso i movimenti ma il risultato finale è 1.1.02 installato.
La riga di comando che utilizza la procedura guidata per l'aggiornamento è:
msiexec/qb/i "MyProduct.msi" REINSTALL = "ALL" REINSTALLMODE = "vos"
Dove sto andando male? Suppongo di aver perso qualcosa di abbastanza fondamentale ...
La posizione di riserva consiste nell'informare i clienti che devono disinstallare manualmente 1.1.02 prima di eseguire la procedura guidata per installare 1.1.03 ma preferirei non devi farlo.
A cura di aggiungere:
Modifica del codice del prodotto (come VS2005 chiede inoltre di) rimuove in realtà la possibilità di aggiornamento a tutti, in quanto il programma di installazione non ti consente di fare una reinstallazione se il codice prodotto hasn è stato precedentemente installato.
Tutto quello che ti consente di fare è installare (e quindi si ottiene il solito "servizio già esistente" -tipo di messaggio).
Sì, aveva impostato ok. Alla fine ci siamo arresi e abbiamo fatto in modo che la procedura guidata esegua la disinstallazione seguita da una nuova installazione se rileva già una versione precedente. Sembra funzionare bene e consente agli utenti finali di eseguire l'aggiornamento senza dover manualmente manomettere qualcosa. –
Inoltre, per quanto riesco a capire, gli MSI creati da Visual Studio sono apparentemente noti per non permettervi di aggiornare i servizi comunque, quindi, facendo il lavoro nel wizard, ho evitato di cadere nella prossima trappola. –
+1 ma per rendere tutto più chiaro, si sta dicendo di aggiornare la versione del file del progetto MAIN (non il progetto di installazione!). –