※ 이 문서는 뭐 그냥 하면 되지. ()에서 인쇄하였으며,
저작권은 해당 블로그 운영자에게 있습니다.

Autoit으로 단일파일 만들기 2

/Autoit/AutoIt :: 2007. 10. 23. 10:13

Autoit으로 단일파일 만들기 2

 

2007/10/23 - [Autoit] - Autoit으로 단일파일 만들기 1

Autoit으로 단일파일 만들기 두 번째 방법입니다.

우선 다음의 두 가지가 필요합니다.

1. Autoit3Wrapper
   파일을 컴파일된 스크립트에 포함시켜주고, 파일 버전등의 정보도 기록할 수 있습니다.
   첨부파일을 내려받아 "Autoit 설치폴더\SciTe\AutoIt3Wrapper"가 되도록 압축을 풀어줍니다.
   (아니면, 다운로드 사이트에서 SciTe4Autoit3 내려받습니다.)
   나중에 SciTe에서 컴파일(Ctrl+F7)을 누르면 해당 프로그램을 실행시킬 수 있습니다.

2. resources.au3
   컴파일된 스크립트에 포함된 파일을 이용할 수 있도록 해줍니다.
   FileInstall 함수를 이용할 때는 해당 파일을 추출하여 사용했지만, 이 UDF를 이용하면 별도로 추출하지 않고 직접 불러들여 사용할 수 있어서 편리합니다.

    Image 관련된 함수들은 BMP 파일을 제외하고는 아직 잘 작동하지 않는다고 하네요. (jpg나 png를 이용하시려면..)
    Label이나 Button등에서는 사용할 수 없고, picture control에서 사용할 수 있다고 합니다.
   또, exe/dll 파일은 바로 불러서 사용할 수가 없으니, _ResourceSaveToFile함수를 이용하여 저장한 다음에 사용을 해야 한다고 합니다.

    다른 함수들과 마찬가지로 각 함수의 이름이 상당히 직관적이고 예제 파일도 있어서 이해하기 쉬울 겁니다.

    UDF의 업데이트를 비교적 자주 하기 때문에 조만간 더 좋아질 것 같아요.


첨부한 소스의 제일 윗부분을 보겠습니다.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=Wrapper_test.exe
#AutoIt3Wrapper_Res_File_Add=autoit3.bmp, bitmap, res_autoit3bmp
#AutoIt3Wrapper_Res_File_Add=au3info.exe, rcdata, res_au3infoexe
#AutoIt3Wrapper_Res_File_Add=documents\wrapper.txt, rcdata, res_wrappertxt
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

단일화를 위해 쓰는 글이니, #Autoit3Wrapper_Res_File_Add 부분만 살펴보겠습니다.

세 가지 항목이 있는데 각각 "포함될 파일, 섹션, 이름"입니다.

섹션은 생성된 파일 내에서의 위치로 bitmap, rcdata, icon, icon group 등이 있습니다.

그림파일은 bitmap, 아이콘은 icon, dll/exe/txt 파일 등은 rcdata로 하시면 됩니다.

이름은 생성된 파일 내에서 사용될 이름입니다.

내려받은 UDF에서 $ResType은 "$RT_섹션"을 $ResName은 "이름"을 말합니다.

_ResourceSetImageToCtrl을 이용하여 그림을 넣고, _ResourceGetAsString을 이용하여 텍스트파일에서 글을 읽어 라벨을 만들었고, _ResourceSaveToFile을 이용하여 AuInfo.exe를 저장, 실행시키는 소스입니다.

다른 부분은 별로 설명할 게 없네요.


처음에는 이상하고 어려워 보이지만, 몇 번 해보면 오토잇의 원래 함수를 사용하는 것과 별반 다르지 않습니다.

변수명 = _ResourceGet($ResName, $ResType)으로 변수를 얻은 다음, 이 변수를 다른 곳에 이용하면

마치 파일이 저장된 것처럼 사용할 수 있다는 점이 좋습니다.

resource_test_ie.au3를 보면 UDF를 이용하지 않고 res:// 라는 경로를 이용하여 내부에 포함된 파일을 사용할 수 있습니다.

mp3의 경우에도 res://를 이용하는 방법으로 일부 플레이어에서 재생도 할 수 있다고 합니다.
(_ResourcePlaySound는 mp3를 지원하지 않습니다. wav만 가능합니다.)
#NoTrayIcon
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_outfile=Wrapper_test.exe
#AutoIt3Wrapper_Res_File_Add=autoit3.bmp, bitmap, res_autoit3bmp
#AutoIt3Wrapper_Res_File_Add=au3info.exe, rcdata, res_au3infoexe
#AutoIt3Wrapper_Res_File_Add=documents\wrapper.txt, rcdata, res_wrappertxt
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <GUIConstants.au3>
#include <resources.au3>
 
GUICreate("AutoIt3Wrapper_GUI Test", 256, 192, -1, -1)
$Pic = GUICtrlCreatePic("", 64, 48, 128, 96)
_ResourceSetImageToCtrl(-1, "res_autoit3bmp", $RT_BITMAP)
GUICtrlSetTip(-1, "Click")
$string = _ResourceGetAsString("res_wrappertxt")
GUICtrlCreateLabel($string, 64, 150)

GUISetState()

While 1
   $msg = GUIGetMsg()
   Switch $msg
       Case $GUI_EVENT_CLOSE
           ExitLoop
       Case $Pic
           _ResourceSaveToFile(@ScriptDir & "\au3info.exe", "res_au3infoexe")
           ShellExecute(@ScriptDir & "\au3info.exe", "", @ScriptDir)
   EndSwitch
WEnd

FileDelete(@ScriptDir & "\au3info.exe")

GUIDelete()

Exit

AutoIt3Warpper 기본설정
AutoIt3Wrapper 파일 추가
블로그의 글과 그림, 첨부파일의 복제, 재배포를 금지합니다. =>  자세히 보기
티스토리 초대장 필요하신 분은 댓글남겨주세요.
give start - 굿네이버스 - 사랑의 열매 - 아름다운재단 - 어린이재단 - 유니세프
굿네이버스 배너
사랑의 열매 배너
아름다운 재단 배너 어린이 재단 배너 유니세프 한국위원회 - 배너