Это работает при установке или удалении в Windows XP и 7, если у вас есть только один процесс установки:
NativeWindow nativeWnd = new NativeWindow();
try
{
IntPtr hWnd = (from p in Process.GetProcessesByName("msiexec") where p.MainWindowHandle != IntPtr.Zero select p.MainWindowHandle).SingleOrDefault();
if (hWnd == IntPtr.Zero)
MessageBox.Show(message, title, buttons, icon, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
else
{
nativeWnd.AssignHandle(hWnd);
MessageBox.Show(nativeWnd, message, title, buttons, icon);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Exception thrown in ShowModalDlg", MessageBoxButtons.OK, MessageBoxIcon.Error, MessageBoxDefaultButton.Button1, MessageBoxOptions.DefaultDesktopOnly);
}
finally { nativeWnd.ReleaseHandle(); }