반응형

WinLauncher > EasyWinSetup 연동 - 움짤(GIF)

 

WinLauncher > WinSetup 연동 - 움짤(GIF)

└▶ 마지막 설치 파일 경로와 인덱스를 저장하여 재실행 시 빠르게 연동됩니다.

 

WinLauncher > RSImageX 연동 - 움짤(GIF)

└▶ 마지막 설치 파일 경로와 인덱스를 저장하여 재실행 시 빠르게 연동됩니다.

 

WinLauncher > WinNTSetup 연동 - 움짤(GIF)

└▶ 마지막 설치 파일 경로와 인덱스를 저장하여 재실행 시 빠르게 연동됩니다.

 

WinLauncher v5.0

Windows 설치를 위한 이미지 선택부터 파티션 구성, 응답파일, 드라이버 연동까지

Windows를 새로 설치할 때는 설치 이미지 선택부터 대상 디스크 확인, 파티션 구성, Windows 이미지 Index 선택, 응답파일 적용, 드라이버 및 $OEM$ 폴더 설정, 설치 프로그램 실행까지 여러 단계를 각각 확인해야 합니다. WinLauncher v5.0은 이러한 Windows 설치 준비 과정을 하나의 GUI에서 순서대로 구성할 수 있도록 제작한 Windows 설치 연동 런처입니다. ISO / WIM / ESD 이미지 검색부터 GPT / MBR 파티션 구성, 응답파일 선택 및 편집, 드라이버 폴더와 $OEM$ 폴더 지정, 설치 후 동작 설정, 자동 설치까지 하나의 작업 흐름으로 연결할 수 있습니다.

 

또한 다음과 같은 Windows 설치 도구를 선택하여 연동할 수 있습니다.

  • EasyWinSetup
  • WinSetup
  • RSImageX
  • WinNTSetup

 

 


목차

  1. WinLauncher v5.0 주요 특징
  2. 프로그램 실행 및 기본 구성
  3. 이미지 선택
    • 대상 디스크 선택
    • ISO / WIM / ESD 검색
    • 검색 깊이 설정
    • 이미지 파일 선택
    • Windows Index 선택
  4. 파티션 작업
    • 디스크 선택
    • GPT / MBR 선택
    • System 파티션 설정
    • MSR 파티션 설정
    • Windows 파티션 설정
    • Data 파티션 설정
    • WinRE 파티션 설정
    • 프리셋 저장 및 불러오기
    • 파티션 작업 건너뛰기
  5. 옵션 설정
    • 실행 도구 선택
    • 응답파일 선택
    • 응답파일 편집
    • LocalUser 계정 이름 변경
    • 사용자 응답파일 지정
    • 드라이버 폴더 지정
    • $OEM$ 폴더 지정
    • 설치 후 동작 설정
    • 자동 설치 설정
  6. Windows 설치 실행
  7. 설치 도구별 연동 방식
  8. WinLauncher v5.0의 전체 작업 흐름
  9. 작업 설정 저장
  10. 주의사항
  11. 마무리

1. WinLauncher v5.0 주요 특징

WinLauncher v5.0은 Windows 설치에 필요한 여러 설정을 단계별로 구성할 수 있도록 만들어졌습니다.

프로그램의 기본 작업 흐름은 다음과 같습니다.

이미지 선택 → 파티션 작업 → 옵션 설정 → 설치 시작

이미 기존에 파티션이 구성되어 있다면 파티션 작업을 건너뛸 수도 있습니다.

주요 기능은 다음과 같습니다.

 

이미지 검색

연결된 물리 디스크를 확인하고 해당 디스크의 드라이브 문자를 기반으로 ISO, WIM, ESD 파일을 검색합니다.

 

Windows Index 선택

WIM 또는 ESD 이미지에 포함된 여러 Windows 에디션 중 설치할 Index를 선택할 수 있습니다.

 

디스크 정보 확인

물리 디스크의 번호, 형식, 크기, 파티션 개수, 미디어 타입, 모델명을 확인할 수 있습니다.

 

GPT / MBR 파티션 구성

Windows 설치 대상 디스크를 GPT 또는 MBR 방식으로 초기화하고 설치에 필요한 파티션을 구성할 수 있습니다.

 

응답파일 연동

프로그램에 포함된 응답파일을 선택하거나 외부 unattend.xml 파일을 직접 지정할 수 있습니다.

 

드라이버 및 $OEM$ 연동

설치 과정에서 사용할 드라이버 폴더와 $OEM$ 폴더를 지정할 수 있습니다.

 

다양한 Windows 설치 도구 연동

EasyWinSetup, WinSetup, RSImageX, WinNTSetup 중 사용할 프로그램을 선택하여 설치를 진행할 수 있습니다.

 

자동 설치

자동 설치 옵션을 활성화하면 선택한 설치 도구가 실행된 후 설치 시작 옵션까지 함께 전달할 수 있습니다.


2. 프로그램 실행 및 기본 구성

WinLauncher v5.0을 실행하면 크게 다음과 같은 탭으로 구성되어 있습니다.

  • 이미지 선택
  • 파티션 작업
  • 옵션 설정
  • 도움말

상단 오른쪽에는 KO / EN 언어 선택 기능이 있어 프로그램 인터페이스를 한국어 또는 영어로 변경할 수 있습니다.

프로그램은 관리자 권한으로 실행되도록 구성되어 있으며, 중복 실행을 방지하기 위한 Singleton 처리도 포함되어 있습니다.


3. 이미지 선택

3-1. 대상 디스크 선택

첫 번째 이미지 선택 탭에서는 Windows 설치 이미지가 저장되어 있는 디스크를 선택합니다.

디스크 목록에는 다음과 같은 정보가 표시됩니다.

 

항목설명

No 물리 디스크 번호
Type 디스크 형식
Size 디스크 전체 용량
Partitions 파티션 개수 및 드라이브 문자
Media Type SSD, HDD, NVMe, USB 등의 미디어 유형
Model 디스크 모델명

 

프로그램은 Windows에 연결된 PhysicalDrive를 직접 조회하여 디스크 정보를 구성합니다. 따라서 단순히 C:, D:와 같은 드라이브 문자만 표시하는 방식이 아니라 물리 디스크 단위로 설치 대상 장치를 확인할 수 있도록 구성되어 있습니다. 설치 이미지가 들어 있는 디스크를 선택한 후 다음 단계의 검색 설정을 진행합니다.


3-2. 이미지 검색 설정

이미지 선택 화면에서는 검색 조건을 설정할 수 있습니다.

디렉터리 깊이

 

디렉터리 깊이를 설정하여 검색할 폴더 범위를 지정합니다. 예를 들어 이미지가 디스크 루트에 있다면 낮은 깊이로 검색할 수 있고, 여러 단계의 하위 폴더에 저장되어 있다면 검색 깊이를 높일 수 있습니다.

검색 확장자

 

다음 파일 형식을 선택할 수 있습니다.

  • ISO
  • WIM
  • ESD

필요한 형식만 체크하면 해당 확장자의 파일을 검색합니다.

예를 들어 WIM 파일만 찾고 싶다면 ISO와 ESD를 해제하고 WIM만 선택하면 됩니다.


3-3. 이미지 파일 검색

검색 대상 디스크와 검색 조건을 설정한 다음 검색 버튼을 클릭합니다.

검색 결과에는 다음 정보가 표시됩니다.

  • 이미지 파일 전체 경로
  • 이미지 파일 크기

예를 들어 다음과 같은 형태로 표시됩니다.

D:\ISO\Windows11.iso
D:\Sources\install.wim
E:\Windows\install.esd

 

파일을 선택하면 해당 이미지의 Index 정보를 읽어오는 과정이 진행됩니다.


3-4. 이미지 Index 선택

Windows 설치 이미지에는 여러 에디션이 포함될 수 있습니다.

예를 들어 하나의 install.wim 안에 여러 Windows 에디션이 포함되어 있을 수 있습니다.

WinLauncher는 선택한 이미지의 Index 정보를 읽어 다음과 같이 목록으로 표시합니다.

 

Index    Name
1        Windows 11 Home
2        Windows 11 Pro
3        Windows 11 Enterprise
...

 

여기서 실제 설치하려는 Windows Index를 선택합니다.

선택한 Index는 이후 실행할 설치 도구에 전달됩니다.


3-5. 다음 단계로 이동

이미지 파일과 Index를 선택한 후 하단의 다음 버튼을 클릭하면 파티션 작업 화면으로 이동합니다.

이때 선택한 이미지 파일과 Index 정보가 다음 단계에서 사용할 수 있도록 내부 변수에 저장됩니다.


4. 파티션 작업

두 번째 탭은 파티션 작업입니다.

이 화면에서는 Windows를 설치할 대상 디스크를 선택하고 GPT 또는 MBR 방식으로 파티션을 구성할 수 있습니다.

디스크 목록을 클릭하면 선택한 디스크의 파티션 정보가 아래쪽에 표시됩니다.


4-1. 대상 디스크 선택

파티션 작업 화면의 디스크 목록에서도 다음 정보를 확인할 수 있습니다.

  • 디스크 번호
  • 디스크 형식
  • 디스크 용량
  • 파티션 개수
  • 미디어 타입
  • 모델명

