我有一个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关闭)
在WinXP上,循环运行永远,说PID无效。因为,我使用运行实例中的PID,我不确定这是怎么回事。
任何想法代码有什么问题?