노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.


스크립트 함수 레퍼런스

모든 함수는 객체의 멤버 함수입니다. 예컨대 Open() 함수는 VirtualDub 객체의 멤버 함수이고, 다음과 같이 접근합니다.:

[code php]VirtualDub.Open(...);[/code]
  • 경고 : 대부분 또는 모든 함수는 어떤 매개변수의 유효함을 알아낼 수 없다는 하에서 당신이 올바르지 않은 매개변수를 제공하면 데이터가 파괴될 수 있습니다. -10x-10 크기 변경 필터(resize filter)를 적용하는 것과 같은 어리석인 짓은 시도하지 마십시오.

객체 : Sylia

[code php]void dprint(int/string value);[/code]

이름 있는 문자열 또는 변수를 디버그 출력으로 인쇄한다.

[code php]void messagebox(string text, string caption);   // (VirtualDub 1.6.2 이상)[/code]

메시지 박스를 화면에 표시한다.

    NOTE:    메시지 박스는 VirtualDub 프로그램이 배치 또는 명령행 모드에서 실행 중이더라도 화면에 표시됩니다. 그래서 이것은 제작 스크립트에서는 사용하지 않는 것이 최선입니다.

[code php]string ToString(int);            // (VirtualDub 1.6.2 이상)
string ToString(long);            // (VirtualDub 1.6.2 이상)
string ToString(double);        // (VirtualDub 1.6.2 이상)
string ToString(string);        // (VirtualDub 1.6.2 이상)[/code]

수치 변수를 십진수 형식의 문자열로 변환합니다.

문자열-문자열 변환 버전은 아무것도 하지 않습니다. 그리고 문자열-문자열 변환 버전은 편의상 디버깅을 위해 임의 형식의 식을 화면에 표현하는 방식으로 존재합니다.

[code php]int Atoi(string s);            // (VirtualDub 1.6.5 이상)
long Atol(string s);            // (VirtualDub 1.6.5 이상)
double Atod(string s);            // (VirtualDub 1.6.5 이상)[/code]

문자열을 정수(int), 긴 정수(long int), 배정도 실수(double)로 변환합니다. 문자열은 숫자 표현이 유효하지 않기 때문에 변환에 실패하면 알 수 없는 오류가 나타납니다. 이러한 함수는 명령행 매개변수 문자열을 수치 형식으로 변환하는 데 유용합니다.

객체 : VirtualDub

[code php]void SetStatus(string text);[/code]

VirtualDub 창 아래쪽에 있는 상태 표시줄에 나타낼 텍스트를 설정합니다.

[code php]void Open(string filename, int type, int xopts);
void Open(string filename, int type, int xopts, string xoptstring);[/code]

동영상 파일을 연다. 형식은 다음 가운데 하나입니다.

[code php]   0   자동
  1   AVI
  2   MPEG-1
  4   스트립 AVI
  5   AVI through AVIFile (Avisynth)[/code]

xopts 값이 0 이 아니면, VirtualDub 프로그램은 파일을 확장된 열기 옵션으로 연다. xoptstring 값이 없으면, 대화상자가 열리고, 그게 아니면 xoptstring 문자열이 바이너리 옵션 구조의 MIME BASE64 방식으로 인코딩된 문자열로 처리됩니다.

[code php]void Open(string filename, string type, int xopts);
void Open(string filename, string type, int xopts, string xoptstring);    // (VirtualDub 1.5.5 이상)[/code]

이것은 우선권을 가진, 1.5.5 버전 이상에서 나타나는 Open() 함수의 형식입니다. 번호를 다루는 대신에, 그것은 형 이름을 다룹니다. 다음과 같은 형 이름이 있습니다.

[code php]   "Audio/video interleave input driver (internal)"
  "AVIFile/Avisynth input driver (internal)"
  "Image sequence input driver (internal)"
  "MPEG-1 input driver (internal)"[/code] [code php]void Open(string filename);        // (VirtualDub 1.6.5 이상)[/code]

그것은 파일 형식을 결정하는 자동 검출 모드를 항상 이용하는 Open() 명령의 더 간단한 형식입니다.

[code php]void Append(string filename);[/code]

추가적인 동영상 세그먼트(칸살)를 현재 파일에 덧붙입니다.

[code php]void Close();[/code]

현재 입력 파일을 닫습니다.

[code php]void Preview();[/code]

