2012-03-14 7 views
21

Il mio programma di installazione Wix ha funzionato installando il mio programma, ma è rotto per la disinstallazione. Un file viene rimosso troppo presto ed è necessario in futuro. Il programma di disinstallazione fallisce e ripristina le sue modifiche.Ho sbagliato, come posso disinstallare il mio programma?

Ciò significa che non è possibile rimuovere il pacchetto dalla mia macchina e quindi non è possibile installare ulteriori build del mio programma di installazione (un notevole inconveniente). Come posso forzare la rimozione del pacchetto?

+0

Esistono due approcci principali: correggere il pacchetto (sia in posizione con uno strumento come orca, o tramite l'installazione di un aggiornamento secondario), o, solo per casi interni, cercando di rimuovere le tracce e far finta che non sia mai stato installato. Quale stai cercando di fare? (Se quest'ultimo, perché non stavi usando una macchina virtuale?) –

risposta

18
  1. Trova il pacchetto in C:\Windows\Installer, dove Windows conserva le copie dei pacchetti MSI installati. I nomi sono generati casualmente, quindi dovrai guardare le date di creazione dei file.

  2. Aprire il file MSI con Orca.

  3. eliminare l'azione incriminata personalizzato dalla CustomAction table

Ora si dovrebbe essere in grado di disinstallare il pacchetto.

modifica: in base alla risposta di @ darkrock76 di seguito, la cartella per il passaggio 1 potrebbe anche essere C:\ProgramData\Package Cache\. Ho entrambi sulla mia macchina Windows 7 SP1. Non ho potuto trovare immediatamente documentazione su questo.

+0

Questo ha funzionato come un incantesimo, grazie! –

+0

Wim, un editor ha suggerito un emendamento. Puoi dare un'occhiata alla cronologia delle modifiche solo per vedere se vuoi apportare qualche modifica o no? –

+0

Ho avanzato il suggerimento, giusto per chiarire che funzionerà solo se provate a disinstallarlo eseguendo il pacchetto modificato piuttosto che altri mezzi (come Ctrl Panel/Programs and Features/Uninstall). Forse avrei dovuto aggiungere l'avviso come commento. –

5

A seconda del motivo esatto del comportamento che hai descritto, potresti avere almeno un paio di opzioni.

Se il motivo del fallimento è un'azione personalizzata che gira su di disinstallazione, e questa azione personalizzata è condizionata con alcuni immobili che potrebbero influenza su, si può provare a passare il valore desiderato tramite la riga di comando:

msiexec /x {YOUR-PRODUCTCODE-HERE} RUNMYACTION=false 

In questo esempio RUNMYACTION è una proprietà di Windows Installer che partecipa a una condizione di azione personalizzata e se si passa false come valore, l'azione non verrà eseguita.

In caso contrario, è possibile correggere la logica (o semplicemente disabilitare l'azione personalizzata in modo esplicito) e creare il nuovo pacchetto MSI. Poi caricarlo a quella macchina di destinazione, ed eseguire così:

msiexec /i YourPackage.msi REINSTALL=ALL REINSTALLMODE=vomus 

Qui YourPackage.msi è un nuovo pacchetto fisso, REINSTALL=ALL istruisce il msiexec reinstallare il prodotto utilizzando questo nuovo pacchetto, e REINSTALLMODE=vomus (la v parte esso) memorizzerà nuovamente il pacchetto MSI e in seguito potrai rimuoverlo normalmente.

Una nota a margine: è necessario testare l'installazione su una macchina virtuale per non rischiare quella reale.

0

Se siete veramente disperati e tutte le soluzioni di cui sopra non funziona, provate

msizap.exe

questo cancellerà tutto ciò che il vostro installatore ha messo su una macchina
piccolo avvertimento

Non

eseguire msizap senza sapere quali opzioni si desidera eseguire con (per un elenco di opzioni eseguire msizap /? prima).

5

Questo comando di solito funziona per me:

msiexec /fv installer.msi 

E recaches un po 'il programma di installazione, in modo da poter provare ancora con un corretto uno.

Una volta questo comando non ha funzionato e ho dovuto usare Microsoft FixIt. Ha risolto il problema (un vero shock per me).

+0

Questo mi ha aiutato - ho avuto un'installazione fallita del mio pacchetto con. 4 azione personalizzata su macchina senza .net 4. E non ero in grado di disinstallarlo pure. Ho risolto msi ed è stato in grado di eseguirlo con/fv switch, dopo che sono stato in grado di disinstallarlo come al solito. – sarh

5

FYI: In Windows 8.1 i programmi di installazione sono stati spostati qui: C: \ ProgramData \ Package Cache \

0

Io di solito basta guardare per <Your Installer's Name>.msi o <Your Installer's Company Name> nel Registro di sistema ed eliminare alcune delle chiavi di disinstallazione da alcune delle Products sotto gli alberi del programma di installazione di Windows e tutto questo in genere funziona bene e dandy in seguito, anche se questo WOULD lascia alcune cose in giro come installatori nascosti e probabilmente tonnellate di altre chiavi di registro per ogni file installato, ecc. Ma il suo SEMPRE ha funzionato per me quando sviluppi gli installatori perché onestamente, a chi importa se un MSI viene lasciato in cache e da qualche parte? Stai comunque utilizzando la macchina per lo sviluppo, giusto?