Установщик 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.