2013-07-30 23 views
6

Ho letto tutti gli argomenti su questo sito con un problema come questo, ma non trovo quello che mi serve.wix - come eliminare la cartella non vuota

Ho due versioni di un programma: vecchio e nuovo. Nella vecchia versione ho la cartella f1. Nella nuova versione non ho questa cartella f1.

Quando l'installazione del nuovo programma ha rilevato una versione precedente, elimina questa versione precedente, ma non la cartella f1.

Come posso eliminare f1 dall'installatore di una nuova versione?

 <Component Id ="deleteall" Guid="AA11A32B-9E1E-458A-8C94-3EFEDA77E494" > 
     <RemoveFolder Id='iDocDir' On='both' /> 
     </Component> 

     <Directory Id="iDocDir" Name="iDocs"> 
     </Directory> 

non funziona = (

+0

Stai eseguendo un aggiornamento importante o un aggiornamento secondario? –

risposta

11

si dovrebbe verificare la RemoveFolderEx element in the UtilExtension. Fa esattamente quello che vuoi. Bob Arnson has blogged about it before.

<Component Id="deeletall" Guid="PUT-GUID-HERE"> 
    <util:RemoveFolderEx Id="RemoveiDocDir" On="uninstall" Property="iDocDir" /> 
</Component> 

Funziona scrivendo rowes temporanee al tavolo RemoveFile. Ci sono restrizioni all'uso di questo, tuttavia, come indicato nel manuale:

Poiché potrebbe influire notevolmente sul costo dei file di Windows Installer, , le righe temporanee devono essere scritte prima dell'azione CostInitialize standard . Sfortunatamente, MSI non crea proprietà per la gerarchia di directory nel pacchetto fino a più tardi, nell'azione CostFinalize .

Una soluzione semplice per un tipico caso d'uso di rimozione di una cartella durante la disinstallazione di consiste nel scrivere il percorso di directory nel registro e caricare durante la disinstallazione.

Se si utilizzano le azioni personalizzate per impostare le proprietà, assicurarsi che siano pianificate prima dell'azione personalizzata WixRemoveFoldersEx.

E anche nel post di Bob:

Come l'aggiunta di directory e file da eliminare colpisce di MSI file di costing, RemoveFolderEx ha a che fare la sua cosa prima valutazione dei costi. Sfortunatamente, MSI non imposta le proprietà per le directory di destinazione fino al termine del calcolo.

Se già salva il percorso di installazione precedente (Rob spiega come effettuare questa operazione here) nel Registro di sistema, che stai bene, come l'azione AppSearch eseguito prima CostInitialize.

+0

Avviso: On = "uninstall" rimuove anche la cartella su un aggiornamento. – Simon

Problemi correlati