Установщик WiX не удаляет файлы при удалении

Я говорю MSI-файл wix для удаления файлов при удалении, и он просто не регистрирует его.

Для пакета я называю файл MSI таким образом:

<MsiPackage SourceFile="..\..\..\..\Kiosk\MyProject\bin\Release\MyProject.msi"        Name="MyProject.msi" DisplayInternalUI="yes" Permanent="no" />

И в файле MSI я называю это:

<ComponentGroup Id="Purge" Directory="INSTALLFOLDER">
  <Component Id="PurgeFiles" Guid="">
    <RemoveFile Id="RemoveBaseFolder" Name="*" On="uninstall" Directory="INSTALLFOLDER" />
    <RemoveFile Id="RemoveLanguage_af" Directory="Language_af" Name="*.*" On="uninstall"/>
    <RemoveFile Id="RemoveLanguage_de" Name="*.*" On="uninstall" Directory="Language_de"/>
    <RemoveFile Id="RemoveLanguage_es" Name="*.*" On="uninstall" Directory="Language_es"/>
    <RemoveFile Id="RemoveLanguage_fr" Name="*.*" On="uninstall" Directory="Language_fr"/>
    <RemoveFile Id="RemoveLanguage_it" Name="*.*" On="uninstall" Directory="Language_it"/>
    <RemoveFile Id="RemoveLanguage_ja" Name="*.*" On="uninstall" Directory="Language_ja"/>
    <RemoveFile Id="RemoveLanguage_ko" Name="*.*" On="uninstall" Directory="Language_ko"/>
    <RemoveFile Id="RemoveLanguage_ru" Name="*.*" On="uninstall" Directory="Language_ru"/>
    <RemoveFile Id="Removezh_CN" Name="*.*" On="uninstall" Directory="zh_CN"/>
    <RemoveFile Id="RemoveDatabase" Name="*.*" On="uninstall" Directory="Database"/>
    <RemoveFile Id="RemoveFileData" Name="*.*" On="uninstall" Directory="FileData"/>
    <RemoveFile Id="RemoveRecordingTempData" Name="*.*" On="uninstall" Directory="RecordingTempData"/>
    <RemoveFile Id="RemoveSignatureData" Name="*.*" On="uninstall" Directory="SignatureData"/>
    <RemoveFile Id="RemoveCacheUpdater" Name="*.*" On="uninstall" Directory="CacheUpdater"/>
    <RemoveFile Id="RemoveRecordingUploader" Name="*.*" On="uninstall" Directory="RecordingUploader"/>
  </Component>
</ComponentGroup>

Затем я ссылаюсь на группу компонентов:

<Feature Id="ProductFeature" Title="CacheUpdaterInstaller" Level="1">
<ComponentGroupRef Id="Purge"/>
</Feature>

Почему файлы не удаляются? Я пробовал как из файла записи exe, так и из самого файла MSI. Программа устанавливается нормально, но удаление, кажется, не работает вообще.

2 ответа

Итак, я узнал, в чем заключалась моя проблема.

Я не правильно добавлял гидов. Файлы и папки теперь правильно удаляются.

Проверьте эту тему; Удаление файлов при удалении WiX

Прежде всего, я надеюсь, что вы не удаляете файлы, которые устанавливаются MSI, которые будут соответствовать цели MSI. Это должно уже сделать это.

Во-вторых, вы можете попробовать добавить пустой элемент CreateFolder в Компонент (это может быть в случае, если компонент не регистрируется, если элемент KeyPath не включен или Компоненты KeyPath="Yes" не включены).

Убедитесь, что вы используете элемент RemoveFolder. Как вы также можете прочитать по ссылке, рекурсия не поддерживается, поэтому вам нужно вручную удалить все и убедиться, что нет подпапок.

Так как это довольно утомительно, вы можете использовать CustomAction, чтобы выполнить [System64]\cmd.exe с rmdir и включить туда рекурсивный флаг, затем запланировать его после RemoveFiles и запустить только на UNISTALL.

Другие вопросы по тегам