현재 설정 값으로 현재 파일의 미리보기를 실행합니다. 이것은 File > Preview 메뉴에 해당합니다.

[code php]void SaveAVI(string filename);[/code]

AVI2 형식으로 출력 파일을 만드는 처리 엔진을 실행합니다.

[code php]void SaveCompatibleAVI(string filename);[/code]

AVI1 형식으로 출력 파일을 만드는 처리 엔진을 실행합니다.

[code php]void SaveSegmentedAVI(string filename, int spacethresh, int framethresh);[/code]

다중 AVI 파일로 출력 파일을 만드는 처리 엔진을 실행합니다. spacethresh 값은 메가바이트 값으로 나타낸 파일의 최대 크기이고, framethresh 값은 최대 프레임 수입니다. framethresh 값이 0 이면 무시됩니다.

[code php]void SaveImageSequence(string prefix, string suffix, int mindigits, int format);
void SaveImageSequence(string prefix, string suffix, int mindigits, int format, int quality);    // (VirtualDub 1.6.0 이상)[/code]

"prefix#suffix" 형식을 가진 파일명으로 이미지 시퀀스[각주:1]를 저장합니다. # 기호는 시퀀스 번호인데, 중간의 수치 값에 0을 덧붙인 형태입니다. format 값은 만들어지는 파일의 형식을 기술합니다.[각주:2]

[code php]   0 - Windows BMP
  1 - TARGA
  2 - JPEG      (VirtualDub 1.6.0 이상)[/code] [code php]void SaveWAV(string filename);        // (VirtualDub 1.4d 이상)[/code]

WAV 형식으로 출력 파일을 만드는 처리 엔진을 실행합니다.

[code php]void RunNullVideoPass();        // (VirtualDub 1.6.5 이상)[/code]

동영상 전용 모드(video-only mode) 처리 엔진을 실행합니다. 그러나 출력은 버립니다(사용하지 않습니다). 이것은 사용 가능한 출력을 만들지 않는 과정(pass)을 분석하는 데 동영상 필터 또는 코덱을 사용할 때 유용합니다.

[code php]void Log(string output);        // (VirtualDub 1.6.5 이상)[/code]

로그에서 정보 우선순위에 따라 항목을 출력합니다. VirtualDub 프로그램이 명령행에서 실행될 때, 텍스트는 또한 표준 출력으로 출력됩니다.

객 체 : VirtualDub.video

[code php]int GetDepth(int var);
void SetDepth(int var, int value);[/code]

var 변수가 0 이면, 이 함수들은 입력 색상에 영향을 주고, 그게 아니면 출력 색상을 다룹니다. GetDepth() 함수는 0 또는 1, 2 값을 반환합니다. SetDepth() 함수는 색상의 비트 값과 같은 16 또는 24, 32를 돌려줍니다. 나는 그것들이 왜 일치하지 않는지를 알지 못합니다.

당신에게 SetInputFormat() 및 SetOutputFormat() 함수 대신에 그것을 사용하라고 권고했습니다. 16/24/32비트 설정은 XRGB1555/RGB888/XRGB8888 형식에 각각 해당합니다.

[code php]void SetInputFormat(int format);    // (VirtualDub 1.6.0 이상)
void SetOutputFormat(int format);    // (VirtualDub 1.6.0 이상)[/code]

비디오 작업에 쓰일 입력 및 출력 형식의 우선권을 설정합니다.

[code php]0    자동 검출 / 입력과 같음
5    XRGB1555    16비트 555 RGB
6    RGB565        16비트 565 RGB
7    RGB888        24비트 888 RGB
8    XRGB8888    32비트 888 RGB + 투명도 (dummy alpha)
9    Y8        휘도만 적용 [16, 235]
10    YUV422_UYVY    4:2:2 YCbCr 인터리브, UYVY순
11    YUV422_YUY2    4:2:2 YCbCr 인터리브, YUY2순
14    YUV422_Planar    4:2:2 YCbCr 2차 평면 (YV16)
15    YUV420_Planar    4:2:0 YCbCr 2차 평면 (YV12/I420)
17    YUV410_Planar    4:1:0 YCbCr 2차 평면 (YVU9)[/code] [code php]int GetMode();
void SetMode(int mode);[/code]

동영상 작업 모드 설정:

[code php]      0   직접 스트림 복사 (direct stream copy)
     1   빠른 재압축 (fast recompress)
     2   느리 재압축 (slow recompress)
     3   전체 작업 모드 (full processing mode)[/code] [code php]int GetFrameRate(int var);
