如何处理Burn FilesInUse事件

时间:2014-08-21 14:26:24

标签: wix windows-installer burn

我已经使用WiX / Burn编写了一个自定义托管引导程序应用程序,现在我尝试扩展它来处理ExecuteFilesInUse事件。我已经成功触发了事件,并完成了我给出的转储,让我感到困惑......用Powershell锁定文件后(使用File.OpenFileShare.None)并启动卸载,我得到两个回调数据:

[0484:0B48][2014-08-21T15:14:22]i000: Intercepted ExecuteFilesInUse event. Parameters: 
        PackageId = TheProduct.msi
        Files = {
            "1524"
            "Windows PowerShell"
            ""
            ""
            ""
            ""
            ""
            ""
        }
        Result = None
[0484:0B48][2014-08-21T15:14:22]i000: Intercepted ExecuteFilesInUse event. Parameters: 
        PackageId = TheProduct.msi
        Files = {
            "Windows PowerShell"
            "Windows PowerShell (Process Id: 1524)"
        }
        Result = None

所以,两个回调,"相同",但格式不同的数据。此外,第一个有一堆空元素。

这种明显的疯狂是否有某种方法?我没有找到任何关于Burn或Windows Installer的文档(我猜这是Windows安装程序,它是数据的真正创建者)。

1 个答案:

答案 0 :(得分:0)

由于我无法让Burn事件为我工作,所以在开始Apply阶段之前,我最终运行了自己的FilesInUse检查,创建了一个短暂的RestartManager会话。这里有一个明显的竞争条件,在检查完成后应用程序启动只是,但在这种情况下它被认为是可接受的。