目录 NN 位于用户配置文件中,但未列在 RemoveFile 表中
Posted
技术标签:
【中文标题】目录 NN 位于用户配置文件中,但未列在 RemoveFile 表中【英文标题】:Directory NN is in the user profile, but is not listed in the RemoveFile table 【发布时间】:2011-03-18 11:05:45 【问题描述】:当我尝试创建安装程序时,出现以下错误:
目录 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>
【问题讨论】:
我想在卸载时删除 Monarch 子文件夹,但我不想删除它的父文件夹 ProgramMenuDir 怎么样?也许,该父文件夹是公司名称文件夹,并且同一公司的许多其他产品在其下创建了子文件夹。 【参考方案1】:据我所知,问题在于<RemoveFolder/>
元素的使用。如果 'Directory' 属性被省略,它将采用父组件的目录。在您的情况下,它是一个 Id="EFIMonarch" 的目录。这解释了为什么您会收到外部目录 (ProgramMenuDir) 的警告,但不会收到 EFIMonarch 目录的警告。
尝试替换:
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
与
<RemoveFolder Id='RemoveProgramMenuDir' Directory='ProgramMenuDir' On='uninstall' />
另外,明确每个 RemoveFolder 元素是个好主意。
希望这会有所帮助。
【讨论】:
就我而言,我看到此错误是因为我忘记将组件添加为功能。 @TheMouthofaCow 对我来说也一样。 在教程中有这个属性会很好,我想如果是的话,大多数人都可以直观地理解它。这是我能找到的唯一一篇费心解释原因而不是仅仅提供一个无效示例的文章。 Wix's tutorial 在混淆这些属性的功能方面做得非常出色。对完全不同的元素重复使用相同的Id
,使其看起来像是引用而不是无关的标识符。
我遇到了同样的错误,谷歌把我带到了这里。但是,就我而言,我在 Feature 标签下缺少了 <ComponentRef Id="ApplicationShortcut" />
。蜡是模糊的。【参考方案2】:
只是为一些即使在遵循此问题的答案后仍可能遇到此问题的其他人写下这篇文章。
我遇到了同样的问题,即使在 RemoveFolder 中明确指定目录也没有帮助我,我尝试将包含快捷方式安装/卸载组件的 DirectoryRef 放在同一片段中的 TARGETDIR 之后,它帮助修复了我的问题问题。
【讨论】:
【参考方案3】:如果以下答案仍然无效。尝试重新启动您的视觉工作室。
【讨论】:
【参考方案4】:如果其他答案仍然不适合您,请尝试检查Suppress ICE validation
选项,Visual Studio 将忽略这些验证,请按照以下路线操作:
YourProject
-> Properties
-> Tool Settings
【讨论】:
这是做什么的?以上是关于目录 NN 位于用户配置文件中,但未列在 RemoveFile 表中的主要内容,如果未能解决你的问题,请参考以下文章
该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的解决办法
该扩展程序未列在 Chrome 网上应用店中,并可能是在您不知情的情况下添加的解决办法
提交应用程序 - 添加本地化,但我的语言未列在组合框中?