为什么FileInUse的Wix session.Message显示为空?

时间:2012-08-14 18:42:33

标签: wix windows-installer wix3.5

我有一个Wix自定义操作,它会查找Outlook并提示用户将其终止。我不想自己杀OL,但希望用户这样做。 这是我的自定义操作:

[CustomAction]
    public static ActionResult PromptToCloseOutlook(Session session)
    {
        session.Log("Detecting running instances of Microsoft Outlook...");
        ActionResult retVal = ActionResult.Success;

        Process outlook;
        while (null != (outlook = Process.GetProcessesByName("outlook").FirstOrDefault()))
        {
            session.Log("Microsoft Outlook is running.");

            var result = session.Message(
                // See: http://msdn.microsoft.com/en-us/library/windows/desktop/aa371614(v=vs.85).aspx
                InstallMessage.FilesInUse,
                new Record(null, "outlook.exe", outlook.Id)
            );


            session.Log("User selected option:" + result);

            if (result == MessageResult.Cancel)
            {
                session.Log("User does not wish to close Outlook at this time.");
                retVal = ActionResult.UserExit;
            }
            else if (result == MessageResult.Ignore)
            {
                session.Log("User wished to ignore and proceed.");
                break;
            }
        }
        return retVal;
    }

我将其称为:

<Custom Action="CA.PromptToCloseOutlook" Before="InstallValidate" />

然而,当它在Win7上运行时,它会显示一个空白窗口(但正确等待直到OL关闭) empty window

在WinXP上,循环运行永远,说PID无效。因为,我使用运行实例中的PID,我不确定这是怎么回事。

任何想法代码有什么问题?

0 个答案:

没有答案