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

时间:2018-09-04 11:22:53

标签: wix windows-installer

在卸载MSI软件包时,有一堆空文件夹没有从ProgramFiles中删除。有一种Wix方式,可以确保在卸载后与InstallDir一起删除所有空目录。

2 个答案:

答案 0 :(得分: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可以搜索。

空文件夹 :通常,空文件夹表示组件引用问题,或者表示在正常操作过程中通过自定义操作或应用程序本身创建的文件夹。我的猜测是后者适合您吗?


某些链接

答案 1 :(得分:1)

该文件夹可能被其他进程使用。如果是这样,您甚至无法手动删除文件夹。在这种情况下,1st使用自定义操作关闭那些进程,然后继续卸载。现在,文件夹将被删除。

如果没有正在运行的进程,但仍未删除,则可以执行以下步骤。

  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>
    

    [OR]

  2. 编写自定义操作并删除所有文件和文件夹。这样,您可以删除文件和文件夹以及InstallDir。