【问题标题】:Empty directories are present in programfiles after uninstall卸载后程序文件中存在空目录
【发布时间】:2018-09-05 05:47:42
【问题描述】:

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

【问题讨论】:

    标签: wix windows-installer


    【解决方案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 一起删除。

    【讨论】:

    • 好点,我想他也可以尝试重新启动以查看文件夹是否被删除 - 如果有锁。
    【解决方案2】:

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

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


    一些链接

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 2021-09-11
      • 2014-09-13
      • 1970-01-01
      相关资源
      最近更新 更多