我有一个通过ClickOnce部署到网络共享的应用程序。我将安装模式设置为仅在线。应用程序在系统托盘中运行。在Windows 7中,首次运行程序时,它将显示在扩展系统托盘中(您必须首先单击箭头才能进入该项目)。问题是,当用户设置其首选项以使应用程序显示在主托盘中时,首选项将在我发布更新时丢失。然后我的应用程序将在首选项中显示两次(一次用于旧版本,它设置为在主托盘中显示,另一种是新版本,未设置为显示在主托盘中。我怎样才能获得它工作,以便他们只需要设置一次他们的首选项,以显示它?
答案 0 :(得分:2)
这实际上可以完成(即,即使ClickOnce在更新期间更改了可执行文件的路径,您也可以使Windows 7将通知图标识别为相同的通知图标)。它非常挑剔,并且要求以下标准中的每一个都具有严格的精度:
如果没有路径保存设置-OR- Shell_NotifyIcon开始向您抛回错误,则表示:
如果你在某个时候陷入困境并且Shell_NotifyIcon开始返回false并且似乎不会停止,则生成一个新的GUID以重新开始该过程。
另请注意:检查操作系统版本,以确保在尝试执行与GUID的通知图标有关的任何操作时,您都在Windows 7或更高版本上。 Windows Vista及以下版本将会出类拔萃。
示例:
var os = Environment.OSVersion.Version;
if (os.Major > 6 || (os.Major == 6 && os.Minor >= 6))
{
lpData.guidItem = Guid.Parse("Your Own Guid Here");
lpData.uFlags |= FlagEnum.NIF_GUID;
}
答案 1 :(得分:0)
我们曾经为我们的应用程序提供了notifyicon。我们的问题是,除非用户将所有通知设置为始终显示,否则它不会显示。如果用户暂时没有运行应用程序,然后运行它,则在用户多次使用之前将不再显示该应用程序。
我不知道有什么方法可以解决这个问题。由于这个原因以及一些商业原因,我们最终将其删除。