본문으로 바로가기

bonkora 님이 올려주신 팁입니다.


처음 Tcl로 프로그램을 만들고 나면 따로 Tcl을 설치하지 않아도 다른 컴퓨터에서 실행되도록 실행파일의 형태로 만들고 싶어 집니다. 그렇게 되면 소스를 노출시키지 않아도 되고요. 이런 목적으로 주로 많이 쓰이는 게 FreeWrap과 Tclkit/Starkit/Starpack입니다. 이에 대한 자세한 내용은 강좌를 참고하십시오. 저는 후자를 주로 사용합니다. Tclkit/Starkit/Starpack을 사용하는 두 가지 방법을 살펴보겠습니다.

소스코드를 포함하여 하나의 실행파일을 만드는 방법

예를 들어 hello.tcl을 hello.exe라는 하나의 실행파일 속에 패키징하는 방법입니다. 한글 엔코딩을 위한 파일을 포함시키는 과정을 포함하여 몇 단계 과정을 거쳐서 실행파일을 만들게 되는데 한두 번 해보면 그리 어렵진 않지만 좀 귀찮은 작업입니다.

소스코드(~.tcl)를 별도로 패키징(~.kit)하여 tclkit 실행파일과 함께 쓰는 방법

예를 들면 hello.tcl을 hello.tcl로 패키징한 후 "tclkit.exe hello.kit"의 형태로 사용하는 방법입니다. 패키징 하는 한 과정만 거치면 되기 때문에 편리하긴 하지만 한글을 위한 엔코딩 파일이 포함되어있지 않아서 한글을 쓸 수 없습니다.

이 방법이 간단하니까 이 방법을 채택하기로 하고, tclkit.exe과 같은 실행파일을 만들되, 이 실행파일 속에다 한글 엔코딩 파일과 특정 확장패키지를 포함시켜 버린다면 이 실행파일과 ~.kit과 같은 패키징 파일만 있으면 독립적인 실행파일이 될 수 있다고 생각했습니다.

방법

일단 첨부파일들을 다운받습니다. 압축파일을 풀면 아래와 같은 파일이 나옵니다.

 

① tclkit.exe: v8.4.16이며 ~.tcl을 ~.kit로 패키징 할 때 필요한 것
② anykit.exe: 제가 따로 패키징하여 만든 실행파일
③ sdx.kit: 이것도 ~.tcl을 ~.kit로 패키징 할 때 필요한 것
④ callmsg.tcl: 샘플로 사용할 tcl 소스코드

필요한 파일을 받았으면 다음의 작업을 행합니다.

①  "시작 -> 모든 프로그램 -> 보조 프로그램 -> 명령 프롬프트"를 실행시킨 후 첨부파일들을 다운로드한 폴더로 들어가서
"tclkit.exe sdx.kit qwrap callmsg.tcl" 명령을 내립니다. 그러면 callmsg.tcl이 callmsg.kit로 패키징 됩니다.
②  그런 후 anykit.exe를, 혹은 anykit.exe의 사본을 만들어 그것의 이름을 패키징한 ~.kit 파일의 이름과 같게 고칩니다. 즉 이 예에서는 callmsg.exe로 바꾸는 겁니다. 그런 후 이 파일을 실행시키면 됩니다. 다시 설명드리면 anykit.exe를 어떤 이름으로 바꾼 후 실행시키면 그 이름과 같은 이름의 ~.kit 파일이 실행됩니다. anykit.exe 안에 한글을 위한 엔코딩 파일과 BWidget 확장패키지는 기본적으로 들어있으므로 소스코드 내에서 BWidget 확장패키지를 사용해도 됩니다.

참고

이 부분은 보시지 않아도 좋습니다만 참고로 올립니다. anykit.exe를 만들 때 사용한 소스코드는 아래과 같습니다.

set tclname "[string range [info nameofexecutable] 0 \
                    [expr [string length [info nameofexecutable]] - 5]].kit"
if [file exists $tclname] {
    source $tclname
} else {
    tk_messageBox -message "소스파일이 존재하지 않습니다."
    destroy .
}

다운로드

anykit1.zip
1.06MB
anykit2.zip
1.06MB