Set PATH environment variable in Visual Studio 2005 Setup Project : Visual Studio 2005 설치 프로젝트에서 PATH 환경변수 세팅하기
Kenial2008. 8. 5. 11:09
As I couldn't find any solution about this, eventually just made a tip for.
Its deployment environment is so convinient on VS2005 Setup Project, but its functionality is so fundamental ... lack. I should append my program's path to PATH environment variable to DLL loads. This variable could be set through HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\Path, HKEY_USERS\.DEFAULT\Environment, HKEY_CURRENT_USER\Environment(only current user) registry key, as you know.
But,
Registry Editor(I wonder this name is right, cause I've only korean edition) of Setup Project provides function that can make/remove Registry item. But it couldn't refer to exist value of Registy Key. So most developers seem to use another small program or VBS script through Custom Action, I think.
Why don't they use this method? (or I haven't found from google) There are some reserved word in value could be used on Registry Key, also refer to Environment Variables. Follow this :
[TARGETDIR];[%Path]
* [TARGETDIR] : Installation path user set * [%Path] : Path Environment Variable. You may confirm this by typing 'path' on command prompt(cmd.exe)
Refer to above Registry Key, you can append path to existing Path Environment Variable by this. But this solution lacks :
- not Registry, only Environment Variable. - If you remove program, PATH Registry Key pass away.
So goes on your decision.
아무리 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를 입력해서 확인할 수 있다.