본문 바로가기

TechLog

Set PATH environment variable in Visual Studio 2005 Setup Project : Visual Studio 2005 설치 프로젝트에서 PATH 환경변수 세팅하기





아무리 MSDN을 뒤져보고 구글링을 해봐도 해결 방법이 없어서 스스로 삽질을 거듭하다 발견한 꽁수.

VS2005의 설치 프로젝트를 이용해서 프로그램을 배포하려고 보면 환경 자체는 편리하다고 할 수 있으나, 기능이 매우 미흡한 편이다. 내가 처한 상황은 동적으로 로드되는 DLL이 존재하는 경로를 PATH 환경 변수에 추가해야 하는 것이었다. 윈도우 레지스트리를 조금 다뤄본 사람들은 알겠지만, 이 환경 변수는 레지스트리의 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path, HKEY_USERS\.DEFAULT\Environment, HKEY_CURRENT_USER\Environment(현재 사용자에게만 적용된다면) 항목을 수정하면 된다.

하지만 문제는,

VS2005 설치 프로젝트의 레지스트리 편집기에서는 레지스트리의 생성/수정만 가능하고, 기존 레지스트리의 값을 참조할 방법이 없다. 그래서 대부분 외부 프로그램이나 vbs 스크립트 등을 이용해서 기존 레지스트리를 참조하는 방법을 사용하고 있는 것 같다.

왜 사람들이 이 방법을 사용하지 않는지 (혹은 내가 왜 검색을 못해냈는지) 모르겠지만, 레지스트리 편집기의 설정값에 넣을 수 있는 예약어에는 기존 환경 변수를 참조할 수 있는 기능이 있다. 다음처럼 사용하면 된다 :


[TARGETDIR];[%Path]

* [TARGETDIR] : 설치 프로그램에서 사용자가 지정한 설치 폴더
* [%Path] : Path 환경 변수. 커맨드 프롬프트(cmd.exe)에서 path를 입력해서 확인할 수 있다.

ex) Path=C:\Windows\System32;
     TARGETDIR=C:\Program Files\TestProgram\
=>  Path=C:\Program Files\TestProgram\;C:\Windows\System32;
앞에서 언급했던 레지스트리 키를 위 값으로 설정하면, 기존 Path 환경 변수에 원하는 경로를 추가할 수 있다. 하지만 이 방법에도 단점이 있는데,

- 환경 변수만 참조 가능하다 : 기존 레지스트리 키를 참조할 수는 없다.
- 프로그램 제거 시 PATH 환경 변수가 사라진다.

그러니 각자 처한 환경에 따라서 사용하도록 하자.