Когда я пытаюсь создать установщик, я получаю следующую ошибку:
Каталог 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>
Насколько я понимаю, проблема заключается в использовании элемента
. Если атрибут «Каталог» опущен, он принимает каталог родительского компонента. В вашем случае это каталог с Id = "EFIMonarch". Это объясняет, почему вы получаете предупреждение для внешнего каталога (ProgramMenuDir), но не получаете его для каталога EFIMonarch.
Попробуйте заменить:
<RemoveFolder Id='ProgramMenuDir' On='uninstall' />
на
<RemoveFolder Id='RemoveProgramMenuDir' Directory='ProgramMenuDir' On='uninstall' />
Кроме того, рекомендуется указывать явно для каждого элемента RemoveFolder.
Надеюсь, это поможет.