应用程序的卸载程序通常会启动新进程,我试图让我的应用程序知道它,所以如果在卸载后,它将执行一些任务。
以 NSIS 为例。
string uninstallstring = "C:\\Program Files (x86)\\Pidgin\uninstall.exe"; // reg.GetValue("UninstallString").ToString();
Process p = new Process()
{
StartInfo = new ProcessStartInfo()
{
FileName = uninstallstring
},
EnableRaisingEvents = true
};
p.Start();
p.WaitForExit();
Debug.WriteLine(p.HasExited);
Debug.WriteLine(p.ExitCode);
// clean up TASKS after uninstall here
// clean clean clean
上面的代码将尝试卸载 Pidgin。它将 Start() 并等待卸载程序完成其工作并在调试面板中显示 True/False (HasExited) 及其 ExitCode。
问题是,在 Start() 执行后,“uninstall.exe”在“C:\Users\Jayson\AppData\Local\Temp\~nsu.tmp”和“uninstall”中启动了一个新的应用程序“Au_.exe” .exe" 关闭,WaitForExit() 已完成工作,调试面板显示
True
0
这些是“HasExited”和“ExitCode”,但 Pidgin Uninstall 仍在运行,这告诉我“uninstall.exe”启动了“Au_.exe”而不是他的子进程。
我的问题是,如何确保卸载程序完成其工作?