У меня есть приложение, которое устанавливается с помощью установщика Wise (EDIT: Wise создает файл Setup.exe, а не MSI). При установке устанавливается иконка для определенного типа файла:
HKEY_CLASSES_ROOT\.auz\DefaultIcon = C:\Path\To\App\some_icon.ico,0
Однако сразу после установки Explorer выбирает для отображения этого значка общий значок «белый лист + значок приложения», который отличается (и не предоставляется мной).
При первом запуске приложение само регистрирует значки и другие ассоциации файлов, так что последняя запущенная версия «владеет» этими документами. В этот момент Explorer изменяет значок для этого типа файла и отображает правильный, но когда я смотрю в реестр, значение DefaultIcon остается точно таким же.
Это то, что я пробовал до сих пор
- Удаляю все записи из реестра и пишу их сам.
- После установки «прикоснуться» к значению DefaultIcon, а затем запустить небольшую программу, которая вызывает только SHChangeNotify (SHCNE_ASSOCCHANGED) (моя программа делает это после обновления ассоциаций файлов в реестре).
- После установки убиваем и перезапускаем Explorer.
- После установки с помощью TweakUI «восстановить» значки на рабочем столе.
Ничего из этого не работает. Единственный способ получить правильный значок - позволить самой программе установить его. Я не могу найти никаких изменений в реестре. Я отрываю волосы.
Чего я бы хотел избежать
- Тестирование с помощью другого установщика
- Слишком частое изменение сценария установки (у меня нет самого Wise, так как программа установки создается на другом компьютере по запросу).
- Вставьте значки в исполняемый файл.
Есть предложения, как заставить Explorer отображать правильный значок после установки?