我已经使用WiX / Burn编写了一个自定义托管引导程序应用程序,现在我尝试扩展它来处理ExecuteFilesInUse
事件。我已经成功触发了事件,并完成了我给出的转储,让我感到困惑......用Powershell锁定文件后(使用File.Open
和FileShare.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安装程序,它是数据的真正创建者)。
答案 0 :(得分:0)
由于我无法让Burn事件为我工作,所以在开始Apply阶段之前,我最终运行了自己的FilesInUse检查,创建了一个短暂的RestartManager会话。这里有一个明显的竞争条件,在检查完成后应用程序启动只是,但在这种情况下它被认为是可接受的。