설치 대상 디스크를 정확하게 선택하는 것이 중요합니다. 특히 파티션 생성 작업을 실행하면 대상 디스크를 초기화하는 과정이 포함될 수 있으므로 디스크 번호와 모델명을 반드시 확인한 후 진행해야 합니다.


4-2. GPT와 MBR 선택

파티션 구성 방식은 두 가지입니다.

GPT (UEFI)

최신 Windows 시스템에서 일반적으로 사용하는 구성 방식입니다.

GPT 방식에서는 다음과 같은 파티션 구성을 사용할 수 있습니다.

  • EFI System Partition
  • MSR
  • Windows
  • Data
  • WinRE

MBR (Legacy)

Legacy BIOS 방식의 설치 환경을 위한 구성입니다. MBR 방식에서는 Windows 파티션을 생성하고 Active 설정을 적용하는 방식으로 구성됩니다. 프로그램 화면에서 원하는 방식을 선택하면 해당 방식에 맞춰 파티션 설정 항목의 활성화 상태가 변경됩니다.


4-3. System 파티션 설정

GPT 방식에서는 System 파티션을 설정할 수 있습니다.

설정 가능한 항목은 다음과 같습니다.

  • 파티션 크기
  • 파티션 레이블
  • 드라이브 문자

기본값은 소스 기준으로 다음과 같이 설정되어 있습니다.

 

크기       : 200 MB
레이블     : System
드라이브   : S:

 

System 파티션은 EFI 시스템 파티션으로 생성되며 FAT32 형식으로 포맷됩니다.


4-4. MSR 파티션

GPT 방식에서는 필요에 따라 MSR 파티션 생성을 선택할 수 있습니다.

MSR 크기는 별도로 지정할 수 있으며 기본값은 16MB입니다.

MSR 옵션을 체크하면 Windows 파티션 생성 전에 MSR 파티션이 추가됩니다.


4-5. Windows 파티션

Windows 파티션은 실제 Windows 운영체제가 설치될 파티션입니다.

크기는 다음과 같이 설정할 수 있습니다.

Auto
100 GB
120 GB
150 GB
180 GB
200 GB
...

 

Auto를 선택하면 남은 공간을 기준으로 Windows 파티션을 생성하는 방식으로 동작합니다. 수동 크기를 선택하면 지정한 크기만큼 Windows 파티션을 생성합니다. Windows 파티션의 기본 레이블은 Windows, 기본 드라이브 문자는 W:로 설정되어 있습니다. 필요에 따라 레이블과 드라이브 문자를 변경할 수 있습니다.


4-6. Data 파티션

Windows 파티션 크기를 수동으로 지정한 경우에는 Data 파티션을 추가할 수 있습니다. Data 파티션의 크기와 레이블을 지정할 수 있으며, 드라이브 문자 역시 선택할 수 있습니다. Data 파티션을 사용하면 운영체제 영역과 사용자 데이터 영역을 분리하는 구성으로 사용할 수 있습니다. 단, 소스의 현재 동작상 Windows 파티션이 Auto인 경우에는 Data 파티션 옵션을 사용할 수 없도록 구성되어 있습니다.


4-7. WinRE 복구 파티션

GPT 방식에서는 WinRE 복구 파티션도 선택할 수 있습니다.

기본값은 다음과 같습니다.

 

크기       : 2 GB
레이블     : Recovery
드라이브   : R:

 

WinRE 옵션을 활성화하면 Windows 파티션에서 필요한 공간을 축소한 후 복구 파티션을 생성합니다.

생성된 WinRE 파티션에는 Windows Recovery Partition GUID가 설정되고 GPT 속성도 적용됩니다.


4-8. GPT 파티션 생성 과정

GPT 방식으로 파티션 작업을 실행하면 내부적으로 다음 순서로 작업이 진행됩니다.

1. 디스크 초기화
2. GPT 변환
3. EFI System 파티션 생성
4. MSR 파티션 생성
5. Windows 파티션 생성
6. Data 파티션 생성
7. WinRE 파티션 생성

 

선택하지 않은 항목은 작업 과정에서 제외됩니다.

각 단계는 진행률 창을 통해 작업 상태가 표시됩니다.


4-9. MBR 파티션 생성 과정

MBR을 선택하면 다음과 같은 방식으로 구성됩니다.

1. 디스크 초기화
2. MBR 변환
3. Windows 파티션 생성
4. NTFS 포맷
5. Active 설정
6. 드라이브 문자 할당

 

MBR에서는 GPT 전용 System, MSR, WinRE 구성 항목이 비활성화됩니다.


4-10. 프리셋 기능

자주 사용하는 파티션 구성이 있다면 프리셋 기능을 사용할 수 있습니다.

프로그램에서는 총 6개의 프리셋을 사용할 수 있도록 구성되어 있습니다.

프리셋 1
프리셋 2
프리셋 3
프리셋 4
프리셋 5
프리셋 6

 

저장되는 주요 항목은 다음과 같습니다.

  • GPT / MBR
  • Windows 파티션 크기
  • Windows 레이블
  • Windows 드라이브 문자
  • System 크기
  • System 레이블
  • System 드라이브 문자
  • MSR 사용 여부 및 크기
  • Data 사용 여부 및 설정
  • WinRE 사용 여부 및 설정

프리셋 저장 방법

  1. 파티션 구성을 설정합니다.
  2. 저장할 프리셋 번호를 선택합니다.
  3. 설정 저장을 클릭합니다.
  4. 저장 확인창에서 확인합니다.

프리셋 불러오기

  1. 사용할 프리셋 번호를 선택합니다.
  2. 해당 프리셋 버튼을 클릭합니다.
  3. 저장된 파티션 설정이 현재 화면에 적용됩니다.

설정은 WinLauncher.ini에 저장됩니다.


4-11. 파티션 작업 건너뛰기

이미 Windows 설치 대상 디스크에 파티션 구성이 완료되어 있다면 파티션 작업을 다시 수행할 필요가 없습니다. 이 경우 파티션 작업 안함 (다음) 버튼을 사용할 수 있습니다. 기존 파티션을 유지하면서 설치할 Windows 파티션을 선택하고 다음 단계로 넘어가는 방식입니다. 선택한 Windows 파티션에는 드라이브 문자가 필요합니다.


5. 옵션 설정

세 번째 탭은 옵션 설정입니다.

이곳에서는 실제 Windows 설치 프로그램에 전달할 세부 옵션을 설정합니다.

주요 항목은 다음과 같습니다.

  • 실행 도구
  • 응답파일
  • 사용자 계정
  • 사용자 지정 XML
  • 드라이버
  • $OEM$
  • 설치 후 동작
  • 자동 설치

5-1. 실행 도구 선택

WinLauncher v5.0은 다음 네 가지 설치 도구를 선택할 수 있습니다.

EasyWinSetup
WinSetup
RSImageX
WinNTSetup

 

실행 파일이 프로그램 폴더에 존재하지 않는 경우 해당 항목은 선택할 수 없도록 처리되어 있습니다.

따라서 사용하려는 실행 도구를 프로그램과 함께 준비한 후 선택하면 됩니다.


5-2. 응답파일 선택

응답파일 영역에서는 프로그램 내부의 Panther 폴더에 포함된 XML 파일을 목록으로 표시합니다.

현재 소스에서 기본적으로 구분하고 있는 응답파일은 다음과 같습니다.

A-0.Default_Unattend.xml
A-1.Administrator.xml
A-2.LocalUser.xml
A-3.CustomUser.xml

B-1.Administrator_RemoveAppx.xml
B-2.LocalUser_RemoveAppx.xml
B-3.CustomUser_RemoveAppx.xml

 

각 파일을 선택하면 프로그램에서 용도를 설명하는 안내 문구가 표시됩니다.

예를 들어 다음과 같은 용도로 구분되어 있습니다.

  • 기본 Unattend
  • Administrator 계정
  • LocalUser 계정
  • CustomUser 계정
  • AppX 제거 기능이 포함된 응답파일

5-3. 응답파일 편집

응답파일을 선택하면 Edit 버튼을 사용할 수 있습니다. 버튼을 클릭하면 포함된 Notepad2.exe가 우선 사용되고, 해당 프로그램이 없는 경우 Windows 기본 메모장이 실행됩니다. 따라서 설치 환경에 맞춰 응답파일 내용을 직접 확인하거나 수정할 수 있습니다.


5-4. LocalUser 계정 이름 변경

LocalUser가 포함된 응답파일을 선택하면 계정 이름 변경 입력란이 활성화됩니다.

여기에 원하는 사용자 계정 이름을 입력하면 설치 실행 시 해당 응답파일의 다음 항목을 변경하도록 구현되어 있습니다.

<DisplayName>
<Name>
<Username>

 

즉, 응답파일을 별도로 여러 개 만들지 않고 하나의 LocalUser용 응답파일을 이용하여 계정 이름을 변경하는 방식으로 사용할 수 있습니다.


5-5. 사용자 지정 응답파일

