首页 > 解决方案 > 如何防止 CostFinalize 操作在卸载期间删除文件夹/文件

问题描述

下面是 CostFinalize 开始和结束之间的日志。我要保留 MyFolder 文件夹及其内容。但它作为默认操作被删除

行动开始时间 9:30:32:CostFinalize。

添加 ABCDIR 属性。它的值是'C:\ProgramData\ABC\MyFolder\'。属性更改:修改.....这适用于 Myfolder 中的所有元素

MSI (s) (98:F8) [09:30:32:860]: Dir (target): Key: ABCDIR , Object: C:\ProgramData\ABC\MyFolder\

行动于 9:30:35 结束:CostFinalize。返回值 1。

标签: wix

解决方案


成本核算CostFinalize是“成本核算”的一部分的标准操作 - 确定磁盘空间安装要求和其他事情的整体过程。File Costing是这个过程的核心部分。还有其他事情发生了——比如我猜想为 I/O 操作解析目录和调度文件——说实话,不确定所有细节——它们并没有真正完整地记录在案。

据我所知,成本核算操作不会对系统进行任何更改,但它们将有助于安排要安装或卸载的文件。因此,看起来删除是因为此操作而发生的。

RemoveFilesInstallExecuteSequence处理两次。首先构建一个执行脚本,然后运行实际的安装事务操作。在第二次运行标准操作RemoveFilesInstallFiles执行相应的文件操作时,您的文件可能会被该RemoveFiles操作删除 - 除非有自定义操作在序列中的其他位置进行删除。


推荐阅读