我告诉wix MSI文件在卸载时删除文件,但它根本没有注册它。
对于这个包,我这样调用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文件本身。该程序安装良好,但删除似乎根本不起作用。
发布于 2013-11-09 02:14:35
所以,我发现了我的问题所在。
我没有正确地添加guids。文件和文件夹现在可以正确删除。
发布于 2013-11-08 20:26:22
查看此帖子;Removing files when uninstalling WiX
首先,我希望您不要删除由MSI安装的文件,这将有悖于MSI的目的。它应该已经这样做了。
其次,您可以尝试向组件添加空的CreateFolder元素(如果不包括KeyPath元素,或者不包括Components KeyPath="Yes“,则可能出现组件未注册的情况)。
确保使用RemoveFolder元素。由于您也可以从链接中读取,因此不支持递归,因此您需要手动删除所有内容,并确保没有子文件夹。
Ps这很累人,你可以使用CustomAction来执行带有rmdir的System64\cmd.exe,并在其中包含递归标志,然后在RemoveFiles之后调度它,并且只在UNISTALL上运行它。
https://stackoverflow.com/questions/19848971
复制相似问题