C# 设置后,通知图标并不总是出现在系统托盘中,但仍能正常工作

C# 设置后,通知图标并不总是出现在系统托盘中,但仍能正常工作,c#,windows-xp,windows-installer,system-tray,notifyicon,C#,Windows Xp,Windows Installer,System Tray,Notifyicon,首先,当我正常启动应用程序时(双击exe),它工作得非常好:通知图标总是出现在系统托盘中。当应用程序在msi设置()结束时启动时,它也可以正常工作 但是,当应用程序从以安静模式运行的msi启动时,我的通知图标并不总是出现,但应用程序功能正常:我可以使用键盘快捷键访问上下文菜单。我在三台运行Windows XP的计算机上进行了测试,成功率约为50%。我也在Windows7上进行了测试:它工作得非常好 我知道在Windows XP中启动时,通知图标会出现一些问题,但我不知道这是否相关( 所以,我想知

首先,当我正常启动应用程序时(双击exe),它工作得非常好:通知图标总是出现在系统托盘中。当应用程序在msi设置()结束时启动时,它也可以正常工作

但是,当应用程序从以安静模式运行的msi启动时,我的通知图标并不总是出现,但应用程序功能正常:我可以使用键盘快捷键访问上下文菜单。我在三台运行Windows XP的计算机上进行了测试,成功率约为50%。我也在Windows7上进行了测试:它工作得非常好

我知道在Windows XP中启动时,通知图标会出现一些问题,但我不知道这是否相关(


所以,我想知道你们当中是否有人遇到过这个问题。你认为这是Windows XP的错误吗?或者它与谁启动应用程序有关(msiexec vs.exe)?我不认为这可能是我的代码中的错误,因为当我直接启动它时,它工作得很好。

你必须意识到,当你在静默状态下运行时(/quiet/qn UILevel=3)InstallUISequence不运行,只有InstallExecuteSequence运行。因此,您需要安排自定义操作在InstallExecuteSequence结束时以静默方式运行,以便您的C#程序运行并将其自身放入任务栏中


对于那些质疑这一要求的人来说,这样做是很正常的。作为一名短信管理员,我会悄悄推出软件包,关闭一个托盘应用程序,卸载旧版本,安装新版本,然后放回试用应用程序。所有这些,在代理几乎没有注意到的情况下,它从未丢失过。

我从未听说过“安静模式”@Hans,我认为OP是指运行MSI时可以使用的“安静模式”,即
msiexec/quiet
=)@Rob,为什么安装程序需要托盘图标?@Hans,我从阅读问题中感觉到,用户的意思是“当应用程序从以安静模式运行的msi启动时,我的通知图标并不总是出现,但应用程序正常运行”,安装程序不需要托盘icon@Rob,为什么安装程序应该是安静的,却要启动程序?你真的不必回答:)+1来自我-你在第二段中描述的场景是我努力尝试的场景(并且失败得很厉害!)在我对OPs问题的评论中描述=)没问题。我曾为一家大型航空公司工作,该公司的绿屏终端基本上是无状态的。我们曾推出一个软件更新,删除并重新加载,甚至在程序运行时启动备份。最后,我们向主机发送一个文本命令,重新绘制屏幕。他们不知道是什么击中了他们。:-)谢谢你的回答Christopher。事实上,我有一个构建后脚本,可以修改我的MSI并在InstallExecuteSequence中添加一行,以在特定条件下启动我的应用程序(CLIENTUILEVEL=2或CLIENTUILEVEL=3)。我将序列设置为-1(-1是一个wierd建议。这是在成功完成时显示的对话框的保留序列号,我不认为它会在静默安装中被调用,但遗憾的是,它必须是因为您的应用程序已启动。尽管如此,我还是会在安装后作为即时执行CA进行排序,以便我们知道它正在用户群中运行ntext.Hmmm,由于您的应用程序已启动,而且问题是间歇性的,我想知道应用程序本身是否有问题。我真的怀疑是Windows错误。我使用通知图标制作了最简单的应用程序,只是为了测试,但问题仍然是随机出现的。是否有方法关闭此线程(我是新来的)