Thinking Different





레지스트리로 아이콘을 연결한 후 바로 아이콘을 적용시키기 위해서는 SHChangeNotify()를 사용해서 Refresh 시켜줘야 된다.

인스톨쉴드 스크립트를 열고 아래와 같이 입력한다

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include "ifx.h"      
#include "winapi.h"
#define DLL_FILE  "Shell32.dll"
#define SHCNE_ASSOCCHANGED 0x08000000
#define SHCNF_IDLIST 0x0000
prototype Shell32.SHChangeNotify(LONG, LONG, POINTER, POINTER);
 
//---------------------------------------------------------------------------
// OnEnd
//
// The OnEnd event is called at the end of the setup. This event is not
// called if the setup is aborted.
//---------------------------------------------------------------------------
function OnEnd()
begin                   
 SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);
end;


OnEnd() 부분에 넣는 이유는 설치 및 삭제 과정의 마지막 버튼인 '마침' 버튼을 누를때 동작하도록 구현하는 부분이므로, 한줄만 추가해주면 아이콘 리프레시는 확실하게 된다