프로그램 내부의 응답파일을 사용하지 않고 직접 작성한 unattend.xml을 사용하려는 경우에는 응답파일 수동 선택 기능을 사용할 수 있습니다. ... 버튼을 클릭한 후 사용할 XML 파일을 선택합니다. 수동으로 지정한 XML 파일이 존재하면 내부 기본 응답파일보다 우선하여 설치 과정에 사용됩니다.

 

따라서 다음과 같은 형태로 사용할 수 있습니다.

기본 응답파일
        ↓
또는
사용자 지정 unattend.xml
        ↓
Windows 설치 도구에 전달

5-6. 드라이버 폴더

설치 과정에서 추가 드라이버를 함께 사용하려는 경우 드라이버 폴더를 지정할 수 있습니다.

사용 옵션을 활성화하면 폴더 선택 버튼을 사용할 수 있습니다.

기본적으로 프로그램 내부에는 다음과 같은 작업 경로가 준비됩니다.

%TEMP%\WinLauncher\WINLAUNCHER_SOURCES\IRST_VMD

 

이 영역은 Windows 설치 과정에서 필요한 드라이버를 준비하는 용도로 활용할 수 있습니다.

외부 드라이버 폴더를 지정하는 것도 가능합니다.


5-7. $OEM$ 폴더

Windows 설치 과정에서 $OEM$ 구조를 사용하려는 경우 $OEM$ 폴더를 지정할 수 있습니다.

드라이버와 마찬가지로 사용 옵션을 활성화한 후 원하는 폴더를 선택하면 됩니다.

기본 작업 경로에는 다음과 같은 $OEM$ 폴더가 준비됩니다.

%TEMP%\WinLauncher\WINLAUNCHER_SOURCES\$OEM$

 

필요한 경우 외부 $OEM$ 폴더를 직접 지정할 수도 있습니다.


5-8. 설치 후 동작

설치가 끝난 후 시스템 동작도 선택할 수 있습니다.

현재 소스에서는 다음 세 가지 옵션으로 구성되어 있습니다.

없음
재부팅
시스템 종료

 

예를 들어 자동 설치 작업 후 PC를 자동으로 재부팅하도록 설정하거나, 설치 완료 후 시스템을 종료하도록 구성할 수 있습니다.


5-9. 자동 설치

WinLauncher v5.0에는 자동 설치 옵션이 포함되어 있습니다.

사용
사용 안함

 

자동 설치를 활성화하면 선택한 설치 도구를 실행할 때 해당 도구에 설치 시작 옵션을 함께 전달합니다. 각 설치 도구별로 전달되는 옵션은 서로 다릅니다. 예를 들어 EasyWinSetup과 WinSetup에는 /ApplyStart, RSImageX에는 /start:On, WinNTSetup에는 -setup 옵션이 추가되는 구조입니다. 따라서 사용자가 설치 도구 화면에서 다시 설치 시작을 누르는 과정을 줄이는 용도로 사용할 수 있습니다.


6. Windows 설치 실행

모든 설정이 완료되면 설치 시작 버튼을 통해 실제 Windows 설치 프로그램을 실행합니다.

설치 실행 전에 WinLauncher는 최종 확인창을 표시합니다.

확인창에는 다음과 같은 정보가 포함됩니다.

설치 이미지
Index
대상 디스크
Boot 드라이브
Windows 드라이브
응답파일
드라이버
$OEM$
종료 옵션
자동 설치 여부
실행 도구

 

이 정보를 마지막으로 확인한 후 설치를 진행할 수 있습니다.


7. 설치 도구별 연동 방식

WinLauncher는 선택한 프로그램에 맞춰 각각 다른 명령줄을 구성합니다.

EasyWinSetup

다음과 같은 주요 정보를 전달합니다.

/ImageFile
/Index
/ApplyDrv
/BootDrv
/XmlFile
/DriversPath
/OemPath
/after
/ApplyStart

WinSetup

EasyWinSetup과 유사한 구조로 이미지, Index, 설치 드라이브, 부트 드라이브 및 추가 옵션을 전달합니다.

/ImageFile
/Index
/ApplyDrv
/BootDrv
/XmlFile
/DriversPath
/OemPath
/after
/ApplyStart

RSImageX

RSImageX에는 다음과 같은 방식으로 주요 설치 정보를 전달합니다.

/index
/instdrive
/sysdrive
/format
/oemfolder
/bcdboot
/xmlfile
/driverfolder
/reboot
/turnoff
/start:On

WinNTSetup

WinNTSetup은 NT6 설치 방식에 맞춰 다음과 같은 인자를 구성합니다.

NT6
-source
-wimindex
-syspart
-tempdrive
-unattend
-drivers
-OEM
-setup

 

즉, WinLauncher가 직접 모든 Windows 설치 작업을 수행하기보다는 사용자가 선택한 설치 도구에 필요한 명령줄 인자를 자동으로 구성하여 실행하는 런처 역할을 수행합니다.


8. WinLauncher v5.0의 전체 작업 흐름

실제 사용 순서는 다음과 같이 정리할 수 있습니다.

STEP 1. 설치 이미지 선택

디스크 선택
   ↓
검색 깊이 설정
   ↓
ISO / WIM / ESD 선택
   ↓
검색
   ↓
이미지 선택
   ↓
Windows Index 선택

STEP 2. 파티션 구성

새 디스크에 Windows를 설치한다면:

대상 디스크 선택
   ↓
GPT 또는 MBR 선택
   ↓
System 설정
   ↓
MSR 설정
   ↓
Windows 파티션 설정
   ↓
Data 설정
   ↓
WinRE 설정
   ↓
파티션 생성

기존 파티션을 사용하는 경우에는:

대상 디스크 선택
   ↓
설치할 파티션 선택
   ↓
파티션 작업 안함

으로 진행할 수 있습니다.


9. 옵션 설정

다음 단계에서 설치 환경을 구성합니다.

실행 도구 선택
   ↓
응답파일 선택
   ↓
필요 시 계정 이름 변경
   ↓
필요 시 사용자 지정 unattend.xml
   ↓
드라이버 폴더 지정
   ↓
$OEM$ 폴더 지정
   ↓
설치 후 동작 선택
   ↓
자동 설치 여부 선택

10. 최종 설치

마지막으로 설치 시작을 선택하면 최종 확인창이 나타납니다.

확인창에서 다음 내용을 다시 확인합니다.

설치 이미지
Index
대상 디스크
Boot 파티션
Windows 파티션
응답파일
드라이버
$OEM$
종료 옵션
자동 설치
실행 도구

문제가 없다면 확인하여 선택한 Windows 설치 프로그램을 실행합니다.


11. 설정 저장

WinLauncher v5.0은 여러 설정을 WinLauncher.ini에 저장합니다.

검색 설정과 파티션 프리셋, 실행 도구 및 일부 설치 옵션 등을 저장하여 다음 실행 시 기존 설정을 다시 사용할 수 있도록 구성되어 있습니다.

특히 프리셋 기능을 이용하면 자주 사용하는 GPT / MBR 파티션 구성을 저장해 두고 반복적으로 사용할 수 있습니다.


12. 프로그램 내부 작업 파일

WinLauncher는 실행 과정에서 임시 작업 영역을 사용합니다.

기본 작업 경로는 다음과 같습니다.

%TEMP%\WinLauncher

그 아래에 다음과 같은 구조가 사용됩니다.

WinLauncher
├─ 7ZIP
└─ WINLAUNCHER_SOURCES
   ├─ Panther
   ├─ IRST_VMD
   ├─ $OEM$
   ├─ Notepad2
   └─ ICO

 

프로그램 내부에 포함된 7z.exe, 7z.dll 및 WinLauncher_Sources.7z를 임시 작업 폴더에 풀어 사용하는 구조입니다.

프로그램 종료 과정에서는 WinLauncher 작업 폴더를 정리하도록 구성되어 있습니다.


13. 디스크 정보 표시 방식

WinLauncher v5.0의 또 하나의 특징은 디스크 정보를 단순한 드라이브 문자 기반으로 처리하지 않고 Windows API를 이용해 물리 디스크 정보를 확인한다는 점입니다.

 

소스에서는 다음과 같은 Windows API 제어 코드를 사용합니다.

IOCTL_STORAGE_QUERY_PROPERTY
IOCTL_DISK_GET_DRIVE_GEOMETRY_EX
IOCTL_DISK_GET_DRIVE_LAYOUT_EX
IOCTL_STORAGE_GET_DEVICE_NUMBER

 

이를 이용하여 디스크 크기, 파티션 레이아웃, 물리 디스크 번호, 모델 및 미디어 유형 등을 확인합니다. Windows의 IOCTL_DISK_GET_DRIVE_LAYOUT_EX는 디스크의 각 파티션에 대한 확장 레이아웃 정보를 조회하는 API입니다. (Microsoft Learn) 또한 IOCTL_STORAGE_QUERY_PROPERTY는 저장장치의 속성을 조회하는 용도로 제공되는 Windows API입니다. (Microsoft Learn)


14. 실제 활용 예

WinLauncher v5.0은 다음과 같은 Windows 설치 환경에서 활용할 수 있습니다.

새 SSD에 Windows 설치

