C# wix-如何删除非空文件夹

C# wix-如何删除非空文件夹,c#,wix,C#,Wix,我已经阅读了这个网站上的所有主题,但没有找到我需要的 我有一个程序的两个版本:旧版本和新版本。 在旧版本中,我有文件夹f1。 在新版本中,我没有此文件夹f1 当新程序的安装程序检测到旧版本时,它会删除此旧版本,但不会删除文件夹f1 如何从新版本的安装程序中删除f1 <Component Id ="deleteall" Guid="AA11A32B-9E1E-458A-8C94-3EFEDA77E494" > <RemoveFolder Id='iD

我已经阅读了这个网站上的所有主题,但没有找到我需要的

我有一个程序的两个版本:旧版本和新版本。 在旧版本中,我有文件夹f1。 在新版本中,我没有此文件夹f1

当新程序的安装程序检测到旧版本时,它会删除此旧版本,但不会删除文件夹f1

如何从新版本的安装程序中删除f1

      <Component Id ="deleteall"  Guid="AA11A32B-9E1E-458A-8C94-3EFEDA77E494" >
        <RemoveFolder Id='iDocDir' On='both' />
      </Component>

      <Directory Id="iDocDir" Name="iDocs">
      </Directory>

不工作=(

您应该查看。它正是您想要的


它的工作原理是将临时行写入
RemoveFile
表。但是,如手册中所述,使用它有一些限制:

因为这可能会极大地影响Windows Installer的文件成本, 临时行必须在CostInitialize标准之前写入 操作。不幸的是,MSI没有为 目录层次结构,直到稍后在 行动

一个简单的解决方案,用于在运行期间删除文件夹的典型用例 卸载是将目录路径写入注册表并加载 在卸载过程中删除它

如果使用自定义操作设置属性,请确保 计划在WixRemoveFoldersEx自定义操作之前执行

在Bob的帖子中:

因为添加要删除的目录和文件会影响MSI的文件 成本计算,RemoveFolderEx必须在成本计算之前完成自己的工作。 不幸的是,MSI没有为目标目录设置属性 直到成本计算完成


如果您已经在注册表中保存了以前的安装路径(Rob解释了如何执行此操作),则无需担心,因为AppSearch操作会在CostInitialize之前运行。

您正在进行主要升级还是次要升级?警告:On=“uninstall”还会删除升级时的文件夹。
<Component Id="deeletall" Guid="PUT-GUID-HERE">
    <util:RemoveFolderEx Id="RemoveiDocDir" On="uninstall" Property="iDocDir" />
</Component>