고정 경로(ex. c:\foo)는 ExpandConstant함수 없이 성공하지만, {app} 같은 메크로 경로는 ExpandConstant 함수 없이 실패합니다.
이것 때문에 삽질을..
Param := ExpandConstant('{app}');
ExpandConstant 함수의 정확한 역할은 설명을 봐도 이해가 안되네요..
http://www.jrsoftware.org/ishelp/index.php?topic=isxfunc_expandconstant
24번째 라인에 Param 변수에 등록을 원하는 경로를 추가하면됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | [Registry] ;시스템 변수 Root: "HKLM"; Subkey: "SYSTEM\CurrentControlSet\Control\Session Manager\Environment"; ValueType: expandsz; ValueName: "Path"; ValueData: "{olddata};{app}"; Check: NeedsAddPath() [PostCompile] Name: "codesign.bat"; [Code] function NeedsAddPath(): boolean; var OrigPath: string; Param: string; begin if not RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SYSTEM\CurrentControlSet\Control\Session Manager\Environment', 'Path', OrigPath) then begin Result := True; exit; end; Param := ExpandConstant('{app}'); { look for the path with leading and trailing semicolon } { Pos() returns 0 if not found } Result := Pos(';' + Param + ';', ';' + OrigPath + ';') = 0; end; | cs |
환경변수에 경로를 추가해도 바로 반영이 안되더군요..
[setup] 카테고리에 ChangesEnvironment=true 를 추가하면 재부팅없이 반영이 됩니다.
[setup]
ChangesEnvironment=true