Windows 이미지 선택
→ SSD 선택
→ GPT 파티션 생성
→ Windows 파티션 생성
→ WinRE 생성
→ 응답파일 적용
→ Windows 설치

기존 파티션을 이용한 Windows 설치

Windows 이미지 선택
→ 기존 디스크 선택
→ Windows 파티션 선택
→ 파티션 작업 건너뛰기
→ 응답파일 및 드라이버 설정
→ 설치 실행

자동 설치 환경

Windows 이미지
+
응답파일
+
드라이버
+
$OEM$
+
자동 설치

를 하나의 작업 흐름으로 구성하여 사용할 수 있습니다.


15. 사용 시 주의사항

가장 중요한 부분은 파티션 작업입니다.

GPT 또는 MBR 파티션 생성을 실행하면 대상 디스크의 기존 파티션 및 데이터가 삭제될 수 있습니다.

따라서 작업 전에 반드시 다음 사항을 확인해야 합니다.

  • 대상 디스크 번호
  • 디스크 모델명
  • 디스크 용량
  • 현재 연결된 다른 저장장치
  • 설치 대상 Windows 파티션
  • 필요한 데이터의 백업 여부

특히 여러 개의 SSD 또는 USB 저장장치가 연결된 상태에서는 반드시 대상 디스크를 정확하게 확인한 후 파티션 작업을 실행하는 것이 필요합니다.


16. WinLauncher v5.0을 이용한 Windows 설치 흐름 정리

WinLauncher v5.0의 전체 구조를 간단하게 정리하면 다음과 같습니다.

┌───────────────────────┐
│  1. 이미지 선택        │
│  ISO / WIM / ESD      │
│  Windows Index 선택   │
└───────────┬───────────┘
            ↓
┌───────────────────────┐
│  2. 파티션 작업        │
│  GPT / MBR            │
│  System / MSR         │
│  Windows / Data       │
│  WinRE                │
└───────────┬───────────┘
            ↓
┌───────────────────────┐
│  3. 옵션 설정          │
│  설치 도구             │
│  Unattend XML         │
│  Driver / $OEM$       │
│  종료 / 자동 설치      │
└───────────┬───────────┘
            ↓
┌───────────────────────┐
│  4. 최종 확인          │
│  설치 정보 확인        │
└───────────┬───────────┘
            ↓
┌───────────────────────┐
│  5. Windows 설치       │
│  EasyWinSetup         │
│  WinSetup             │
│  RSImageX             │
│  WinNTSetup           │
└───────────────────────┘

마무리

WinLauncher v5.0은 Windows 설치 과정에서 반복적으로 진행해야 하는 여러 설정을 하나의 프로그램으로 묶어 사용하는 Windows 설치 연동 런처입니다. 단순히 설치 프로그램을 실행하는 것에서 끝나는 것이 아니라, 설치 이미지 검색 → Windows Index 선택 → 디스크 확인 → GPT/MBR 파티션 구성 → 응답파일 선택 → 계정 설정 → 드라이버 연동 → $OEM$ 연동 → 설치 후 동작 설정 → 자동 설치 → Windows 설치 도구 실행 까지 하나의 흐름으로 구성할 수 있도록 제작되었습니다.

 

특히 EasyWinSetup, WinSetup, RSImageX, WinNTSetup 등 서로 다른 Windows 설치 도구를 하나의 인터페이스에서 선택하여 사용할 수 있기 때문에 사용 환경에 따라 원하는 설치 방식을 선택할 수 있습니다. 또한 자주 사용하는 파티션 구성을 프리셋으로 저장할 수 있어 반복적인 Windows 설치 작업에서 동일한 설정을 다시 구성하는 과정도 줄일 수 있습니다. WinLauncher v5.0은 Windows 설치 작업을 직접 수행하는 하나의 설치 엔진이라기보다, Windows 설치에 필요한 이미지와 디스크, 파티션, 응답파일, 드라이버 및 설치 도구를 하나의 작업 흐름으로 연결해 주는 통합 런처라는 점에 의미가 있습니다.

반응형
반응형

WinSetup64 v4.0 Command Line 옵션

WinSetup64 v4.0에서는 프로그램을 직접 실행하여 GUI에서 작업하는 기존 방식과 함께 Command Line 옵션을 이용한 설치 작업 연동 기능을 추가하였습니다. Command Line을 이용하면 외부 프로그램이나 자동화 스크립트에서 WinSetup64을 호출하여 이미지 파일, 이미지 Index, 설치 드라이브, 부팅 파티션 등을 지정할 수 있습니다. 또한 /Disk와 /Preset을 함께 사용하면 파티션 작업까지 자동으로 수행한 후 Windows 이미지 설치 단계로 연결할 수 있습니다.


1. /ImageFile

/ImageFile:<경로>

설치에 사용할 이미지 파일을 지정합니다.

소스에서는 다음 이미지 형식을 지원하도록 구성되어 있습니다.

ISO
WIM
ESD
SWM

 

예를 들어 ISO 파일을 지정하면 다음과 같이 사용할 수 있습니다.

WinSetup64.exe /ImageFile:"H:\install.iso"

 

WIM 파일을 직접 지정하는 경우에는 다음과 같이 사용할 수 있습니다.

WinSetup64.exe /ImageFile:"H:\sources\install.wim"

 

/ImageFile은 Command Line 설치 연동에서 중심이 되는 옵션으로, 실제 설치 작업을 수행하려면 일반적으로 /Index, /ApplyDrv 등의 옵션과 함께 사용하게 됩니다.

 


2. /Index

/Index:<번호>

WIM 또는 ESD 이미지에서 설치할 Windows 에디션의 Index 번호를 지정합니다.

 

예를 들어 2번 Index를 설치하려면 다음과 같이 지정합니다.

/Index:2

 

실제 소스에서는 지정된 Index를 프로그램의 이미지 목록에서 찾아 선택하도록 처리되어 있습니다.

 

따라서 /ImageFile로 이미지 파일을 지정하고 /Index로 설치할 이미지를 선택하는 구조입니다.

예:

WinSetup64.exe /ImageFile:"install.wim" /Index:2

3. /Disk

/Disk:<디스크번호>

 

파티션 작업을 수행할 물리 디스크 번호를 지정합니다.

 

예:

/Disk:6

 

v4.0에서는 /Disk가 단순히 설치 대상 디스크를 지정하는 용도가 아니라 파티션 작업 자동화와 연결됩니다.

 

특히 /Disk와 /Preset을 함께 사용하면 지정한 디스크에 저장된 프리셋 설정을 기반으로 파티션 작업을 먼저 수행합니다.

 

소스의 실제 처리 순서도 다음과 같이 구성되어 있습니다.

/Disk + /Preset
        ↓
파티션 작업
        ↓
디스크/파티션 정보 갱신
        ↓
Windows 이미지 설치

 

즉, Command Line 하나로 파티션 구성 후 Windows 설치까지 연결할 수 있는 부분입니다.

 


4. /Preset

/Preset:<1~6>

 

저장된 파티션 프리셋을 지정합니다.

 

WinSetup64에서는 WinSetup.ini의 다음과 같은 구조를 사용합니다.

[Preset_1]
[Preset_2]
[Preset_3]
...
[Preset_6]

 

예:

/Preset:1

 

소스에서는 /Preset 값을 1~6 범위로 처리하며, 값을 생략하거나 유효하지 않은 값이 들어오는 경우 기본적으로 Preset_1을 사용하도록 구성되어 있습니다.

따라서 다음과 같이 사용할 수 있습니다.

WinSetup64.exe /Disk:6 /Preset:1

 

이 명령은 6번 디스크에 Preset_1의 파티션 구성을 적용하는 방식입니다.

 

[Preset_1]
PartType=GPT
WinSize=Auto
WinLabel=Windows
WinLetter=W
SysSize=200
SysLabel=System
SysLetter=S
MSRCheck=4
MSRSize=16
DataCheck=4
DataSize=
DataLabel=Data
WinRECheck=4
WinRESize=2
WinRELabel=Recovery
WinRELetter=R

 

디스크 프리셋1  파티션 구성 연동 - 움짤(GIF)


5. /ApplyDrv

/ApplyDrv:<드라이브>

 

Windows 이미지를 실제로 적용할 대상 드라이브를 지정합니다.

 

예:

/ApplyDrv:W

 

또는

/ApplyDrv:W:

 

소스에서는 입력값을 처리하면서 드라이브 문자 형식을 정리하므로 W와 W: 형태를 모두 사용할 수 있도록 구성되어 있습니다.

 

예:

WinSetup64.exe /ImageFile:"install.wim" /Index:1 /ApplyDrv:W

 

이 경우 선택한 이미지가 W: 드라이브에 적용됩니다.


6. /BootDrv

/BootDrv:<문자 | - | *>

 

Windows 설치 후 부팅 파일을 구성할 부팅 파티션을 지정합니다.

이 옵션은 세 가지 방식으로 사용할 수 있습니다.

일반적인 드라이브 문자

/BootDrv:S:

 

지정한 S: 드라이브를 부팅 파티션으로 사용합니다.

- 자동 검색

/BootDrv:-

 

