目录xx在用户configuration文件中,但未在RemoveFile表中列出。

当试图创build安装程序,我收到以下错误:

ProgramMenuDir目录位于用户configuration文件中,但未在RemoveFile表中列出。

我如何解决这个问题? 下面是我使用的目录结构。

<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> 

据我所知,问题在于使用<RemoveFolder/>元素。 如果“目录”属性被省略,它将采用父组件的目录。 在你的情况下,它是一个Id =“EFIMonarch”的目录。 这就解释了为什么你得到了外部目录(ProgramMenuDir)的警告,但是没有得到EFIMonarch目录的警告。

尝试更换:

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

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

另外,为每个RemoveFolder元素显式是一个好主意。

希望这可以帮助。

只要写下这个问题,即使在回答这个问题之后,仍然会遇到这个问题。

我有同样的问题,甚至在明确指定在RemoveFolder中的目录没有帮助我,我试图把这个DirectoryRef包含快速安装/卸载somponents后TARGETDIR在同一个片段,并帮助解决了我的问题。