void SetFrameRate(int var, int value);[/code]

value 값을 조절하여 특별한 프레임 레이트를 설정하거나 얻습니다.:

[code php]   var=0    프레임 레이트 요소 골라내기. 1=모든 프레임
  var=1    새로운 프레임 레이트 (마이크로초 / 프레임); 0=변화 없음, -1=기간이 일치함을 뜻함
  var=2    0 이 아니면, TV 역화면이 가능[/code]

시 간이 같으면 TV 역화면(inverse telecine)으로서 골라내기를 하는 프레임 레이트 설정을 하지 않습니다. 그것은 작동하지 않습니다.

[code php]void SetTargetFrameRate(int hi, int lo);    // (VirtualDub 1.5.2 이상)[/code]

64비트 유리수(rational fraction. hi 나누기 lo)로서 프레임 레이트 변환을 위한 대상 프레임 레이트를 설정합니다. hi 및 lo는 모두 *부호 없는* 수입니다. 21억 4748만 3648 부터 42억 9496만 7295까지인 값은 32비트 음수 값에 해당하므로 그냥 지나칩니다.

1.6.7 버전에서는, long 형으로 해석되는 큰 값으로서 모든 값을 양수로서 지정할 수 있습니다. 그리고 함수에 알맞은 int 값으로 자동으로 변환합니다.

[code php]int GetRange(int var);
void SetRange(int startMS, int endMS);[/code]

특별한 범위 값을 얻거나 설정합니다. var=0 이면 시작 오프셋으로 사용되며, var=1 이면 종료 오프셋으로 사용됩니다. 시작 오프셋은 앞에서부터 밀리초 단위로 측정되고, 종료 오프셋은 끝에서부터 밀리초 단위로 측정됩니다. 그래요, 이것이 어리석인 짓임을 나도 알아요.

종료 오프셋이 단지 오프셋이기 때문에 이 함수들에서 사용하는 동영상 스트림의 길이를 결정하는 것이 가능하지 않습니다.

[code php]void SetRangeEmpty();                // (VirtualDub 1.6.5 이상)[/code]

현재 선택한 부분을 청소하지만, 작업 영역의 시작/끝 지점에 영향을 주지 않는다. 이것은 UI에서 Edit > Clear Selection (Ctrl+D) 메뉴에 해당하며, 스크립트를 실행한 뒤 화면에 보여주는 그럴듯한 선택 영역 제거하는 데 유용합니다.

[code php]int GetCompression(int var);[/code]

현재 선택된 압축기(compressor)를 위한 변수를 검색합니다.:

[code php]      var=0   압축기(compressor)를 위한 fccHandler ID를 반환합니다.
     var=1   최대 키프레임 간격을 반환합니다.
     var=2   품질 인수(quality factor)를 반환합니다. (0~10000).
     var=3   데이터 전송률(data rate)을 반환합니다. (0=데이터 전송률 없음).[/code] [code php]void SetCompression();
void SetCompression(string fccHandler, int keyrate, int quality, int datarate);
void SetCompression(int fccHandler, int keyrate, int quality, int datarate);[/code]

인수 없는 구문은 동영상 압축(video compression)을 꺼버립니다. 다른 두 구문은 동영상 압축기를 선택합니다. fccHandler가 정수 또는 문자열로 지정될 수 있음을 기억하십시오. 문자열이 4바이트보다 짧으면, 공백이 덧붙습니다.

[code php]void SetCompData(int length, string data);[/code]

동영상 압축기를 위한 개인 코덱 데이터를 설정한다. 동영상 압축(Video Compression) 대화상자에서 당신이 설정(Configure)을 클릭할 때 동영상 압축기는 변경됩니다. 이 데이터는 VirtualDub에서 분명치 않습니다. 그리고 단지 동영상 코덱에서 쓰이기도 합니다. length는 바이트로 나타낸 데이터 블록의 길이이고, data는 MIME BASE64 형식으로 인코딩된 데이터 블록입니다.

[code php]void EnableIndeoQC(int enableQC);[/code]

 

Ligos (이전에는 Intel) Indeo v4.x/5.x 동영상 코덱에서 빠른 압축(Quick Compress) 사용 가능 또는 사용 불가

[code php]void SetIVTC(int enableIVTC, int ivtcmode, int offset, int polarity);[/code]

TV 역화면(inverse telecine) 매개변수 설정.

