使用DTF扩展FilesInUse

时间:2013-04-20 19:26:03

标签: c# wix windows-installer installshield dtf

我有一个安装程序,我已经编写了一个简单的自定义操作来计算属性(AppSearch扩展名)中某个进程类型的计数,然后在LaunchConditions中使用它来选择安装程序。客户现在想要更丰富的体验,所以我试图重写一点来触发FilesInUse对话框。

[CustomAction]
public static ActionResult DetectRunningProgram(Session session)
{
    var record = new Record(2);
    record[0] = null;
    record[1] = "Calc.exe";
    record[2] = "Calculator";
    session.Message(InstallMessage.FilesInUse, record);
    MessageBox.Show("TEST");

    return ActionResult.Success;
}

我在AppSearch之后安排了这个。我看到FilesInUse对话框显示但它不是模态的。一旦我关闭了TEST消息框,FilesInUse就会消失,我得到了InstallWelcome对话框。

我错过了什么?我没有使用外部UI ...仅限本机UI。

1 个答案:

答案 0 :(得分:1)

在Windows Installer中初始化重要状态时需要CostFinalize操作。 Windows安装程序在FilesInUse之前处理InstallValidate是一个很好的提示。在CostFinalize之后安排自定义操作可以使一切正常运行。例如,WiX工具集中的RestartResource自定义操作会在InstallValidate之前安排将记录添加到重新启动管理器。