설치 대상과 동일한 디스크에서 ESP 또는 Active 부팅 파티션을 자동으로 검색합니다.

특히 /ApplyDrv와 함께 사용하면 설치 대상 드라이브가 속한 디스크를 기준으로 부팅 파티션을 찾아 연결합니다.

 

따라서 자동 설치 환경에서는 다음과 같이 구성할 수 있습니다.

/ApplyDrv:W /BootDrv:-

* 현재 부팅 드라이브

/BootDrv:*

 

현재 시스템의 부팅 드라이브를 찾아 해당 파티션을 사용합니다.

 

즉 /BootDrv는 다음 세 가지 방식을 제공합니다.

/BootDrv:S:    지정된 부팅 파티션
/BootDrv:-     설치 디스크에서 자동 검색
/BootDrv:*     현재 시스템 부팅 드라이브

7. /OemPath

/OemPath:<경로>

 

Windows 설치 과정에 사용할 $OEM$ 폴더의 경로를 지정합니다.

 

예:

/OemPath:"H:\sources\$OEM$"

 

Command Line으로 $OEM$ 경로를 지정하면 GUI의 $OEM$ 관련 설정에 해당 경로가 반영됩니다.

이를 이용하면 Windows 설치 과정에서 추가 파일이나 스크립트 등을 함께 구성하는 자동화 환경을 만들 수 있습니다.


8. /XmlFile

/XmlFile:<경로>

 

무인 설치에 사용할 XML 파일을 지정합니다.

 

예:

/XmlFile:"H:\AutoUnattend.xml"

 

또는

/XmlFile:"H:\unattend.xml"

 

소스에서는 지정된 XML 파일이 실제로 존재하는 경우 해당 기능을 활성화하고 GUI의 XML 입력 항목에도 경로를 반영합니다.

따라서 Command Line에서 이미지와 함께 무인 설치 XML까지 지정할 수 있습니다.


9. /DriversPath

/DriversPath:<경로>

 

설치 과정에서 사용할 드라이버 폴더를 지정합니다.

 

예:

/DriversPath:"H:\DRIVERS"

 

지정한 경로가 존재하면 드라이버 통합 옵션을 활성화하고 해당 경로를 GUI에 반영합니다.

따라서 별도의 GUI 조작 없이 Command Line에서 드라이버 경로까지 지정할 수 있습니다.


10. /after

/after:<Ready | Finish | Shutdown | Reboot | fw | ao>

 

설치 작업 완료 후 수행할 동작을 지정합니다.

지원되는 값은 다음과 같습니다.

옵션동작

Ready 작업 완료 후 대기
Finish 프로그램 종료
Shutdown 시스템 종료
Reboot 시스템 다시 시작
fw BIOS/UEFI 펌웨어 설정 진입
ao Finish와 동일하게 처리

예:

/after:Finish

 

설치 작업이 끝난 후 WinSetup64 프로그램을 종료합니다.

 

또는

/after:Reboot

 

설치 완료 후 시스템을 다시 시작하도록 지정할 수 있습니다.


11. /d

/d

 

기존 Windows 기본 부팅 항목을 보존하는 옵션입니다. 소스에서는 이 옵션이 지정되면 기존 기본 부팅 항목 정보를 보존한 후 bcdboot 작업 이후 이전 기본 항목을 복원하는 방식으로 처리하도록 구성되어 있습니다.

 

예:

WinSetup64.exe /ImageFile:"install.wim" /Index:1 /ApplyDrv:C: /d

12. /Compact

/Compact

 

WIM 이미지 적용 시 wimlib의 Compact 모드를 적용합니다.

소스에서는 실제 wimlib 명령에 다음 옵션을 추가하도록 구현되어 있습니다.

--compact=xpress4k

 

즉,

/Compact

 

을 사용하면 내부적으로 이미지 적용 명령에

--compact=xpress4k

 

가 추가됩니다.

 

따라서 일반 이미지 적용과 Compact 이미지 적용을 Command Line에서 선택할 수 있습니다.


13. /ApplyStart

/ApplyStart

 

설치 시작 전에 표시되는 확인 과정을 생략하고 바로 이미지 설치를 시작하도록 하는 옵션입니다.

 

단독으로 사용하는 옵션이라기보다는 다음과 같이 설치에 필요한 주요 옵션들과 함께 사용하는 형태입니다.

/ApplyStart

 

소스에서는 다음 조건이 모두 충족될 경우 자동 설치를 시작하도록 되어 있습니다.

/ImageFile
/Index
/ApplyDrv
/ApplyStart

 

그리고 /BootDrv가 지정되어 있거나 설치 위치를 기준으로 자동 부팅 파티션을 찾을 수 있어야 실제 설치 과정으로 연결됩니다.


14. /SaveList

/SaveList:<경로>

 

이미지 파일에 포함된 Windows 이미지 목록을 텍스트 파일로 저장합니다.

 

이 옵션은 /ImageFile과 함께 사용하도록 구현되어 있습니다.

 

예:

WinSetup64.exe /ImageFile:"install.wim" /SaveList:"WimList.txt"

 

이 경우 GUI에서 직접 이미지를 선택하지 않고 WIM 이미지의 정보를 확인하여 지정한 텍스트 파일로 저장한 후 종료하는 방식으로 사용할 수 있습니다. 또한 v4.0의 탐색기 컨텍스트 메뉴 기능에서도 이 옵션이 활용됩니다.

 

예를 들어 소스에서는 이미지 파일 우클릭 메뉴의 이미지 목록 기능을 다음과 같이 등록합니다.

WinSetup64.exe /ImageFile:"%1" /SaveList:"WimList.txt"

 

따라서 Windows 탐색기에서 WIM/ESD/SWM/ISO 파일을 대상으로 이미지 정보를 확인하는 용도로도 활용할 수 있습니다.


15. /add

/add

 

Windows 탐색기의 우클릭 컨텍스트 메뉴에 WinSetup64 기능을 등록합니다.

소스에서는 다음 확장자를 대상으로 컨텍스트 메뉴를 등록합니다.

.wim
.esd
.swm
.iso

 

등록 작업을 완료하면 프로그램을 종료합니다.

 

예:

WinSetup64.exe /add

16. /remove

/remove

 

WinSetup64에서 등록한 탐색기 우클릭 컨텍스트 메뉴를 제거합니다.

 

예:

WinSetup64.exe /remove

 

/add와 마찬가지로 작업 후 프로그램을 종료합니다.


Command Line 옵션 조합

v4.0의 Command Line 기능에서 중요한 부분은 각각의 옵션을 독립적으로 사용하는 것뿐만 아니라 여러 옵션을 조합하여 하나의 설치 작업으로 연결할 수 있다는 점입니다.

파티션 작업만 수행

WinSetup64.exe /Disk:6 /Preset:1

 

6번 디스크에 Preset_1의 파티션 구성을 적용합니다.

파티션 구성 후 Windows 자동 설치

WinSetup64.exe /ImageFile:"H:\install.iso" /Index:2 /Disk:6 /Preset:1 /ApplyDrv:W /BootDrv:- /ApplyStart

 

이 명령은 소스의 처리 순서에 따라 다음과 같이 동작합니다.

Disk 6 선택
   ↓
Preset 1 적용
   ↓
파티션 작업
   ↓
디스크 및 파티션 정보 갱신
   ↓
H:\install.iso 이미지 사용
   ↓
Index 2 선택
   ↓
W: 설치 대상 선택
   ↓
부팅 파티션 자동 검색
   ↓
/ApplyStart
   ↓
Windows 이미지 설치 시작

WIM 이미지 설치 + Compact + 종료

WinSetup64.exe /ImageFile:"install.wim" /Index:1 /ApplyDrv:C: /after:Finish /Compact /d

 

이 경우 Index 1 이미지를 C:에 적용하고 Compact 옵션을 사용하며, 작업 완료 후 프로그램을 종료하도록 구성됩니다.

이미지 목록 저장

WinSetup64.exe /ImageFile:"install.wim" /SaveList:"WimList.txt"

 

WIM 이미지의 정보를 텍스트 파일로 저장하는 용도로 사용할 수 있습니다.


Command Line 입력 형식

v4.0의 Command Line 파서는 입력 형식도 비교적 유연하게 구성되어 있습니다.

소스에서는 다음과 같은 형태를 모두 인식합니다.

/Key:Value
Key:Value

 

또한 / 또는 \와 같은 접두사를 제거한 후 옵션을 비교하기 때문에 접두사에 따른 차이를 크게 두지 않도록 구현되어 있습니다.

대소문자 역시 구분하지 않습니다.

 

예를 들어 옵션 이름은 다음과 같이 사용할 수 있습니다.

/ImageFile:"install.wim"
/imagefile:"install.wim"

 

동일한 방식으로 처리됩니다.


v4.0 Command Line 연동의 핵심

WinSetup64 v4.0의 Command Line 기능을 전체적으로 보면 크게 세 단계로 나눌 수 있습니다.

1단계 — 디스크 구성

/Disk
/Preset

↓

2단계 — Windows 설치 환경 설정

/ImageFile
/Index
/ApplyDrv
/BootDrv
/OemPath
/XmlFile
/DriversPath

