【问题标题】:WiX: Deleting files and subfolders in appdata folderWiX:删除 appdata 文件夹中的文件和子文件夹
【发布时间】:2023-12-13 12:07:02
【问题描述】:

我已经广泛搜索了有关如何执行此操作的答案,尽管我遇到了一些答案,但对于我的 WiX 知识而言,它们要么不够具体,要么太高级。

如何在使用 WiX 卸载程序时删除由应用程序(不是安装程序)创建的 appdata 文件夹中的文件夹、文件和子文件夹(以及父文件夹)。

使用控制面板卸载应用程序将删除 AppData 中的文件夹,但是,当使用安装程序卸载应用程序时,情况并非如此。

任何帮助将不胜感激。

我目前有:

<Property Id="APPLICATIONFOLDER">
    <RegistrySearch Root="HKCU" Key="Software\AppCo\AppName" Type="raw" Id="APPLICATIONFOLDER_REGSEARCH" Name="PrivateDir" />
</Property>

<DirectoryRef Id='PrivateDataFolder'>
    <Component Id="PrivateData" Guid="*">
        <CreateFolder Directory="PrivateDataFolder"/>

        <util:RemoveFolderEx On="uninstall" Property="APPLICATIONFOLDER" />

        <RemoveFolder Id="PrivateDataFolder" On="uninstall"/>
        <RegistryValue Root="HKCU" Key="Software\AppCo\AppName" Name="PrivateDir" Type="string" Value="[PrivateDataFolder]" KeyPath="yes"/>
    </Component>
</DirectoryRef>

但是,这似乎不起作用。

Edit2:文件夹内的部分文件将被删除,但不会删除整个文件夹和子文件夹。

【问题讨论】:

  • 我认为无论是使用控制面板还是 msi 文件,卸载都是由 msiexec.exe 系统(即 windows 安装程序系统)完成的。

标签: wix


【解决方案1】:

RemoveFolderEx 与分配给AppData 中父文件夹的组件一起使用。 Bob Arnson 进一步讨论了它here。请注意,您不能使用分配的目录,因此创建注册表项以获取要删除的 AppData 文件夹的路径将是谨慎的。确保在项目中包含 UtilExtension。

【讨论】:

  • 我编辑了我原来的问题,请你看一下并告诉我哪里出错了?