【问题标题】:How to handle Burn FilesInUse event如何处理 Burn FilesInUse 事件
【发布时间】:2014-10-15 05:46:06
【问题描述】:

我已经使用 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 安装程序才是数据的真正创建者)。

【问题讨论】:

    标签: wix windows-installer burn


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2018-08-05
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 2019-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多