[英]Terminating process in CustomAction
我有一个自定义操作安装程序类,在其中捕获了以下两个事件:
我实际上想做的是终止在主应用程序中创建的进程...此“进程”本质上是我启动的一个exe,它位于系统托盘中,每隔2个向用户显示通知分钟。
当我选择卸载主应用程序时,系统将提示以下对话框:
但是,奇怪的是, 在此对话框之后,我在OnBeforeUninstall和Uninstall中输入的代码被触发了。
我根本不想显示此对话框。
难道我做错了什么?
从我的研究中,我注意到此对话框来自ORCA中的InstallValidate键。 我不知道在此之前安排我的CA是否安全。
有什么办法可以安全地终止我的进程而不会出现此对话框?
好吧,在Google和特定Yahoo论坛上进行了大量研究之后,我要做的就是通过Orca编辑MSI。
摆脱了对话框的出现,我自己的自定义操作代码负责终止该过程。
希望这对某人有帮助。
您需要等待进程退出,然后继续卸载-WaitForExit或HasExited
Kill方法异步执行。 调用Kill方法之后,请调用WaitForExit方法以等待进程退出,或者检查HasExited属性以确定进程是否退出。
Process p = ...
p.Kill();
while(!p.HasExited)
{
p.WaitForExit(1000);
}
在卸载开始之前终止进程-
public override void Uninstall(System.Collections.IDictionary savedState)
{
KillProcess();
base.Uninstall(savedState);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.