[code php]   enableIVTC:   0 이 아니면 IVTC 사용 가능
  ivtcmode:   0=필드 기반, 1=프레임 기반
  offset:      IVTC 패턴을 위한 프레임 오프셋, -1=적합한 값
  polarity:   0=필드 A 우선, 1=필드 B 우선. offset=-1 때는 무시한다.[/code]

VirtualDub 1.4c 버전에 버그가 있습니다. 그 버전에서 오프셋 값이 불린 자료형(0 또는 1)으로 캐스트되는 일이 발생했습니다. 이것을 불행하게도 IVTC에 알맞은 설정을 만드는 일을 불가능하게 만들었습니다. 그 문제는 1.4d 버전에서 고쳐졌습니다.

[code php]int width;        // [VirtualDub 1.4d (12667) 이상]
int height;[/code]

읽기 전용 변수로 주어진 원본 동영상의 너비/가로(width) 및 높이/세로(height). 이 변수들은 원본 동영상이 존재하지 않으면 정의되지 않습니다.

객 체 : VirtualDub.audio

[code php]void GetMode();
void SetMode(int mode);[/code]

음향 작업 모드(audio processing mode)를 얻거나 설정한다.

[code php]   0   직접 스트림 복사 (direct stream copy)
  1   전체 작업 모드 (full processing mode)[/code] [code php]int GetInterleave(int var);
void SetInterleave(int enabled, int preload, int interval, int is_ms, int offset);[/code]

음향 인터리브 매개변수를 얻거나 설정한다.

[code php]   값 얻기   설정        설명
  var=0   enabled      0 이 아니면 음향 인터리브는 사용 가능(enabled)
  var=1   preload      밀리초 단위로 미리 읽기(preload)
  var=2   interval      밀리초 또는 프레임 단위의 인터리브 간격(Interleaving interval)
  var=3   is_ms      0 이 아니면 인터리브 간격은 밀리초 단위입니다. (is in milliseconds)
  var=4   offset      오프셋(offset)을 바꿉니다. (단위: 밀리초)[/code] [code php]int GetClipMode(int var);
void SetClipMode(int begin, int end);[/code]

음향 오려내기(audio clipping) 매개변수를 얻거나 설정합니다. begin (var=0) 변수는 동영상이 나왔을 때 음향이 바뀌도록 지정합니다. 이것은 거의 언제나 0 이 아닙니다. end (var=1) 변수는 음향이 동영상보다 길지 않도록 오려내도록 지정합니다. 이것 또한 거의 언제나 0 이 아닙니다.

[code php]int GetConversion(int var);
void SetConversion(int new_rate, int new_precision, int new_channels);
void SetConversion(int new_rate, int new_precision, int new_channels, int integral_rate, int high_quality);[/code]

음향 변환 매개변수를 얻거나 설정합니다.

[code php]   var=0 (new_rate)   Hz 단위의 새로운 샘플링 레이트(샘플링 속도, sampling rate); 0=변화 없음
  var=1 (new_precision)   새로운 정밀도(precision); 0=변화 없음, 1=8비트, 2=16비트
  var=2 (new_channels)   0=변화 없음, 1=모노, 2=스테레오[/code] [code php]void SetSource(int mode);
void SetSource(string file);[/code]

음향 원본을 설정합니다. mode=0 이면 음향 없음, mode=1 은 음향 입력. 문자열 형식은 외부 WAV 파일을 읽어옵니다.

[code php]void SetCompression();
void SetCompression(int wFormatTag, int nChannels, int wBitsPerSample, int nAvgBytesPerSec, int nBlockAlign);
void SetCompression(int wFormatTag, int nChannels, int wBitsPerSample, int nAvgBytesPerSec, int nBlockAlign, int cbData, string data);[/code]

음향 압축 형식을 설정합니다. 첫 형식은 음향 압축을 깨끗이 지웁니다. 둘째 및 셋째 형식은 표준 Win32 WAVEFORMATEX 구조로부터 매개변수를 지정합니다.

[code php]   wFormatTag   음향 압축 형식 지정
  nChannels   1=모노, 2=스테레오.
  wBitsPerSample   8 / 16 PCM. 다른 것으로 바꿀 수 있음
  nAvgBytesPerSec   말 그대로 초당 평균 바이트 수
  nBlockAlign   압축된 데이터 블록의 크기[/code]