↓

3단계 — 설치 실행 및 완료 동작

/ApplyStart
/Compact
/d
/after

 

 

 

이러한 구조를 이용하면 WinSetup64을 단순히 GUI에서 사용하는 설치 프로그램이 아니라, 다른 자동화 프로그램에서 Command Line으로 호출하여 Windows 설치 과정을 연동하는 구성으로 사용할 수 있습니다. 특히 /Disk + /Preset + /ImageFile + /ApplyDrv + /BootDrv + /ApplyStart 조합은 v4.0에서 추가된 Command Line 설치 연동의 핵심적인 사용 형태입니다. 또한 /SaveList, /add, /remove와 같은 옵션을 별도로 제공하여 Windows 이미지 정보 확인 및 탐색기 컨텍스트 메뉴 연동까지 Command Line을 통해 처리할 수 있도록 구성하였습니다. 위 내용은 실제 WinSetup64 v4.0(1).au3 소스의 /ImageFile부터 /remove까지의 옵션 정의와 실제 처리 로직을 기준으로 작성한 것입니다. 특히 /Disk + /Preset이 이미지 설치보다 먼저 실행되는 부분과 /BootDrv:-, /ApplyStart, /Compact의 실제 처리 방식까지 소스에 맞춰 반영했습니다.

 

WinSetup64 Command Line 명령 연동 - 움짤(GIF)

 

반응형
반응형

WinSetup64 v4.0 업데이트

WinSetup64을 v4.0으로 업데이트하면서 기존의 GUI 방식 작업뿐만 아니라 Command Line을 이용한 설치 작업 연동 기능을 추가하여 보다 다양한 환경에서 WinSetup64을 활용할 수 있도록 개선하였습니다.

 

이번 업데이트에서는 단순히 명령줄 옵션을 추가하는 것에 그치지 않고, Command Line 사용에 필요한 옵션 안내와 도움말 탭을 함께 제공하여 외부 프로그램이나 자동화 스크립트에서 WinSetup64의 설치 작업을 호출할 수 있도록 구성하였습니다.

 

https://noways.tistory.com/2364

 

WinSetup64 v4.0 - Command Line 설치 옵션

WinSetup64 v4.0 Command Line 옵션WinSetup64 v4.0에서는 프로그램을 직접 실행하여 GUI에서 작업하는 기존 방식과 함께 Command Line 옵션을 이용한 설치 작업 연동 기능을 추가하였습니다. Command Line을 이용하

noways.tistory.com

 

 

1. Command Line 옵션 및 도움말 탭 추가

v4.0에서 가장 크게 변경된 부분은 Command Line 설치 연동 기능입니다. 기존에는 WinSetup64 프로그램을 직접 실행한 후 GUI에서 디스크와 설치 옵션을 설정해야 했다면, v4.0에서는 Command Line 옵션을 이용하여 필요한 설치 작업을 외부에서 전달할 수 있도록 개선하였습니다.

 

특히 프로그램 내부에 도움말 탭을 추가하여 사용할 수 있는 Command Line 옵션과 관련 정보를 확인할 수 있도록 구성하였습니다. 이를 활용하면 WinSetup64을 다른 자동화 프로그램이나 배치 작업, 설치 스크립트 등과 연동하여 사용할 수 있으며, 반복적으로 동일한 설치 작업을 수행해야 하는 환경에서도 보다 편리하게 활용할 수 있습니다. 또한 GUI 환경에서 직접 설정하는 방식과 Command Line을 이용하는 방식을 함께 사용할 수 있도록 구성하여 사용 환경에 따라 적절한 방법을 선택할 수 있도록 하였습니다.

 

 

2. VHD/X 탑재 해제 오류 개선

기존 버전에서 VHD 또는 VHDX 이미지의 탑재 및 해제 과정에서 발생할 수 있었던 오류 부분도 함께 개선하였습니다. 특히 작업 완료 후 VHD/X가 정상적으로 해제되지 않거나 후속 디스크 작업에 영향을 줄 수 있는 부분을 점검하여 관련 동작을 보완하였습니다.

이를 통해 VHD/X를 활용한 설치 및 디스크 작업 과정에서 보다 안정적으로 작업을 진행할 수 있도록 개선하였습니다.

