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

问题描述 投票:1回答:2

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

wix windows-installer
2个回答
1
投票

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

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

  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。

1
投票

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搜索。

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


一些链接:

© www.soinside.com 2019 - 2024. All rights reserved.