개 인 데이터에 음향 압축기(audio compressor)를 사용할 때 주어지는 이 필드는 VirtualDub를 불분명하게 만듭니다.

[code php]   cbData      데이터의 크기 (단위: 바이트)
  data      MIME BASE64 형식으로 인코딩된 데이터 스트링[/code]

일반적으로, 당신은 압축기를 조회하는 것 또는 VirtualDub 프로그램이 저장한 작업 스크립트(job script)를 찾는 것에 의해 이 필드를 유도하기를 바랍니다. 왜냐하면 음향 압축기(audio compressor)는 단지 지정된 값을 받아들이는 경향이 있기 때문입니다. 몇몇, 그러나 전부는 아닌, 개인적인 데이터 형식은 Win32 Platform SDK 안의 MMREG.H 파일로 문서화되어 있습니다.

[code php]void SetVolume();    // [VirtualDub 1.4d (12667) or later]
void SetVolume(int v);    // [VirtualDub 1.4d (12667) or later]
int GetVolume();    // [VirtualDub 1.4d (12667) or later][/code]

현재의 음량(audio volume) 증폭 값을 얻거나 설정합니다. 음량은 8비트 고정 소수점 수로 나타냅니다. 256은 증폭 없음, 128은 절반의 음량, 512는 2배의 음량입니다. 빈 인수 형식의 SetVolume() 함수는 음량 증폭을 사용할 수 없도록 만듭니다.

객체 : VirtualDub.subset

부분 집합(subset)은 동영상 스트림 작업을 위한 편집 목록(edit list)입니다. 이것은 프레임 범위의 집합으로 이루어져 있습니다. 프레임 범위는 원본 스트림 안에 있는 작업될 수 있는 프레임을 가리키는 범위입니다. 프레임 번호는 0부터 시작합니다(zero-based).

1.5.4 이전 버전에서는, 부분 집합은 부득이 원본 순서대로 정렬된 범위(range)를 포함할 수밖에 없었습니다. 그래서 범위는 추가할 때마다 다시 정렬되었습니다. 1.5.5 버전부터는, 부분 집합은 복제본이나 원본과는 다른 순서로 반복되거나 이용되는 동영상 스트림의 일부를 허용하는 범위를 벗어난 것을 포함합니다. 최고의 호환성을 위하여, 범위는 항상 오름차순으로 추가하기를 권장합니다.

[code php]void Delete();[/code]

편집이 허용되지 않을 만큼 부분 집합을 지웁니다. 전체 원본 파일에서 작업합니다. 객체는 단지 시작/끝(start/end) 오프셋만을 작업합니다.

[code php]void Clear();[/code]

존재하는 어떤 부분 집합이라도 제거하고, 프레임을 가지지 않는 새로운 하나의 부분 집합을 만듭니다. 이 작업은 부분 집합 구성을 시작하려고 AddFrame()/AddRange() 함수를 호출하기 전에 이루어집니다.

[code php]void AddFrame(int start, int length);
void AddRange(int start, int length);    // [VirtualDub 1.4.10 이상][/code]

부분 집합에서 프레임의 범위를 추가합니다. 부분 집합 프레임은 격리되어야 합니다. 그것들은 서로 겹치지도 접촉하지도 않아야 합니다. (예컨대, [0,5]와 [5,5] 등으로 하지 마십시오.) 1.5.5 버전부터는, 겹치는 범위 또는 허용 범위를 벗어난 범위가 허용됩니다. 그러나 이웃하는 범위는 여전히 피해야 합니다.

AddRange() 함수는 1.4.10 버전에서 더 나은 이름의 동의어로서 추가되었습니다. 그것은 AddFrame() 함수와 같으며, AddFrame() 구문은 지금 비난을 받습니다(deprecated).

[code php]void AddMaskedRange(int start, int length);    // [VirtualDub 1.4.8 이상][/code]

부분 집합에서 마스크된 프레임의 범위를 추가합니다. 마스크된 프레임은 이전 프레임을 반복하는 프레임입니다. 이것은 손상된 데이터를 가진 것으로서 다른 용도로는 쓰이지 않는 프레임을 위한 위치 표시기로 쓰입니다.

객체 : VirtualDub.params (VirtualDub 1.6.1 이상)

[code php]string operator[](int index);        // (VirtualDub 1.6.1 이상)[/code]

