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

sub*_*ubs 48 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>
Run Code Online (Sandbox Code Playgroud)

Yan*_*nko 72

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

尝试更换:

<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
Run Code Online (Sandbox Code Playgroud)

<RemoveFolder Id='RemoveProgramMenuDir' Directory='ProgramMenuDir' On='uninstall' />
Run Code Online (Sandbox Code Playgroud)

此外,对每个RemoveFolder元素都是明确的是一个好主意.

希望这可以帮助.

  • 在我的情况下,我看到这个错误,因为我忘了添加组件作为功能. (18认同)
  • [Wix 的教程](http://wixtoolset.org/documentation/manual/v3/howtos/files_and_registry/create_start_menu_shortcut.html) 在混淆这些属性的功能方面做得非常出色。对完全不同的元素重新使用相同的 `Id`,使它们看起来好像是引用而不是不相关的标识符。 (3认同)
  • 在教程中拥有该属性会很好,我认为如果是这样,我认为大多数人都可以直观地弄清楚。这是我能找到的唯一一篇文章,它费心解释为什么而不是仅仅提供一个不起作用的例子。 (2认同)
  • 我也遇到了同样的错误,谷歌把我带到了这里。然而,就我而言,我在功能标签下缺少“&lt;ComponentRef Id =“ApplicationShortcut”/&gt;”。Wix 是模糊的 af。 (2认同)