いくつかのファイルタイプのレジストリを編集して、アイコンとそれらを実行するアプリケーションを変更するNSISインストーラーに取り組んでいます。
私たちのワークフローは、Win7 / 32ビット、WinXP / 32、およびWinXP / 64で正しく機能しますが、Win7/64では機能しません。これを複数のWin7/64マシンでテストしましたが、問題は両方のWin7/64インスタンスで一貫しています。
追加の詳細の1つは、新しい関連付けを作成すると正常に機能するため、既存の関連付けをオーバーライドする場合のみであるということです。
レジストリの編集は単純に設定されDefaultIcon
、shell/open/command
レジストリの編集が完了したら、SHChangeNotify
システムコールを使用して、シェルを強制的に新しい設定で更新します。
Win7 / 64では、既にレジストリにあるファイルタイプが新しい値に更新されていません。
; Tell the shell to reset its icon cache
System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \
(0x08000000, 0, 0, 0)'
特にシステムの再起動やExplorerの再起動を伴わないソリューションは、どんな助けでも大歓迎です。助けてくれてありがとう!-クリス