目录NN位于用户配置文件中,但未在RemoveFile表中列出

时间:2010-07-20 13:45:36

标签: wix

当我尝试创建安装程序时,我收到以下错误:

目录 ProgramMenuDir 位于用户个人资料中,但未列在 RemoveFile 表中。

如何解决此问题?以下是我正在使用的目录结构:

   <Directory Id="ProgramMenuFolder" Name="Programs">
        <Directory Id="ProgramMenuDir" Name="E">
              <Directory Id="Monarch" Name="Monarch">
                  <Component Id="Monarch" Guid="*">                       
                        <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>

4 个答案:

答案 0 :(得分:69)

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

尝试更换:

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

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

此外,最好明确每个RemoveFolder元素。

希望这有帮助。

答案 1 :(得分:1)

即使在回答了这个问题的答案之后,也可以为其他可能仍然遇到此问题的人写一遍。

我遇到了同样的问题,即使在RemoveFolder中明确指定目录后也没有帮助我,我试图在同一个片段中将TARGETDIR之后的包含快捷方式安装/卸载somponents的DirectoryRef放入其中并帮助修复我的问题问题。

答案 2 :(得分:1)

如果其他答案仍然不适合您,请尝试检查Suppress ICE validation选项,Visual Studio将忽略这些验证,只需遵循以下路线即可:

YourProject-> Properties-> Tool Settings

ICE validation

答案 3 :(得分:-1)

如果以下答案仍然无效。尝试重新启动Visual Studio。