我正在告诉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>
为什么文件没有被删除?我已尝试从burn exe文件和MSI文件本身。该程序安装正常,但删除似乎根本不起作用。
答案 0 :(得分:6)
所以,我发现了我的问题。
我没有正确添加guids。现在可以正确删除文件和文件夹。
答案 1 :(得分:1)
查看这个帖子; Removing files when uninstalling WiX
首先,我希望您不会删除MSI安装的文件,这会超出MSI的目的。它应该已经这样做了。
其次,您可以尝试将空的CreateFolder元素添加到Component(可能是组件未注册的情况,如果未包含KeyPath元素,或者未包含Components KeyPath =“Yes”)。
确保使用RemoveFolder元素。您也可以从链接中读取,不支持递归,因此您需要手动删除所有内容,并确保没有子文件夹。
Ps非常累人,你可以使用CustomAction用rmdir执行[System64] \ cmd.exe并在那里包含递归标记,然后在RemoveFiles之后安排它,并仅在UNISTALL上运行它。