Domanda

Ho consegnato la versione 1.0 del mio software con un installer WiX-generated, e ora voglio consegnare / Diffondere versione 1.1. Se possibile vorrei evitare la situazione di dire alla gente di rimuovere manualmente 1.0 prima di installare 1.1.

Tuttavia, ho dovuto modificare il InstallScope, trasformandolo da perUser a perMachine per vari motivi tecnici. Non è un grosso problema, tranne che rende l'aggiornamento di una seccatura.

Quello che sto vedendo accadere è la stessa cosa che questo post menziona, in cui anche se hai fatto tutto il corretta lavori di realizzazione di un aggiornamento, quando è fatto di vedere due voci diverse nella lista dei programmi installati, uno è 1.0 e l'altro è 1.1. E questo sta causando problemi nel software.

Così sembrerebbe che la base "rimuovere la versione precedente" logica non funziona qui, quindi ho bisogno di un altro metodo di avere la versione precedente disinstallato. Ho cercato di andare giù per il sentiero di sparare fuori il comando corretto msiexec /x rimuovere la versione precedente tramite un ShellExecute CustomAction, ma a meno che non mi manca qualcosa non c'è posto nella sequenza in cui questo dovrebbe funzionare perché si sta sparando un comando di msiexec nel mezzo di un'altra esecuzione.

Poi mi sono imbattuto in questa pagina che dettaglia un metodo di poco documentata "concatenamento" insieme di MSI:

setupbld.exe -out $(TargetDir)setup.exe -msu FirstInstaller.msi -msu SecondInstaller.msi -setup $(ProjectDir)setup.exe

Suoni grande - tutto quello che serve ora è un po 'MSI la cui unica funzione è quella di rimuovere la versione 1.0 e quindi posso catena che insieme con quello vecchio.

A parte io non sto trovando molta documentazione su come si potrebbe fare. In realtà, dal momento che questo potrebbe in teoria potenzialmente essere usato per rimuovere software non installato, non sono sicuro che questo è ancora tecnicamente possibile per motivi di sicurezza.

Qualcuno sa come creare un MSI utilizzando WiX il cui unico scopo è quello di disinstallare il software? O sto attaccando questo problema completamente sbagliato?

È stato utile?

Soluzione

Utilizzare questa Wix per disinstallare la versione precedente come parte della versione 1.1. Io non sono sicuro perché è necessario per la catena MSIs insieme.

Come implementare WiX aggiornamento installatore?

EDIT: ho perso il cambiamento nei requisiti InstallScope. Quindi, ciò che è veramente necessario è un programma di avvio automatico.

ho postato come creare un BootStrapper qui: ho bisogno di un progetto di avvio automatico WIX che installa il mio software e prerequisiti

Altri suggerimenti

Una soluzione è quella di utilizzare un'azione personalizzata che gestisce il comando "msiexec.exe / x". Assicuratevi che sia previsto dopo InstallFinalize in InstallExecuteSequence. Inoltre, è Return dovrebbe essere asyncNoWait (esecuzione asincrona, non aspettare per il ritorno).

Con queste impostazioni la disinstallazione utilizza un diverso processo asincrono, evitando il conflitto.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top