mirror of
https://github.com/rbalsleyMSFT/FFU.git
synced 2026-06-14 02:09:35 -06:00
128 lines
4.2 KiB
Markdown
128 lines
4.2 KiB
Markdown
```mermaid
|
|
graph TD
|
|
subgraph "Start & Initialization"
|
|
A[Start] --> B{Load ConfigFile?};
|
|
B --> C[Process Parameters];
|
|
C --> D{Validate Parameters};
|
|
D --> E{"dirty.txt exists?"};
|
|
E -- Yes --> F[Run Cleanup Routine];
|
|
F --> G["Create new dirty.txt"];
|
|
E -- No --> G;
|
|
end
|
|
|
|
G --> H{"-InstallDrivers or -CopyDrivers?"};
|
|
|
|
subgraph "Pre-Build Preparations"
|
|
H -- Yes --> I{Driver Source?};
|
|
I -- "-DriversJsonPath" --> J[Download Drivers via JSON in Parallel];
|
|
I -- "-Make and -Model" --> K[Download Drivers for specific Make/Model];
|
|
I -- "Local Folder" --> L[Use Existing Drivers in Drivers Folder];
|
|
|
|
subgraph "ADK & WinPE"
|
|
M[Check for ADK & WinPE Add-on];
|
|
M --> N{Latest Version Installed?};
|
|
N -- No --> O[Uninstall Old & Install Latest ADK/WinPE];
|
|
N -- Yes --> P[Get ADK Path];
|
|
O --> P;
|
|
end
|
|
|
|
Q{"-InstallApps?"};
|
|
subgraph "Application & In-VM Content Preparation"
|
|
direction LR
|
|
R[Check for existing downloaded apps];
|
|
R --> S{Download missing WinGet apps};
|
|
S --> T{"-InstallOffice?"};
|
|
T -- Yes --> U[Download ODT & Office content];
|
|
T -- No --> V[Continue];
|
|
U --> V;
|
|
V --> W["Download in-VM updates: Defender, MSRT, etc."];
|
|
W --> X["Create Apps.iso"];
|
|
end
|
|
end
|
|
|
|
J --> M;
|
|
K --> M;
|
|
L --> M;
|
|
H -- No --> M;
|
|
P --> Q;
|
|
Q -- Yes --> R;
|
|
X --> Y;
|
|
Q -- No --> Y{"-AllowVHDXCaching?"};
|
|
|
|
subgraph "VHDX Management"
|
|
Y -- Yes --> Z[Check for matching cached VHDX];
|
|
Z --> AA{Cache Hit?};
|
|
AA -- Yes --> AB[Use Cached VHDX];
|
|
AA -- No --> AC[Create New VHDX];
|
|
Y -- No --> AC;
|
|
|
|
subgraph "VHDX Creation Workflow"
|
|
AC --> AD{ISOPath provided?};
|
|
AD -- No --> AE[Download Windows ESD media];
|
|
AD -- Yes --> AF[Use provided ISO];
|
|
AE --> AG[Create & Partition VHDX];
|
|
AF --> AG;
|
|
AG --> AH[Apply Base Windows Image to VHDX];
|
|
AH --> AI{"Updates specified? (CU, dotNET, etc.)"};
|
|
AI -- Yes --> AJ[Apply Updates to Offline VHDX];
|
|
AJ --> AK[Run Component Cleanup];
|
|
AI -- No --> AK;
|
|
AK --> AL{"Optional Features specified?"};
|
|
AL -- Yes --> AM[Enable Optional Features];
|
|
AL -- No --> AN[Finalize VHDX Setup];
|
|
AM --> AN;
|
|
AN --> AO{"-AllowVHDXCaching?"};
|
|
AO -- Yes --> AP[Optimize and Copy VHDX to Cache];
|
|
AO -- No --> AQ[Continue];
|
|
AP --> AQ;
|
|
end
|
|
end
|
|
|
|
AB --> BA;
|
|
AQ --> BA{"-InstallApps?"};
|
|
|
|
subgraph "FFU Creation"
|
|
subgraph "VM-Based Capture (-InstallApps)"
|
|
direction LR
|
|
BB[Create Hyper-V VM from VHDX];
|
|
BB --> BC["Create WinPE Capture Media iso"];
|
|
BC --> BD[Configure network share for capture];
|
|
BD --> BE["Start VM: Boots to Audit Mode"];
|
|
BE --> BF[Orchestrator runs: Installs apps, syspreps, shuts down];
|
|
BF --> BG[VM reboots from Capture Media];
|
|
BG --> BH["CaptureFFU.ps1 runs, saves FFU to share, shuts down"];
|
|
end
|
|
|
|
subgraph "Direct VHDX Capture"
|
|
BI[Capture FFU directly from VHDX using DISM];
|
|
end
|
|
end
|
|
|
|
BA -- Yes --> BB;
|
|
BA -- No --> BI;
|
|
|
|
subgraph "Post-Processing & Media Creation"
|
|
BK{"-InstallDrivers?"};
|
|
BK -- Yes --> BL[Mount FFU & Inject Drivers];
|
|
BK -- No --> BM[Continue];
|
|
BL --> BM;
|
|
BM --> BN{"-Optimize?"};
|
|
BN -- Yes --> BO[Optimize FFU using DISM];
|
|
BN -- No --> BP[Continue];
|
|
BO --> BP;
|
|
BP --> BQ{"-BuildUSBDrive?"};
|
|
BQ -- Yes --> BR[Create WinPE Deployment Media];
|
|
BR --> BS["Partition USB Drive(s)"];
|
|
BS --> BT[Copy FFU, Deploy scripts & other assets to USB];
|
|
BQ -- No --> BU[Continue];
|
|
BT --> BU;
|
|
end
|
|
|
|
BH --> BK;
|
|
BI --> BK;
|
|
|
|
subgraph "Final Cleanup"
|
|
BU --> BV[Cleanup VM, VHDX, temp files];
|
|
BV --> BW["Remove dirty.txt"];
|
|
BW --> BX[End];
|
|
end |