불러오기 (/i) 명령행 스위치로부터 매개변수를 검색합니다. 매개변수 색인은 0부터 시작하는데, 그래서 params[0]은 첫 매개변수가 됩니다. 매개변수가 가리키는 것이 존재하지 않으면, 오류가 발생합니다.

객체 : VirtualDub.project (VirtualDub 1.6.5 이상)

[code php]void ClearTextInfo();            // (VirtualDub 1.6.5 이상)[/code]

출력 AVI 파일과 연결된 텍스트 정보를 지웁니다. 기본적으로 주석을 입력 파일로부터 읽어와서 보존합니다.

[code php]void AddTextInfo(string fourcc, string text);[/code]

이를 테면 제작자 및 이름 문자열과 같은, 다음(subsequent) AVI 출력 파일에 사용할 텍스트 주석을 추가합니다. fourcc 값은 표준 AVI 텍스트 주석의 한 종류로서, 예컨대 "ISBJ" 및 "IART" 등과 같은 네 문자로 된 코드(FOURCC)여야 합니다. text 라고 지정된 두 번째 매개변수를 기억하십시오. 그것은 전혀 가공하지 않은(raw) 8비트 문자열인데, AVI 파일로부터 직접 복사됩니다. 그리고 두 번째 매개변수는 UTF-8 형식이 아닙니다. 그것은 AVI 형식 자체가 그러한 문자열로 코드 페이지 인코딩하여 표현할 방법을 전혀 가지고 있지 않기 때문입니다.

객체 : VirtualDub.video.filters

[code php]void Clear();[/code]

필터 목록에서 모든 필터 인스턴스(instance)를 제거합니다.

[code php]void Add(string filter);       // [VirtualDub 1.4c 이하]
int Add(string filter);            // [VirtualDub 1.4d 이상][/code]

동영상 필터 목록의 맨 아래에 지정된 필터의 새로운 인스턴스를 추가합니다.

VirtualDub 1.4d 버전부터 이 함수는 추가된 필터의 인스턴스 번호를 반환합니다.

객체 : VirtualDub.video.filters.instance[nFilt]

nFilt 값은 0 부터 시작하는, 필터 인스턴스의 변경된 색인 값입니다.

[code php]void Remove();[/code]

목록에서 선택된 필터를 제거합니다. 이것은 그 뒤에 오는 필터의 색인을 변경합니다.

[code php]int GetClipping(int var);
void SetClipping(int x1, int y1, int x2, int y2);[/code]

잘라내기 매개변수를 입력받는 필터를 얻거나 설정합니다. var 변수는 0부터 3까지의 범위를 가지며, 이것은 각각 x1 및 y1, x2, y2 변수에 해당합니다. 모든 값은 모서리(edge)로부터의 픽셀 값입니다.

[code php]... Config(...);[/code]

이것은 아마도 동영상 필터가 제공하는 함수입니다. 사용자 정의 매개변수를 가지고 있다면, 일괄처리 모드(batch mode)로 작업하기 위한 필터가 필요합니다. 그러나 이 구성원(member)을 강요할 어떤 구문도 없고, 매개변수 구문은 각각의 필터에 변화를 줍니다.

  1. 이미지 시퀀스(image sequence) 및 시퀀스(sequence) 는 영화나 동영상의 한 장면을 뜻합니다. [본문으로]
  2. 최신 버전인 1.9.x 버전에서는 PNG 형식으로도 저장할 수 있습니다. 스크립트에서 지원하는지는 확인하지 못했습니다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

AIK7에서 설치 응답 파일을 만들려면 각각의 구성 요소와 구성 단계가 어떠한 역할을 하는지를 잘 알아야 합니다. 구성 단계에 대해서는 AIK와 자동 응답 파일에서 충분히 다루었다고 생각하여, 구성 요소를 자동 응답 파일에 적용하는 레퍼런스를 소개하고자 합니다.

무인 설치 레퍼런스(Unattended Installation Settings Reference)는 "자동 설치 레퍼런스"라고도 부르며, 현재 AIK7에 포함된 윈도 도움말 파일(Unattend.chm) 또는 인터넷에서 테크넷 라이브러리로 제공하고 있습니다. 다만 인터넷에서 제공하는 무인 설치 레퍼런스는 윈도7용은 아직 없고, 윈도 비스타용만 있으나, 이것으로도 충분히 활용할 수 있습니다. 하지만 정확히 윈도7에 적용되지 않으므로 앞으로는 테크넷 라이브러리 대신에 도움말 파일을 기준으로 라이브러리를 소개하겠습니다.

