델파이의 Tools메뉴에 upx를 추가하고 Parameters에 $EXENANE 이라고 쓰면 현재 작업중인 프로젝트의 실행파일이나 DLL파일을 upx가 압축을 해준다.
그러나 upx.exe는 파일경로에 공백이 있으면 안된다. 공백이 있을경우에는 -- 와 "를 이용해서
upx.exe -- "C:\Program Files\xxxx.exe"
와 같이 해줘야한다.
그런데 델파이의 Tools메뉴의 Parameters에 들어가는 매크로를 사용할때 매크로 앞에 다른 문자를 넣을수 없다. 즉,
-- "$EXENAME"
이렇게 사용할수는 없다.
upx로 압축할때는 exe의 경로에 공백이 있으면 안된다.
이런 경우 배치파일을 이용하면 조금이나마 도움이 된다...
1. upx가 없는 사람은 upx.exe를 다운로드한다.
2. upx.bat를 작성해서 upx.exe가 있는 경로에 저장한다.
upx.bat의 내용은 다음과 같다.
upx.exe -- "%1 %2 %3 %4 %5 %6 %7 %8 %9
3. 델파이의 메뉴에서 Tools -> Configure Tools를 클릭한다.
4. Tools Options창에서 Add를 클릭하고 다음과 같이 쳐넣는다
Title : UPX
Program : C:\Program Files\UPX\upx.bat
Working dir: C:\Program Files\UPX
Parameters : $EXENAME
5. Tools -> UPX를 클릭하면 현재 작업중인 프로젝트의 실행파일이 UPX로 압축된다.
주의: 실행파일 경로에 스페이스가 한개씩 여러번 사용되는건 되는데 한번에 두칸이상 띄면 안된다... 배치파일에서 %1과 %2사이에 한칸만 띄었으므로.... %1 %2 %3.. 이렇게 사용한 이유는
배치파일이 파라미터를 구분할때 공백으로 구분하기때문이다.
즉, 다음과 같이 했을때
upx.bat C:\Program Files\Test Program\Test.exe
%1 = C:\Program
%2 = Files\Test
%3 = Program\Test.exe
이렇게 처리한다. 마치 델파이의 ParamStr과 똑같다(바보...)
그래서 %1부터 %9까지(그이상은 안된다) 한칸씩 띄어서 사용하면 비슷하게된다....
-------------------------------------------------------------------------------------
출처