응답 파일이란 Windows를 설치 하는 중 나타나는 설정들을 미리 파일로 저장하여 Windows 설치 프로그램이 이 파일을 바탕으로 Windows 설치를 자동으로 진행하게 하는 파일입니다.
이 응답 파일을 사용하여 완전 자동, 무인 설치 등이 가능합니다. 일반적인 GUI 방식에서 응답 파일의 적용은 설치 ISO 이미지의 루트의 Autounattend.xml이나 설치용 PE(boot.wim)의 레지스트리에 등록된 경로 등이 있는데요.
단 하나의 응답파일만 자동으로 선택하게 되어서 사용자가 수동으로 선택하려 하면 setup.exe의 명령줄 옵션을 이용해야 합니다. 번거롭죠. 그래서 응답 파일을 사용자가 GUI 방식으로 선택할 수 있도록 시도해 봤습니다.
아 참. 여러 응답 파일을 ISO 이미지에 넣어두면 어떤 효과를 얻을 수 있을까요?
OOBE 과정을 건너 뛰고 바로 Administrator 계정으로 로그인하는 응답 파일
무인 설치 응답 파일
파티션 설정 부분만 제외한 반무인 설치 응답 파일
인덱스 1번에 최적화된 응답 파일
.... 등등의 자신에 입맛에 맞게 짠 응답 파일을 사용자가 선택하여 Windows를 설치 할 수 있답니다.
그래서 고민한 결과, boot.wim 속 setup.exe와 sources 폴더가 바로 Windows 설치 프로그램 인데요. 이 루트의 setup.exe를 다른 파일로 교체하는 방법을 선택했습니다. 외국 포럼같은 데서 구할 수 있겠으나 전 제가 직접 만들어 보고 싶어서 직접 프로그래밍 했습니다. 이것 만들려고 다 까먹은 C언어 다시 복습하고 C++은 발로 배우고 Win32 API를 동영상 강의로 배우고 코드 최적화, 메모리 최적화 이딴거는 개나 줘버리고 만들었답니다. ^^; 노하우 없이 이론과 구글링, 복사 붙여넣기로 배운터라 부족하지만 한번 올려봅니다.
[↑이미지 01] – CodeName Sector 첫 화면
Sector 적용 방법
Windows 설치 용 PE(일반적으로 boot.wim의 2번 인덱스)를 Mount 한 뒤 루트에 보이는 setup.exe를 Sector(setup.exe)로 덮어씁니다.
Windows 설치 프로그램이 들어있는 PE나 또는 ISO 파일의 sources 폴더 속에 unattend 이름의 폴더를 만든 후 그 안에 Unattend_Info.xml 파일 및 여러 응답 파일들을 넣습니다. 응답 파일은 최대 30개 까지 권장됩니다.
참고:
Windows PE 3.1(Windows 7 SP1)에서 Windows 8.1 용 설치 프로그램을 실행할 시 일반적인 실행 및 Windows 설치는 잘 되나 무인 설치는 오류가 나더라구요.
Windows 8.1 용 boot.wim의 System32 폴더 내 아래와 같은 파일들을 Windows 3.1 PE의 System32 폴더에 넣어주세요. (당연히 플랫폼 버전이 같아야겠죠 x86은 x86 끼리~)
api*.dll (덮어 씀) – x86: 262개, x64: 263개
위 파일들은 첨부 파일에 포함되어 있습니다.
[↓이미지 02] - Sector의 런타임 초기화 프로세스
Unattend_Info.xml 파일명은 Sector가 각 응답 파일에 대한 설명을 표시하기 위한 예약 상수 문자열입니다. Sector를 시작하기 위한 필수 파일은 아닙니다.
\sources\unattend\ 폴더 안에 위치해야 하며, 대소문자는 구분하지 않습니다.
아래와 같은 XML 포맷을 사용해야 합니다.
[↓이미지 03] - Unattend_Info.xml 포맷 구조
XMLFile 속성 노드에 대한 권장 최대 문자 수: 63자 (ANSI) - 영문만 지원
Description 속성 노드에 대한 권장 최대 문자 수: 127자 (UNICODE) - 다국어 지원
참고: 설명 문자열이 127자까지 가버리면 Sector의 콤보 박스안에 모두 다 못 들어가니, 리소스 해커 등의 리소스 편집 툴로 크기를 줄여보시는 것도 좋겠네요.
아 배경화면은 가운데 로고 이미지가 투명을 지원하지 않아서(구현하질 못해서) 단색이 아닌 이미지를 넣을 땐 합성해서 넣어야 해요. ;;
참고: 권장 최대 문자 수를 초과할 시 버퍼 오버플로우가 발생할 수 있습니다. 기본적으로 초과 문자는 잘리게 끔 했습니다.
샘플 응답 파일인 SkipOOBEasAdmin.xml 파일은 Windows 설치 마지막 단계인 OOBE 단계를 건너뛰고 Administrator 계정으로 자동 로그온하는 응답 파일입니다.
전체 자동 설치 무인 응답 파일도 만들어 보려 했는데 파티션 설정 부분에서 자꾸 오류가 나서 그만 뒀어요…… ㅠㅠ 구글링을 더 해봐야겠어요.
다운로드
버전 히스토리
-Beta 2
Visual C Runtime Library 정적 링킹
Copyleft 선언
소스 오픈
-Beta 1
최초 배포
나름 몇 번 테스트 해봤는데 워낙 단순한 프로그램이니 심각한 버그는 없지 않나 싶어요.
참고로 Windows 설치 시 업그레이드 할 것이냐, 사용자 지정할 것이냐 묻는데 전 업그레이드는 하지 않아서 업그레이드에 관한 테스트는 하지 않았어요. 뭐.. 거의 똑같지 않을까 생각해요.
다음은 Windows PE 3.1 x64 기반의 Windows 8.1 용 설치 프로그램 x64 및 Sector x64로 Windows 7 x64를 샘플 응답 파일을 이용해 설치하는 스크린 샷 입니다.
8.1 base에 boot.wim 2번 이미지 마운트하고 system32에
msvcr100.dll
msvcr100d.dll 두파일만 넣고
source폴더에 unattend 폴더 만들고 응답파일 2가지 넣고
win7 ulti 랑 win8.1 pro 통합이미지 넣고 테스트 해보니
설명하신데로 아주잘 됩니다.