我有一个使用Wise安装程序安装的应用程序(编辑:Wise创建一个Setup.exe文件,而不是MSI)。安装后,会为某种文件类型设置一个图标:
HKEY_CLASSES_ROOT\.auz\DefaultIcon = C:\Path\To\App\some_icon.ico,0
然而,在安装之后,资源管理器选择使用通用的“白板+应用程序图标”图标显示此图标,该图标不同(我不提供)。
首次启动时,应用程序本身会注册图标和其他文件关联,以便上次运行的版本“拥有”这些文档。此时,资源管理器会更改此文件类型的图标并显示正确的图标,但是当我查看注册表时, DefaultIcon的值完全相同。< / p>
这是我到目前为止所尝试的
这些都不起作用。获得正确图标的唯一方法是让程序自己安装它。我在注册表中找不到任何更改。我脱掉了头发。
我想避免什么
有关如何让Explorer在安装后显示正确图标的任何建议吗?
答案 0 :(得分:1)
有几件事情浮现在脑海中:
对于Wise,请执行以下操作(而不是自己创建注册表项):
[编辑] 您可能还缺少必需的注册表项(图标可能不足以让shell显示它):
HKEY_CLASSES_ROOT\.auz\(default) = auzfile
HKEY_CLASSES_ROOT\.auz\shell\open\command = C:\Path\To\App.exe
答案 1 :(得分:1)
这是解决方案。
每种文件类型(在本例中为“.auz”)都注册为:
DefaultIcon
键,其中包含图标资源的路径,HKEY_CLASSES_ROOT\.auz\(default)
值的值,给出文件类型的描述,例如: “Foobar文件”。除此之外,还有一个“Foobar Document”文档类型的条目,或者更具体地说,是一个如何从shell打开这些文档的密钥:
HKEY_CLASSES_ROOT\Foobar Document\Shell\command\open\(default) = C:\Path\To\App.exe "%1"
显然,此密钥取代为特定文件扩展名所写的值。由于图标位于.exe文件的外部,因此Windows资源管理器使用应用程序的第一个图标为“Foobar Document”类型的所有文件创建一个图标(即我提到的“白板+应用程序图标”图标)。
现在,我错了的是应用程序本身确实改变了
的值HKEY_CLASSES_ROOT\.auz\(default)
在启动时略有不同的值,比如说“Foobar 1.2 Document”(没有DRY的问题)。因此,“Foobar Document”的链接丢失了,.auz文件在第一次启动后得到了它们的图标。
所以我只需完全删除HKEY_CLASSES_ROOT\Foobar Document
键,然后voilà就解决了这个问题!