Что я сделал, если вы запускаете приложение обновления изнутри самостоятельно, выполнить программу обновления с Process.Start("\Path\To\Updater.exe");
, а затем сразу же закройте главное приложение (с this.Close();
или Application.Quit();
. Он должен работать нормально.
чтобы убить главного приложения изнутри программы обновления, вам придется использовать P/Invoke и системных вызовов методов, чтобы найти и убить главного приложения это должно в конечном итоге что-то вроде этого (непроверенные):.
class CloseWindow
{
[DllImport("coredll.dll")]
private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);
[DllImport("coredll")]
public static extern int SendMessage(IntPtr hWnd, uint Msg, int wParam, int lParam);
public const int WM_CLOSE = 0x0010;
public static void Close(string windowName)
{
IntPtr hWnd = FindWindow(null, windowName);
SendMessage(hWnd, WM_CLOSE, null, null);
}
}
затем назовите его CloseWindow.Close("My Application Title");
.
Спасибо, это именно то, что я искал! – pdiddy