2010-07-20 9 views
43

Quando provo a creare l'installer, viene visualizzato il seguente errore:Directory xx si trova nel profilo utente ma non è elencata nella tabella RemoveFile.

La directory ProgramMenuDir si trova nel profilo utente ma non è elencata nella tabella RemoveFile.

Come posso risolvere questo problema? di seguito è la struttura di directory che sto usando.

<Directory Id="ProgramMenuFolder" Name="Programs"> 
     <Directory Id="ProgramMenuDir" Name="E"> 
       <Directory Id="Monarch" Name="Monarch"> 
        <Component Id="Monarch" Guid="E510F3DA-82AA-11DF-8814-8970DFD72085">      
         <RemoveFolder Id='Monarch' On='uninstall' /> 
       <RemoveFolder Id='ProgramMenuDir' On='uninstall' /> 

        <RegistryValue Root='HKCU' Key='Software\[Manufacturer]\[ProductName]' Type='string' Value='' KeyPath='yes' /> 
        </Component> 
       </Directory> 
     </Directory> 
    </Directory> 

risposta

63

Per quanto posso vedere, il problema è nell'uso dei <RemoveFolder/> elemento. Se l'attributo 'Directory' è omesso, prende la directory del componente principale. Nel tuo caso, è una directory con Id = "EFIMonarch". Questo spiega perché si ottiene l'avviso per la directory esterna (ProgramMenuDir), ma non ottenerlo per la directory EFIMonarch.

provare a sostituire:

<RemoveFolder Id='ProgramMenuDir' On='uninstall' /> 

con

<RemoveFolder Id='RemoveProgramMenuDir' Directory='ProgramMenuDir' On='uninstall' /> 

Inoltre, è una buona idea di essere esplicito per ogni elemento RemoveFolder.

Spero che questo aiuti.

+17

Nel mio caso vedevo questo errore perché avevo dimenticato di aggiungere il componente come funzionalità. – briantyler

+0

@TheMouthofaCow stesso per me. –

+1

sì finalmente dopo 2 giorni di ricerca – Gilad

1

Basta scrivere questo per altri che potrebbero ancora riscontrare questo problema anche dopo aver seguito la risposta per questa domanda.

Ho avuto lo stesso problema e anche dopo aver specificato esplicitamente la directory in RemoveFolder non mi ha aiutato, ho provato a mettere questo DirectoryRef contenente il collegamento install/uninstall somponents subito dopo il TARGETDIR all'interno dello stesso frammento e ha aiutato a risolvere il mio problema

Problemi correlati