카테고리 없음

InstallShield2010 File Type Association Example

Soul-Learner 2013. 8. 23. 15:38

탐색기에서 어떤 파일을 더블클릭하면 연관된 응용프로그램이 실행되고 클릭된 파일을 열고 보여주는 것이 일반적이다.

이렇게 기능하도록 설정하는 것을 File Type Associations 라고 한다. 윈도우 레지스트리에 확장자와 응용프로그램을 등록하여 이용자가 등록된 확장자를 가진 파일을 더블클릭할 경우 등록된 응용프로그램을 실행해주고 명령행 인자로 클릭된 파일의 완전한 경로를 전달해 주는 것이다.


윈도우 레지스트리를 다루는 작업이므로 응용프로그램의 코드 안에서도 가능한 일이겠지만 사실상 그렇지 못하다. Windows Vista 이후였던가 부터는 설치할 때 윈도우 레지스트리에 File Type Associations 를 설정하도록 되었기 때문에 프로그램 소스코드 내에서 레지스트리에 접근해서 설정한다면 제대로 작동이 안된다고 보면 된다


그러므로 설치파일이 응용프로그램을 설치할 때 윈도우 레지스트리에 확장자와 응용프로그램을 등록해야 할 필요가 있다. 설치파일을 생성할 때 자주 사용하는 InstallShield의 매뉴얼에서 File Type Association 으로 검색하면 설정방법에 대한 정보를 쉽게 구할 수 있다.


InstallShield 2010에서 File Type Associations 설정을 하게 되었는데 그리 복잡하지는 않았다.

적색으로 표시한 노드를 차례로 선택하여 하위 노드를 열고 약간의 편집을 하는 것이 전부이다.


위 그림의 두번째 컬럼에서 File Types 라는 노드를 클릭하면 3번째 컬럼에 File Types 노드가 나타난다

3번째 컬럼의 Extensions 폴더 위에서 마우스 우측을 누르면 새로운 확장자를 등록할 수 있고 등록하면 자동으로 Open 이라는 Verb가 붙게 된다

위에서는 DCM 이라는 확장자를 등록한 경우이며, 등록된 확장자를 클릭하여 ProgID 설정한다. ProgID는 임의의 문자열이면 되는데 일반적으로 XPACSViewer.Document 와 같은 형식으로 하면 되고 중복되지 않도록 주의하면 된다는 설명이 있다.

ProgID 를 설정하면 자동으로 ProgIDs라는 노드가 생성되어 값을 보여주게 된다


Open 이라는 Verb 를 클릭하여 이용자가 마우스 우측을 눌러서 파일을 열고자 하는 경우에 팝업메뉴에 나타날 문자열을 지정하는 항목(Display Name)에 &Open with XPACS Viewer와 같이 입력하고, Argument에는 %1 혹은 "%1" 을 입력한다. "%1" 은 명령행 인자로 파일의 경로가 전달될 때 경로문자열 중에 포함된 공백문자도 오류없이 제대로 전달되도록 따옴표로 감싼 문자열 형태로 전달되게 한다는 의미를 가지고 있다. 그러므로 문자열 안에 따옴표가 포함되어 명령행 인자로 전달되므로 명령행 인자를 받았을 경우에는 바로 파일경로로 사용하여 파일을 열고자 한다면 오류가 발생할 것이다. 우선 경로문자열의 양측에 있는 따옴표를 제거하고 사용한다는 것에 주의할 필요가 있다


ProgIDs 아래에 추가된 항목을 클릭하면 우측에 Icon File 을 지정하는 란이 나타나므로 여기에 등록한 확장자를 가진 파일에 보여질 아이콘 파일의 경로를 지정해주면 된다


위와같이 설정하고 설치파일을 생성하면 프로그램을 설치할 때 File Type Associations 설정을 하고 설치를 마치면 바로 기능하게 된다.