我在.net 3.5 sp1中有一个WPF应用程序,我定期更改主窗口图标。我看到任务栏图标在vs托管进程下运行时更改,直接从bin / Debug或bin / Release文件夹运行,但是当二进制文件安装并从\ Program Files运行时没有!窗口的标题栏图标仍然正确更改...
我正在设置这样的图标:
Uri imageSource = new Uri("pack://application:,,,/MyProject;component/Images/test.ico");
this.Icon = BitmapFrame.Create(imageSource);
为什么任务栏图标不会改变?
我有一个ApplicationIcon集。这是任务栏图标显示的内容,而不是更改为我设置的内容。根据{{3}},如果没有设置此项,则ApplicationIcon只是一个后备。
我没有固定任务栏图标。
主窗口不是应用程序的启动窗口。实际上,没有启动窗口。该窗口从系统托盘图标打开。
上面提到的ApplicationIcon和test.ico的图标都将其编译操作设置为Resource。
WiX安装程序没有对exe或图标做任何特殊操作。 exe的引用如下:
<File Id="MyExe" Name="$(var.MyProject.TargetFileName)"
Source="$(var.MyProject.TargetPath)" KeyPath="yes" Vital="yes" />
我目前正在查看msdn以查看是否可以解决此问题,但似乎没有必要以这种方式覆盖Windows 7的默认行为。我有两个由WiX创建的快捷方式。一个在开始菜单的程序文件夹中,一个在开始菜单的启动文件夹中。
好吧这只是奇怪的,奇怪的,奇怪的。
我开始尝试解决另一个烦恼,当我不想要它时,我的窗口允许任务栏固定(这是默认的win7任务栏glomming)。所以我通过HKCR \ Applications \ MyEXEName.exe下的regedit手动设置IsHostApp REG_BINARY 0000。要使更改生效,我必须更新引用该应用程序的快捷方式(或者我可以重新安装)。瞧,下次启动应用程序时,不仅固定功能会消失,而且任务栏图标也会正确更新!!!
有人可以解释这是如何解决这个问题的吗?
答案 0 :(得分:1)
当Windows Installer在“开始”菜单中创建快捷方式时,它会设置指向安装程序缓存图标的快捷方式图标。广告需要此功能,其中引用的文件不存在但仍应显示正确的图标。如果删除了主.exe,它还允许向应用程序显示正确的图标(并且您可以运行MSI修复来修复它)。
您的应用程序以Startup文件夹中的快捷方式启动,快捷方式的图标在任务栏上使用。 (并且您有主窗口:无论您如何显示它,当应用程序启动时或仅当您单击通知区域中的应用程序图标时;此外,您必须有一个窗口才能从通知区域图标中获取点击。)< / p>
当您禁用将应用固定到任务栏时,它会忽略启动应用程序的快捷方式中设置的图标,因此当您更改窗口图标时,任务栏上的图标会更新。