무인 설치 레퍼런스

AIK와 용어 설명에서 기본적인 AIK 사용법에 대해 다루고 있습니다. 따라서 이미 AIK를 설치하였으며, 또한 이미 다루어 보았다고 가정하고 글을 쓰겠습니다. 물론 이 글에서 설명하는 바와 중복되는 부분도 있습니다.

Unattended Windows Setup Reference 항목을 클릭한다.

Unattended Windows Setup Reference 항목을 클릭한다.

시작 단추를 클릭한 뒤 프로그램 >> Microsoft Windows AIK >> Documentation >> Unattended Windows Setup Reference를 연다.

무인 설치 레퍼런스 도움말 파일

무인 설치 레퍼런스 도움말 파일

위와 같이 도움말 파일을 열어서 참조할 수 있으며, 테크넷 라이브러리에서도 찾을 수 있다.

테크넷 라이브러리에서 찾은 무인 설치 레퍼런스

테크넷 라이브러리에서 찾은 무인 설치 레퍼런스

위 두 그림은 거의 비슷하나 도움말 파일에서 About This User's Guide 라는 부분이 더 있다. 이것은 도움말 파일을 설명할 때 사용하는 용어나 글자 모양에 따른 지시 사항 등을 정의하고 있다. About This User's Guide 부분을 읽어 보면 도움말 파일의 구성이나 응용 프로그램의 단축키 등을 알 수 있다.

자동 설치 도구와 무인 설치 레퍼런스

먼저 자동 설치 도구에서 윈도 시스템 이미지 관리자를 실행한다.

자동 설치 도구에서 윈도 시스템 이미지 관리자를 실행한다.

자동 설치 도구에서 윈도 시스템 이미지 관리자를 실행한다.

윈도 시스템 이미지 관리자의 내부 창 구분

윈도 시스템 이미지 관리자의 내부 창 구분

위와 같이 윈도 시스템 이미지 관리자는 구성되어 있으며, 이 가운데 배포 공유 창은 따로 배포 공유를 만들지 않는다면 거의 쓰이지 않는다.

새 응답 파일을 윈도 이미지와 연결하는지를 묻는 대화상자

새 응답 파일을 윈도 이미지와 연결하는지를 묻는 대화상자

이미 존재하는 응답 파일을 불러올 때는 응답 파일만을 불러오지만, 새로 응답 파일을 작성하면 위와 같이 묻게 된다. 이때 대부분의 경우 를 클릭해야 한다. 이것은 매우 중요한데, 위의 대화상자에서 아니요를 클릭할 경우 어떠한 구성요소도 추가할 수 없고, 이는 곧 설치 응답 파일을 구성할 수 없다는 뜻이다. 반대로 설명하면 반드시 자신이 사용할 윈도 시스템 이미지와 응답 파일을 함께 열어야만 구성 요소를 추가할 수 있다는 뜻이다. 다만 이때 응답 파일과 윈도 이미지를 연결할 필요는 없다. 윈도 이미지 파일과 응답 파일을 함께 연다는 말과 서로 연결한다는 말은 다르므로 주의해야 한다.

그러나 윈도 이미지를 열지 않아도 패키지 추가는 가능하다.

패키지 추가 메뉴가 활성화된 화면

패키지 추가 메뉴가 활성화된 화면

우선 윈도 이미지 창속성 창을 살펴보자.

윈도 창에서 선택한 구성 요소

윈도 창에서 선택한 구성 요소

속성 창에 나타난 구성 요소의 속성

속성 창에 나타난 구성 요소의 속성

위 두 그림을 보면 구성 요소의 이름은 Microsoft-Windows-Shell-Setup임을 알 수 있다. 윈도 이미지 창에는 x86 또는 6.1.7100.0과 같은 군더더기가 있으나 속성 창에는 순수한 구성 요소 이름만 보여준다. 언뜻 보기에는 그러한 군더더기도 구성요소의 이름으로 보이지만, 응답 파일(AutoUnattend.xml)의 소스코드를 살펴보면 Microsoft-Windows-Shell-Setup만 이름임이 확실히 드러난다.

AutoUnattend.xml 파일의 소스코드

AutoUnattend.xml 파일의 소스코드

위에서 component name 태그의 값이 Microsoft-Windows-Shell-Setup으로 되어 있고, x86 등은 추가적인 내용임을 알 수 있다.

