WiX安装程序在卸载时不删除文件

时间:2013-11-07 23:41:02

标签: wix windows-installer wix3.7 burn

我正在告诉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文件本身。该程序安装正常,但删除似乎根本不起作用。

2 个答案:

答案 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上运行它。