1

我有一个安装程序,我编写了一个简单的自定义操作来计算属性(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 对话框。

我错过了什么?我没有使用外部用户界面...仅本机用户界面。

4

1 回答 1

1

CostFinalize操作将是初始化 Windows Installer 中的重要状态所必需的。FilesInUseWindows 安装程序直到没有处理的事实InstallValidate是一个很好的提示。之后安排您的自定义操作CostFinalize应该让一切正常。例如,RestartResource将记录添加到重新启动管理器的 WiX 工具集中的自定义操作在InstallValidate.

于 2013-04-20T22:49:21.937 回答