한편 도움말 파일의 목차에서 Microsoft-Windows-Shell-Setup 구성요소를 살펴보면 다음과 같다.

도움말 파일의 목차

도움말 파일의 목차

위에서 펼쳐진 책은 해당 구성 요소를 현재 접근하고 있다는 뜻이며, 덮인 책은 접근하지 않은 구성요소이다. 또한 물음표 표시가 있는 것은 구성 요소가 아닌 키 이름이다. 그런데 키 이름에 값을 넣은 뒤 저장하였다가 나중에 다시 불러오면 하위 구성 요소처럼 바뀌어 나타나기도 하므로 당황하지 않기를 바랍니다. 또한 위의 BluetoothTaskbarIconEnabled는 키 이름이기 때문에 윈도 이미지 창에서는 찾을 수 없지만, 속성 창에서는 나타나 있다. 물론 이 구성요소를 응답 파일에 추가하기 전에는 수정할 수 없다.

윈도 이미지 창에서 Microsoft-Windows-International-Core 구성 요소를 선택하여 응답 파일 창에 추가

윈도 이미지 창에서 Microsoft-Windows-International-Core 구성 요소를 선택하여 응답 파일 창에 추가

위와 같은 구성 요소 추가에서 어떤 구성 단계에 넣을 수 있느냐는 미리 정해져 있다. 위의 경우에는 구성 단계 4 specialize구성 단계 7 oobeSystem에 넣을 수 있다.

한편 레퍼런스를 보면 구성 요소가 어떤 구성 단계에 적용되는지를 알 수 있다. 간혹 구성 요소의 설명에서 나타나지 않기도 하지만, 대부분 구성 요소의 설명에서 Valid Passes라는 항목이 존재한다. 그 항목을 참조하면 추가하려는 구성 요소가 어느 구성 단계에 들어가야 하는지를 알 수 있다.

Microsoft-Windows-International-Core \ InputLocale 키의 도움말

Microsoft-Windows-International-Core \ InputLocale 키의 도움말

Microsoft-Windows-International-Core \ InputLocale 키가 적용될 구성 단계는 위 그림에서는 oobeSystem 구성 단계 또는 specialize 구성 단계이다. 이것은 테크넷 라이브러리에서도 마찬가지로 나타난다.

게다가 도움말 파일에서는 XML을 작성할 때 유용한 XML 예제도 소개하고 있으며, 이 구성요소가 적용될 아키텍처도 알 수 있다.

Microsoft-Windows-International-Core와 적용될 아키텍처

Microsoft-Windows-International-Core와 적용될 아키텍처

위의 경우 Microsoft-Windows-International-Core 구성 요소는 윈도7 Enterprise 에디션에서는 x86 기반 컴퓨터와, x64 기반 컴퓨터에서는 적용할 수 있지만, 아이태니움 기반 컴퓨터에서는 적용할 수 없음을 알 수 있다. 윈도 시스템 이미지 관리자(Windows SIM)을 이용할 경우 윈도 이미지 창에서 Microsoft-Windows-International-Core 구성 요소를 선택하여 응답 파일 창에 추가 그림에서 보듯이 윈도 이미지 창에 나타난 구성요소는 모두 x86과 같은 군더더기가 붙어 있다. 그것은 아키텍처 이름으로 SIM을 이용할 경우에는 쉽게 알 수 있으므로 도움이 된다. 그러나 응답 파일을 직접 제작하거나 나중에 텍스트 편집기를 이용하여 편집할 때에는 아키텍처 이름 추가를 잊지 않도록 주의해야 한다.

이러한 과정을 통해 항목을 추가하면 다른 부분과는 다르게 표시된다.

새로 추가한 Microsoft-Windows-International-Core 등록 정보

새로 추가한 Microsoft-Windows-International-Core 등록 정보

이러한 구성 요소에 대한 설명을 레퍼런스에서 찾아 보고 알맞은 값을 속성 창에 입력해 주면된다.

마지막으로 유효성 검사를 하면 된다. Tool 메뉴에서 Validate Answer file 항목이 있다.

다음 할 일

무인 설치 설정 레퍼런스(Unattended Installation Settings Reference)에서 구성 요소를 하나하나 짚어볼 생각이다.

관련 문서

파일

  • Unattend.chm : AIK7에 포함된 무인 설치 레퍼런스 도움말 파일

내부 문서

외부 문서

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/03   »
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 26 27 28 29 30
31

글 보관함