아티클/팁/.NET / Windows

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

Kenial 2008. 8. 5. 11:09




아무리 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 환경 변수가 사라진다.

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