반응형

Windows 무인 설치(Unattended Setup) 작업을 하다 보면, Autounattend.xml 안에 <File> 태그로 포함된 여러 VBS, CMD, REG 등의 스크립트를 직접 꺼내야 하는 경우가 많습니다. 이 프로그램은 그 과정을 완전히 자동화해주는 AutoIt 기반 유틸리티입니다. XML에서 <File path="...">...</File> 구조를 찾아 실제 파일로 복원하고, 줄간격 및 특수문자까지 그대로 보존하여 저장합니다.

 

autounattend.xmlWindows 11/10용 파일 생성

https://schneegans.de/windows/unattend-generator/

 

Generate autounattend.xml files for Windows 10/11

Region and language settings: Install Windows using these language settings: Windows display language: Arabic Brazilian Portuguese Bulgarian Chinese Simplified Chinese Traditional Croatian Czech Danish Dutch English English International Estonian Finnish F

schneegans.de

 


🔧 주요 기능 요약

기능설명
XML 파일 선택 Autounattend.xml 파일을 선택하여 내용 분석
저장 경로 지정 추출된 파일이 저장될 대상 폴더 지정
자동 파일 추출 XML 내부 <File> 태그 내 포함된 스크립트를 원래 파일 형태로 복원
로그 출력 추출 진행 상황 및 결과를 콘솔 스타일 로그로 표시
폴더 목록 표시 생성된 각 폴더 경로를 리스트 형태로 확인 가능
선택 폴더 열기 리스트에서 폴더를 선택 후 탐색기로 바로 열기 가능

🖥️ GUI 구성

프로그램 이름: AutoUnattend Extractor v1.0
개발 환경: AutoIt
실행 파일: 단일 EXE 형태로 빌드 가능

GUI는 단일 탭 형태로 구성되어 있으며 다음과 같은 항목을 제공합니다.

  • Autounattend.xml 파일:
    추출 대상 XML 파일을 지정하는 입력창과 파일 선택 버튼(...)
  • 저장 대상 경로:
    복원된 스크립트 파일이 저장될 폴더 지정
  • 작업 로그 출력:
    진행 상태를 실시간으로 표시하는 콘솔형 로그 창
  • 생성된 폴더 경로 선택:
    실제로 생성된 폴더 목록을 확인하고 더블클릭 시 탐색기로 열 수 있음
  • [파일 추출 실행] 버튼:
    추출 프로세스를 시작
  • [선택 폴더 열기] 버튼:
    리스트에서 선택한 폴더를 바로 탐색기로 열기

⚙️ 작동 원리

  1. 사용자가 Autounattend.xml을 지정하면 내부 전체 텍스트를 읽습니다.
  2. 정규식을 사용해 <File path="...">...</File> 구조를 모두 탐색합니다.
  3.  
    StringRegExp($xml, '(?is)<File\s+path="([^"]+)">(.*?)</File>', 3)
  4. 각 <File> 블록마다 실제 경로를 계산해 폴더를 자동 생성합니다.
  5. 내부 내용은 줄바꿈(CRLF)과 특수문자(&lt;, &gt; 등) 을 복원하며,
    VBS·REG는 유니코드(UTF-16) 로, 기타 스크립트는 UTF-8로 저장됩니다.
  6. 모든 파일이 정상 생성되면 로그창에 결과를 표시하고 완료 메시지를 띄웁니다.
StringRegExp($xml, '(?is)<File\s+path="([^"]+)">(.*?)</File>', 3)

🧾 특수문자 및 줄간격 복원 처리

AutoIt 기본 문자열 처리 특성상 XML 내 &amp;, &lt;, &#x2026; 등의 문자가 그대로 저장되면 원본 스크립트가 깨질 수 있습니다.
이를 방지하기 위해 다음과 같은 문자 변환 로직이 적용됩니다.

 
$sContent = StringReplace($sContent, "&amp;", "&")
$sContent = StringReplace($sContent, "&lt;", "<")
$sContent = StringReplace($sContent, "&gt;", ">")
$sContent = StringReplace($sContent, "&#x2026;", "…")
  • 시작과 끝의 불필요한 공백 줄 제거
  • <![CDATA[ ... ]]> 태그 자동 제거
    를 통해 순수한 스크립트 코드만 복원합니다.

📂 예시

예를 들어, XML에 다음과 같은 내용이 포함되어 있다면:

<File path="C:\Setup\Scripts\AddUser.vbs">
<![CDATA[
Set WshShell = CreateObject("WScript.Shell")
WshShell.Run "net user test /add"
]]>
</File>
 
저장경로\Setup\Scripts\AddUser.vbs 그리고 내용은 원본 줄바꿈 및 인코딩이 그대로 유지된 형태로 저장됩니다.

🪟 주요 함수 설명

함수명기능
_SelectXML() XML 파일 선택 다이얼로그
_SelectFolder() 저장 대상 폴더 선택
_RunExtract() XML 파싱 및 파일 추출 핵심 처리
_SaveFilePreserve() 줄간격, 특수문자, 인코딩을 유지하여 파일 저장
_Log() 로그 창에 텍스트 출력
_OpenSelectedPath() 선택한 폴더를 탐색기에서 열기
_MsgBoxTop() 항상 위에 표시되는 메시지박스 출력

🚫 안전장치

중복 실행을 방지하기 위해 _Singleton() 함수를 사용합니다. 이미 프로그램이 실행 중이면 다음과 같은 경고창이 표시됩니다.

경고: 프로그램이 이미 실행 중입니다.

✅ 사용 예시 요약

1️⃣ Autounattend.xml 파일 선택
2️⃣ 저장 폴더 지정
3️⃣ [파일 추출 실행] 클릭
4️⃣ 추출 완료 후, 생성 폴더 리스트에서 폴더 선택 → [선택 폴더 열기] 클릭 모든 스크립트가 자동으로 복원되어 배포 폴더 구조를 그대로 재현합니다.


💡 활용 포인트

  • Sysprep이나 무인 설치 도구 제작 시, XML에 포함된 스크립트를 빠르게 분리하여 디버깅 가능
  • 백업용 Autounattend.xml에서 포함된 파일만 추출 가능
  • 다른 PC에서 XML 기반 배포 구성을 손쉽게 재현 가능

🏁 결론

AutoUnattend Extractor v1.0
XML에 내장된 스크립트를 한 번에 추출하고 원본 구조·인코딩·문자까지 그대로 복원하는 가볍고 실용적인 AutoIt 기반 도구입니다.

무인 설치나 커스텀 배포 작업을 자주 하는 사용자라면 이 유틸리티 하나로 XML 정리 작업 시간을 크게 줄일 수 있습니다.

 

 

 

■ AutoUnattend Extractor v1.0 — XML 스크립트 추출 움짤(GIF)

 

반응형

+ Recent posts