卸载后程序文件中存在空目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了卸载后程序文件中存在空目录相关的知识,希望对你有一定的参考价值。

在卸载MSI软件包时,有一些空文件夹未从ProgramFiles中删除。有没有办法Wix,我可以确保卸载后与InstallDir一起删除所有空目录。

答案

该文件夹可能被另一个进程使用。如果是这样,您甚至无法手动删除文件夹。在这种情况下,首先使用自定义操作关闭这些进程并继续卸载。现在文件夹将被删除。

如果没有进程正在运行但仍未删除,则可以按照以下步骤操作。

  1. 使用“RemoveFolder”删除卸载时的文件夹 <Directory Id="DIR_ID"> <Component Id="comp_file" Guid="INSERT_GUID_HERE"> <RemoveFolder Id="FOLDERID" On="uninstall" /> <File Id="FILEID" Source="file.txt" /> </Component> </Directory> [要么]
  2. 编写自定义操作并删除所有文件和文件夹。通过这种方式,您可以删除文件和文件夹以及InstallDir。
另一答案

RemoveFile / RemoveFolder:除了实现你自己的自定义动作(不推荐),还有RemoveFile / RemoveFolder concept。在MSI文件中,这映射到RemoveFile table。在WiX中,它是使用RemoveFile ElementRemoveFolder Element实现的。

RemoveFolderEx:还有另一个可用元素,它是Util命名空间中的自定义WiX扩展。它被称为RemoveFolderEx Element。此元素还可以删除子目录 - as explained here。你可以在这里找到a brief sample(注意顶部的xmlns:util命名空间)。并且总是有github.com搜索。

空文件夹:通常空文件夹指示组件引用问题,或通过自定义操作或应用程序本身在正常操作期间创建的文件夹。我的猜测是后者是你的情况?


一些链接:

以上是关于卸载后程序文件中存在空目录的主要内容,如果未能解决你的问题,请参考以下文章

NSIS 卸载程序不删除目录

Windows Powershell程序在哪里?

Wix 工具集:“由于存在另一个客户端,因此不允许卸载组件”后完成清理

iphone钥匙串项目在应用程序卸载后仍然存在?

如何在NSIS卸载时线运行一个EXE文件?(EXE文件在卸载程序目录下)用啥代码?

Firebase Facebook 登录即使在卸载应用程序后清除缓存和注销