; --- VHD 해제 처리 ---
Func _VhdAction_Unmount()
    Local $sVhdPath = GUICtrlRead($idInpVhdPath)
    $sVhdPath = StringRegExpReplace($sVhdPath, '^["]|["]$', '') ; [안전장치] 양 끝 쌍따옴표 제거

    If $sVhdPath == "" Then
        Local $iIndex = _GUICtrlListView_GetSelectedIndices($idListVhdFiles)
        If $iIndex <> "" Then $sVhdPath = _GUICtrlListView_GetItemText($idListVhdFiles, Int($iIndex), 1)
    EndIf

    If $sVhdPath == "" Then Return

    _VhdLog(_GetLang("LogUnmountStart") & $sVhdPath)

    Local $tStorageType = DllStructCreate("dword DeviceId;byte VendorId[16]")
    Local $iDeviceId = StringInStr($sVhdPath, ".vhdx") ? 3 : 2
    DllStructSetData($tStorageType, "DeviceId", $iDeviceId)

    ; VIRTUAL_DISK_ACCESS_DETACH | GET_INFO (0x00040000 | 0x00080000)
    Local $aOpen = DllCall("virtdisk.dll", "dword", "OpenVirtualDisk", "ptr", DllStructGetPtr($tStorageType), "wstr", $sVhdPath, "dword", 0x000C0000, "dword", 0, "ptr", 0, "ptr*", 0)
    If @error Or $aOpen[0] <> 0 Then Return

    Local $hVhd = $aOpen[6]

    ; 1. 물리 디스크 번호 확보 (Detach 전에 드라이브 문자 정리용)
    Local $iVhdDiskNum = -1
    Local $tPathSize = DllStructCreate("ulong")
    DllStructSetData($tPathSize, 1, 0)
    DllCall("virtdisk.dll", "dword", "GetVirtualDiskPhysicalPath", "handle", $hVhd, "ptr", DllStructGetPtr($tPathSize), "ptr", 0)
    Local $iBufSize = DllStructGetData($tPathSize, 1)
    If $iBufSize > 0 Then
        Local $tPath = DllStructCreate("wchar[" & Int($iBufSize / 2) + 1 & "]")
        Local $aPath = DllCall("virtdisk.dll", "dword", "GetVirtualDiskPhysicalPath", "handle", $hVhd, "ptr", DllStructGetPtr($tPathSize), "ptr", DllStructGetPtr($tPath))
        If Not @error And $aPath[0] = 0 Then
            Local $sPhysPath = DllStructGetData($tPath, 1)
            Local $aNum = StringRegExp($sPhysPath, "(?i)PhysicalDrive(\d+)", 1)
            If IsArray($aNum) Then $iVhdDiskNum = Int($aNum[0])
        EndIf
    EndIf

    ; 2. Detach 전: 해당 VHD 디스크에 연결된 모든 드라이브 문자 해제
    ;    (파티션 작업으로 할당된 ESP DefineDosDevice 링크 및 assign letter 포함)
    If $iVhdDiskNum >= 0 Then
        For $i = 0 To 25
            Local $sLtr = Chr(65 + $i)
            Local $iDriveDisk = _GetPhysicalDriveNumberAPI($sLtr & ":")
            If $iDriveDisk = $iVhdDiskNum Then
                Local $sDrivePath = $sLtr & ":\"
                ; Mount Manager 영구 매핑 제거
                DllCall("kernel32.dll", "bool", "DeleteVolumeMountPointW", "wstr", $sDrivePath)
                ; DefineDosDevice 임시/심볼릭 링크 제거 (DDD_REMOVE_DEFINITION = 2)
                DllCall("kernel32.dll", "bool", "DefineDosDeviceW", "dword", 2, "wstr", $sLtr & ":", "wstr", "")
                _VhdLog($sLtr & ": 드라이브 문자 해제 (VHD 디스크 " & $iVhdDiskNum & ")")
            EndIf
        Next

        ; $aMounted 추적 목록에서도 해당 Harddisk 항목 제거
        For $m = 0 To $iMountedCount - 1
            If StringInStr($aMounted[$m][1], "Harddisk" & $iVhdDiskNum & "\") Then
                If $aMounted[$m][0] <> "" Then
                    DllCall("kernel32.dll", "bool", "DefineDosDeviceW", "dword", 7, "wstr", $aMounted[$m][0] & ":", "wstr", $aMounted[$m][1])
                    DllCall("kernel32.dll", "bool", "DefineDosDeviceW", "dword", 2, "wstr", $aMounted[$m][0] & ":", "wstr", "")
                EndIf
                $aMounted[$m][0] = ""
                $aMounted[$m][1] = ""
            EndIf
        Next
    EndIf

    ; ESP 시스템 문자 전역 추적 정리
    If $g_sSystemLetter <> "" Then
        DllCall("kernel32.dll", "bool", "DeleteVolumeMountPointW", "wstr", $g_sSystemLetter & ":\")
        DllCall("kernel32.dll", "bool", "DefineDosDeviceW", "dword", 2, "wstr", $g_sSystemLetter & ":", "wstr", "")
        $g_sSystemLetter = ""
    EndIf

    ; 3. 가상 디스크 분리
    DllCall("virtdisk.dll", "dword", "DetachVirtualDisk", "handle", $hVhd, "dword", 0, "dword", 0)
    DllCall("kernel32.dll", "bool", "CloseHandle", "handle", $hVhd)

    If IsObj($g_oVhdDriveCache) Then
        Local $sKey = StringLower($sVhdPath)
        If $g_oVhdDriveCache.Exists($sKey) Then
            $g_oVhdDriveCache.Remove($sKey)
        EndIf
    EndIf

    _VhdLog(_GetLang("LogUnmountDone"))

    ; 탐색기 캐시 갱신
    DllCall("shell32.dll", "none", "SHChangeNotify", "long", 0x08000000, "uint", 0x0000, "ptr", 0, "ptr", 0)
    Sleep(300)
    DllCall("shell32.dll", "none", "SHChangeNotify", "long", 0x00000001, "uint", 0x0000, "ptr", 0, "ptr", 0)
EndFunc

 

3. 디스크 작업 연동 추가

이번 v4.0에서는 디스크 작업 연동 기능도 추가하였습니다. WinSetup64에서 진행하는 설치 과정과 디스크 관련 작업을 연계할 수 있도록 구성하여, 단순한 Windows 설치 도구를 넘어 디스크 구성부터 Windows 설치까지 연결되는 작업 흐름을 만들 수 있도록 개선하였습니다. 특히 Command Line 설치 연동 기능과 함께 활용할 경우 외부 자동화 프로그램에서 필요한 작업을 순차적으로 호출하는 방식으로 구성할 수 있어 활용 범위가 더욱 넓어졌습니다.

 

 

WinSetup64 Command Line 명령 연동 - 움짤(GIF)

 

4. '파티션 백업' 압축률 - LZMS/ESD 지원 추가

 - 백업 시작 시 **'백업 시작' 버튼이 '작업 취소'로 전환**되며, 작업 취소 시 생성된 백업 파일은 **자동으로 정리(삭제)**됩니다.

https://wimlib.net/compression.html

 

wimlib - Compression

Normal/slow (level ≥ 35): "Near-optimal" parsing with matches found using BT4 matchfinder (binary trees with 4 bytes hashing, plus tables with 3 and 2 bytes hashing), along with repeat offset match searching. The compression ratio is better than that of

wimlib.net

 

 

마무리

WinSetup64 v4.0은 기존 GUI 기반의 Windows 설치 기능을 유지하면서 Command Line 설치 연동을 추가한 것이 이번 업데이트의 핵심입니다. Command Line 옵션과 도움말 탭을 통해 외부 프로그램 및 자동화 스크립트와의 연동 환경을 마련했으며, VHD/X 탑재 해제 오류를 개선하고 디스크 작업 연동 기능까지 추가하여 전체적인 설치 작업 흐름을 보완하였습니다.

 

앞으로 WinSetup64을 이용한 Windows 설치 자동화 작업에서 GUI 방식뿐만 아니라 Command Line을 활용한 다양한 자동화 구성에도 활용할 수 있을 것으로 생각됩니다. 이번 v4.0에서는 특히 Command Line을 이용한 설치 연동 환경 구축에 중점을 두고 기능을 개선하였습니다. 원하시면 다음 단계로 **실제 v4.0 소스의 Command Line 옵션을 하나씩 풀어서 설명하는 형태**로 이어서 작성할 수 있습니다.

 

 

반응형
반응형

Remote WinSetup PE v2.0 업데이트

Remote WinSetup PE를 기존 v1.0에서 v2.0으로 업데이트했습니다. 이번 업데이트의 핵심은 PE 환경에서 Windows 설치를 진행하기 전에 InstallConfig.ini에 저장된 디스크 정보와 현재 PE에서 인식된 실제 디스크 정보를 비교하여 설치 대상 디스크를 보다 정확하게 확인하는 기능을 추가한 것입니다.

 

기존 v1.0에서는 InstallConfig.ini에 저장된 DiskNumber를 기준으로 설치 대상 디스크를 찾았습니다. 하지만 PE 환경에서는 디스크 인식 순서가 변경되거나, RST와 같은 스토리지 드라이버가 정상적으로 로드되지 않아 디스크가 일부만 인식되는 경우가 있을 수 있습니다. 이러한 상황에서 잘못된 디스크를 설치 대상으로 선택하는 문제를 방지하기 위해 v2.0에서는 디스크 식별 정보를 추가로 활용하도록 보강했습니다.

 

1. InstallConfig.ini 디스크 정보 보강

v2.0에서는 기존 디스크 및 파티션 정보에 다음 항목을 추가로 읽어옵니다.

  • DiskGuid
  • DiskModel
  • DiskSerial
  • DiskSizeGB

따라서 단순한 디스크 번호뿐만 아니라 실제 디스크의 고유 정보와 하드웨어 정보를 함께 확인할 수 있습니다. 로그에도 다음과 같이 디스크 정보를 출력하도록 변경했습니다. DiskGuid / Model / Serial / SizeGB 이를 통해 PE 환경에서 어떤 디스크가 설치 대상으로 지정되어 있는지 보다 명확하게 확인할 수 있습니다.

[Install]
DiskNumber=0
PartitionNumber=2
DriveLetter=C
PartitionStyle=GPT
FirmwareType=UEFI
BootMode=UEFI
DiskGuid={9FCB2884-5EEF-4834-9B0A-D85A91881D8A}
DiskModel=VMware Virtual NVMe Disk
DiskSerial=VMWare NVME_0000
DiskSizeGB=80
SourceType=WIM
SourcePath=W:\WINSCP\WIM\install.wim
ImageIndex=2
UnattendPath=W:\WINSCP\Panther\unattend.xml
BackupPath=W:\WINSCP\Backup\

 

2. PE 환경에서 실제 디스크 정보 조회

v2.0에서는 별도의 PowerShell이나 WMIC 등에 의존하지 않고 Windows API를 직접 호출하여 디스크 정보를 조회합니다.

 

실제 물리 디스크를 대상으로 다음 정보를 확인합니다.

  • GPT Disk GUID 또는 MBR Signature
  • 디스크 모델명
  • 디스크 시리얼 번호
  • 디스크 전체 용량

또한 물리 디스크의 파티션 레이아웃 정보를 확인하여 GPT와 MBR 환경을 구분할 수 있도록 구성했습니다.

 

 

3. 디스크 식별 정보 기반 매칭

InstallConfig.ini에 저장된 디스크 정보와 PE에서 현재 인식된 디스크 정보를 비교합니다.

 

매칭 우선순위는 다음과 같습니다.

Disk GUID → Serial → Model + Size

 

가장 먼저 Disk GUID를 기준으로 동일한 디스크인지 확인하고, GUID 정보를 사용할 수 없는 경우에는 시리얼 번호를 확인합니다.

GUID와 시리얼 정보가 없는 경우에는 디스크 모델명과 용량을 조합하여 대상 디스크를 확인하도록 구성했습니다.

 

 

4. DiskNumber 변경에도 대응

이번 업데이트에서 중요한 부분은 InstallConfig.ini에 저장된 DiskNumber와 PE 환경에서 실제 인식된 DiskNumber가 달라지는 경우입니다. 예를 들어 설정 당시 대상 디스크가 Disk 0이었다고 하더라도 PE 환경에서는 디스크 인식 순서가 변경되어 동일한 디스크가 Disk 1로 인식될 수 있습니다. v2.0에서는 디스크의 식별 정보가 일치하면 실제 PE에서 확인된 DiskNumber로 다시 매핑합니다.

 

즉,

InstallConfig.ini : Disk 0

이더라도 실제 디스크 식별 결과가

PE 환경 : Disk 1

로 확인되고 GUID 등의 정보가 일치한다면 Disk 1을 실제 설치 대상 디스크로 재지정합니다.

이를 통해 단순한 디스크 번호 변경으로 인해 설치 대상이 잘못 지정되는 문제를 줄일 수 있도록 했습니다.

 

 

[00:47:28] ================================================
[00:47:28]   Remote WinSetup PE v2.0 Installer
[00:47:29]   런타임 펌웨어: UEFI
[00:47:29] ================================================
[00:47:29] 루트에 WINSCP 폴더가 있는 드라이브 검색 중...
[00:47:29] [OK] WINSCP root: D:\WINSCP\
[00:47:29] [OK] 설정 파일: D:\WINSCP\InstallConfig.ini
[00:47:29] [MAP] W:\WINSCP\WIM\install.wim -> D:\WINSCP\WIM\install.wim
[00:47:29] [MAP] W:\WINSCP\Panther\unattend.xml -> D:\WINSCP\Panther\unattend.xml
[00:47:29] [MAP] W:\WINSCP\Backup\ -> D:\WINSCP\Backup\
[00:47:29] Disk=0 Part=2 Letter=C
[00:47:29] Style=GPT BootMode=UEFI Firmware(INI)=UEFI
[00:47:29] DiskGuid={9FCB2884-5EEF-4834-9B0A-D85A91881D8A} Model=VMware Virtual NVMe Disk Serial=VMWare NVME_0000 SizeGB=80
[00:47:29] SourceType=WIM Index=2
[00:47:29] SourcePath(remap)=D:\WINSCP\WIM\install.wim
[00:47:29] UnattendPath(remap)=D:\WINSCP\Panther\unattend.xml
[00:47:29] 대상 디스크 식별 검증 중...
[00:47:29] [DISK] #0 Guid={9FCB2884-5EEF-4834-9B0A-D85A91881D8A} Model=VMware Virtual NVMe Disk Serial=VMWare NVME_0000 SizeGB=80
[00:47:29] [OK] 대상 디스크 검증 완료: Disk 0
[00:47:29] [OK] 소스 확인: D:\WINSCP\WIM\install.wim
[00:47:29] 설치 대상 파티션 확인 중... Disk 0 Part 2
[00:47:29] [OK] 설정 드라이브 문자 사용: C:\
[00:47:29] [OK] 대상 드라이브: C:\ | BootMode=UEFI | Style=GPT
[00:47:29] 포맷 확인 후 설치를 진행합니다...
[00:47:40] [AUTO] '포맷 확인' 타임아웃 — Yes 로 진행합니다.
[00:47:40] 1/4 - Windows 파티션을 빠른 포맷합니다...
[00:47:40] C: 드라이브의 모든 데이터가 삭제됩니다.
[00:47:46] Microsoft DiskPart 버전 10.0.19041.3636
[00:47:46] Copyright (C) Microsoft Corporation.
[00:47:46] 컴퓨터: MINWINPC
[00:47:46] 0 디스크가 선택한 디스크입니다.
[00:47:46] 2 파티션이 선택한 파티션입니다.
[00:47:46] 0 퍼센트 완료
  100 퍼센트 완료
[00:47:46] DiskPart가 볼륨을 성공적으로 포맷했습니다.
[00:47:46] DiskPart에서 드라이브 문자 또는 탑재 지점을 할당했습니다.
[00:47:46] DiskPart 마치는 중...
[00:47:47] [OK] 빠른 포맷 완료: C:\
[00:47:47] 2/4 - 설치 이미지 준비...
[00:47:47] [OK] 설치 이미지: D:\WINSCP\WIM\install.wim
[00:47:47] 3/4 - WIM 이미지를 적용하는 중입니다...
[00:47:47] [OK] wimlib: X:\Windows\wimlib-imagex.exe
[00:47:47] [INFO] 이미지 크기: 5197.5 MB
[00:47:47] 실행: "X:\Windows\wimlib-imagex.exe" apply "D:\WINSCP\WIM\install.wim" 2 "C:\." --verbose
[00:47:47] 작업 폴더: X:\Windows
[00:47:47] [PHASE] Applying image 2 ("Windows 10 22H2(19045.7727) Pro x64 Hotfix260914") from "D
[00:47:47] [PHASE] Creating files
[00:48:03] Creating files: 146119 of 146119 (100%) done
[00:48:03] [PHASE] Extracting file data
[00:49:40] Extracting file data: 10 GiB of 10 GiB (100%) done
[00:49:41] [PHASE] Applying metadata to files
[00:49:51] Applying metadata to files: 146119 of 146119 (100%) done
[00:49:52] [PHASE] Done applying WIM image.
[00:49:52] [INFO] wimlib exit (PID=1316, WaitClose=1)
[00:49:52] [OK] wimlib 이미지 전개 완료
[00:49:52] OEM / Unattend 복사...
[00:49:52] $OEM$ copy: D:\WINSCP\$OEM$
[00:49:52] [OK] $OEM$ 복사 완료
[00:49:52] [OK] Unattend copy: C:\Windows\Panther\unattend.xml
[00:49:52] 4/4 - BCD 부팅 구성...
[00:49:53] Boot setup: UEFI
[00:49:53] 실행: bcdboot "C:\Windows" /f UEFI /s Z: /l ko-KR
[00:49:54] [OK] BCD configured
[00:49:54] ================================================
[00:49:54]   모든 작업이 완료되었습니다.  경과 시간: 02:24
[00:49:54]   대상 드라이브: C:\  Boot: Z:\  Mode: UEFI
[00:49:54] ================================================
[00:49:57] [INFO] 재시작을 보류했습니다.

 

5. 디스크를 찾지 못하면 설치 중단

반대로 InstallConfig.ini에 저장된 디스크 식별 정보와 일치하는 디스크를 PE 환경에서 찾지 못한 경우에는 설치 작업을 진행하지 않습니다. 특히 PE에서 물리 디스크 자체가 정상적으로 인식되지 않는 경우에는 다음과 같이 설치를 중단할 수 있습니다.

  • RST 드라이버 누락
  • 스토리지 드라이버 로드 실패
  • 디스크 연결 상태 문제
  • InstallConfig.ini와 실제 설치 대상 디스크 정보 불일치

이 경우 대상 디스크 식별 실패 상태를 표시하고 Windows 설치 작업을 중단하도록 변경했습니다. 따라서 잘못된 디스크에 Windows를 설치하는 상황을 사전에 방지할 수 있도록 구성했습니다.

 

6. RST 드라이버 문제 확인에도 활용

이번 디스크 식별 기능은 특히 PE 환경에서 Intel RST 등의 스토리지 드라이버가 정상적으로 로드되었는지 확인하는 과정과도 연결됩니다. PE에서 디스크가 정상적으로 인식되지 않으면 물리 디스크 검색 과정에서 대상 디스크를 찾을 수 없게 됩니다. 이 경우 Remote WinSetup PE에서는 설치를 강제로 진행하지 않고 디스크 식별 실패로 처리하여 스토리지 드라이버 또는 디스크 연결 상태를 확인하도록 합니다.

 

7. 기존 InstallConfig.ini와의 호환

디스크 식별 정보가 없는 기존 InstallConfig.ini에 대해서는 별도의 처리를 적용했습니다. DiskGuid, DiskSerial, DiskModel 등의 정보가 없는 경우에는 기존과 같이 DiskNumber를 기준으로 작업을 진행합니다. 따라서 기존 설정 파일을 사용하는 환경에서도 기본적인 설치 작업이 가능하도록 구성했습니다.

 

8. 설치 전 검증 단계 추가

Remote WinSetup PE v2.0의 전체 흐름은 기존 설치 과정에 디스크 식별 검증 단계가 추가된 형태입니다.

InstallConfig.ini 로드

↓

설치 경로 및 설정 정보 확인

↓

대상 디스크 GUID / 모델 / 시리얼 / 용량 확인

↓

PE에서 실제 물리 디스크 검색

↓

디스크 식별 정보 매칭

↓

필요한 경우 DiskNumber 재매핑

↓

대상 디스크 검증 완료

↓

파티션 확인 및 Windows 설치 진행

이렇게 설치를 시작하기 전에 실제 대상 디스크를 한 번 더 확인하도록 변경했습니다.

 

9. 로그 정보도 보강

v2.0에서는 디스크 검색 과정도 로그로 확인할 수 있도록 변경했습니다. PE에서 확인되는 각 디스크에 대해 다음과 같은 정보를 기록합니다. DISK # / GUID / Model / Serial / SizeGB 그리고 대상 디스크가 정상적으로 확인되면 검증 완료 및 DiskNumber 매핑 결과를 로그에 표시합니다. 반대로 대상 디스크를 찾지 못한 경우에는 디스크 식별 실패와 함께 인식된 물리 디스크가 없는 경우 스토리지 드라이버를 확인할 수 있도록 안내합니다.

 

 

Remote WinSetup PE v2.0

이번 v2.0 업데이트는 새로운 설치 기능을 추가하기보다는 원격 Windows 설치 과정에서 설치 대상 디스크를 보다 정확하게 식별하고 검증하는 부분을 강화한 업데이트입니다. 특히 PE 환경에서 디스크 번호가 변경되는 상황이나 RST와 같은 스토리지 드라이버 문제로 디스크 인식에 문제가 발생하는 상황을 고려하여, DiskNumber → Disk GUID → Model → Serial → Size 등의 정보를 이용해 실제 설치 대상 디스크를 확인하도록 보강했습니다.

 

이를 통해 Remote WinSetup PE에서 Windows 설치를 진행하기 전에 "현재 PE에서 인식된 디스크가 실제로 InstallConfig.ini에서 지정한 디스크가 맞는가?"를 먼저 확인할 수 있도록 구성했습니다. 앞으로도 Remote WinSetup은 원격 Windows 설치 과정에서 발생할 수 있는 디스크 인식 및 대상 지정 문제를 줄이고, PE 환경에서도 보다 안정적으로 자동 설치가 진행될 수 있도록 기능을 보강해 나갈 예정입니다.

 

Remote WinSetup PE v2.0 - 디스크 정보 매칭 보강 - 움짤(GIF)

 

■ 동영상 제목 클릭 후 전체화면(1080P)시청 가능합니다.

 

정보가 도움이 되었다면 아래 링크로 커피를 후원 해주세요. ^^

donaricano-btn

반응형

+ Recent posts