当我尝试创建安装程序时,我收到以下错误:
目录 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>
答案 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
答案 3 :(得分:-1)
如果以下答案仍然无效。尝试重新启动Visual Studio。