10

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

4

2 回答 2

6

所以,我发现了我的问题。

我没有正确添加向导。现在可以正确删除文件和文件夹。

于 2013-11-08T18:14:35.463 回答
1

看看这个线程;卸载 WiX 时删除文件

首先,我希望您不要删除由 MSI 安装的文件,这会超出 MSI 的目的。它应该已经这样做了。

其次,您可以尝试将空的 CreateFolder 元素添加到 Component(如果未包含 KeyPath 元素或未包含组件 KeyPath="Yes" 可能是组件未注册的情况)。

确保使用 RemoveFolder 元素。正如您也可以从链接中看到的那样,不支持递归,因此您需要手动删除所有内容,并确保没有子文件夹。

Ps 很累,你可以使用 CustomAction 执行 [System64]\cmd.exe 和 rmdir 并在其中包含递归标志,然后在 RemoveFiles 之后安排它,并仅在 UNISTALL 上运行它。

于 2013-11-08T12:26:22.080 回答