아무리 MSDN을 뒤져보고 구글링을 해봐도 해결 방법이 없어서 스스로 삽질을 거듭하다 발견한 꽁수.
VS2005의 설치 프로젝트를 이용해서 프로그램을 배포하려고 보면 환경 자체는 편리하다고 할 수 있으나, 기능이 매우 미흡한 편이다. 내가 처한 상황은 동적으로 로드되는 DLL이 존재하는 경로를 PATH 환경 변수에 추가해야 하는 것이었다. 윈도우 레지스트리를 조금 다뤄본 사람들은 알겠지만, 이 환경 변수는 레지스트리의 HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path, HKEY_USERS\.DEFAULT\Environment, HKEY_CURRENT_USER\Environment(현재 사용자에게만 적용된다면) 항목을 수정하면 된다.
하지만 문제는,
VS2005 설치 프로젝트의 레지스트리 편집기에서는 레지스트리의 생성/수정만 가능하고, 기존 레지스트리의 값을 참조할 방법이 없다. 그래서 대부분 외부 프로그램이나 vbs 스크립트 등을 이용해서 기존 레지스트리를 참조하는 방법을 사용하고 있는 것 같다.
왜 사람들이 이 방법을 사용하지 않는지 (혹은 내가 왜 검색을 못해냈는지) 모르겠지만, 레지스트리 편집기의 설정값에 넣을 수 있는 예약어에는 기존 환경 변수를 참조할 수 있는 기능이 있다. 다음처럼 사용하면 된다 :
[TARGETDIR];[%Path]앞에서 언급했던 레지스트리 키를 위 값으로 설정하면, 기존 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 환경 변수가 사라진다.
그러니 각자 처한 환경에 따라서 사용하도록 하자.
'TechLog' 카테고리의 다른 글
자신의 IP 주소 가져오기 (0) | 2008.08.06 |
---|---|
Windows Forms 기반의 프로그램 폼에서 컨트롤의 키 입력을 가로채기 (1) | 2008.08.05 |
aspx 페이지에서 동적으로 이미지 생성하기 (0) | 2008.08.03 |
C# 어플리케이션에서 플래시 사용하기 - 2 : Using Flash Object In C# Application (0) | 2008.08.02 |
C# 어플리케이션에서 플래시 사용하기 - 1 : Using Flash Object In C# Application (0) | 2008.08.01 |