Commit Graph

828 Commits

Author SHA1 Message Date
rbalsleyMSFT 08ababec62 Show FFU Builder banner before bootstrap output
Keep bootstrap diagnostics visible beneath a single banner during orchestration startup.
2026-08-19 11:44:44 -07:00
rbalsleyMSFT 56162a2994 Prevent Windows ISO drive-letter conflicts in VHDX builds
Remap conflicting source ISOs to an unused, unreserved letter. Verify the new mount, preserve pre-mounted media, and document the behavior.
2026-08-18 19:12:55 -07:00
rbalsleyMSFT 0454311d20 Hide data partition PowerShell window during specialize
Run FFUDL enforcement hidden in both unattend paths, validate the launch setting, and document the diagnostic log.
2026-08-18 17:29:07 -07:00
rbalsleyMSFT ed499a96b9 Remove FFU orchestration bootstrap before Sysprep
Delete the staged build-only script before final Sysprep. Warn and continue if removal fails.
2026-08-18 16:24:52 -07:00
rbalsleyMSFT e8795ce3f3 Avoid redundant VHDX drive letter reassignment
Skip unchanged assignments while preserving swap-safe ordering and final layout verification.
2026-08-17 18:53:28 -07:00
rbalsleyMSFT 563a16b285 Add partition layout Reset to Default action
Restore default partition letters and sizing, re-enable Recovery, and clear additional data partitions. Reuse the reset during main Restore Defaults while preserving disk and sector sizes for the focused action.
2026-08-17 17:49:55 -07:00
rbalsleyMSFT fc2f674ea1 Enforce deterministic data partition drive letters
Always use configured letters in build VMs. On deployed devices, preserve opted-in letters and assign unchecked partitions from D: upward, relocating recognized FFU USB volumes while protecting unrelated volumes.

Update UI guidance, logs, and documentation.
2026-08-17 17:29:33 -07:00
rbalsleyMSFT 8302b38134 Treat normalized data partitions as an array 2026-08-07 16:35:43 -07:00
rbalsleyMSFT 406353eec5 Add VHDX partition layout label to UI 2026-07-16 16:23:13 -07:00
rbalsleyMSFT 12a48ff31f Add Add Partition heading to Disk Layout UI 2026-07-16 14:58:03 -07:00
rbalsleyMSFT aa3ac72bef Allow Windows to fill remaining space with data partitions
Keep the Windows Fill Remaining option available when fixed-size data
partitions are configured, and enforce a single fill-remaining partition
across UI and CLI validation.

Reserve fixed data partition capacity by safely shrinking the maximum-size
Windows partition before creating Recovery and data partitions. Update the
Hyper-V settings and parameter documentation for the supported layouts.
2026-07-16 14:44:36 -07:00
rbalsleyMSFT 65eb8eb6a3 Enforce persistent FFU data-partition drive letters
Add partition-layout versioning, drive-letter configuration, deployment handling, and documentation for recovery and additional data partitions.
2026-07-16 14:19:01 -07:00
rbalsleyMSFT 6809bb2edf Handle pending reboots before FFU sysprep
Detect pending reboot markers before invoking Sysprep and log the exact
reason, including CBS, Windows Update, WinSxS pending.xml, and every
PendingFileRenameOperations entry.

When a reboot is required, register a one-time Audit mode RunOnce retry
that reloads the Apps media, waits for Explorer, closes Audit-mode
Sysprep UI races, and relaunches Run-Sysprep.ps1.
2026-06-26 23:34:59 -07:00
rbalsleyMSFT c5f734a0c5 et DISM choose the Windows partition for FFU optimization
When no explicit OptimizeFFUPartitionNumber or FillRemaining data
partition is configured, avoid passing /PartitionNumber for the resolved
Windows partition. This keeps DISM on its default OS partition path and
avoids FFU provider failures after resizing partition 3 in layouts with
Recovery after Windows.
2026-06-25 22:43:18 -07:00
rbalsleyMSFT 3f4741e666 Harden Recovery partition creation
Update BuildFFUVM.ps1 so Recovery partition creation fails clearly when
the disk cannot provide enough usable free extent. Align the calculated
Recovery size, reserve extra shrink slack for partition metadata, verify
supported shrink sizes, and require Storage cmdlets to throw terminating
errors so failures are logged instead of continuing with a blank drive
letter.
2026-06-25 21:46:59 -07:00
rbalsleyMSFT 940c0c9565 Capture parallel processing output in app flows
Assign Invoke-ParallelProcessing results in the Winget and UI app paths so raw result hashtables are not emitted to the console during app download or copy operations.
2026-06-25 19:40:36 -07:00
rbalsleyMSFT e1d8320c44 Fix single FFU USB copy logging
Use the selected FFU count in New-DeploymentUSB so one-item arrays log as single-file copies while multi-FFU copies keep the existing multiple-file message.
2026-06-25 19:39:56 -07:00
rbalsleyMSFT 5d65cd5225 Resolve FFU optimize target by mounted disk order
For FillRemaining data partitions, select the target from the mounted VHDX data-partition order and reassign the configured drive letter when it is free.

Throw when the configured drive letter is already occupied instead of falling back to data volume label/name matching.
2026-06-23 22:39:50 -07:00
rbalsleyMSFT 51b490bca3 Resolve remapped Fill Remaining FFU optimize targets
Fall back to the Fill Remaining data partition's volume label or name when the mounted VHDX no longer uses the configured build-time drive letter. Log the resolved drive letter and preserve manual OptimizeFFUPartitionNumber overrides.
2026-06-23 21:31:40 -07:00
rbalsleyMSFT db952355f3 Add unified FFU disk layout controls
Consolidate disk size, required partition drive letters, Recovery, and data partition settings into the Hyper-V Disk Layout UI. Add capacity validation, Fill Remaining handling, Recovery remove/restore, data partition reorder/remove controls, and persist CreateRecoveryPartition through config and VHDX cache checks.

Update FFU optimization so automatic partition selection targets the Fill Remaining partition, falling back to Windows when none is selected. Refresh sample config and docs for the new Disk Layout parameters.
2026-06-23 17:06:24 -07:00
rbalsleyMSFT 2cb987aa4b Prevent cleanmgr hangs in disk cleanup orchestration
Run cleanmgr.exe without blocking on Start-Process -Wait, pump WM_NULL to its threads while enforcing a timeout, and always remove StateFlags0000 registry values in a finally block.
2026-06-22 19:01:19 -07:00
rbalsleyMSFT a025812404 Add optional data partitions and Apps ISO discovery
Support configurable data partitions after Recovery, including UI/config persistence, VHDX cache layout signatures, fixed-size-before-fill-remaining creation, and safer Windows/Recovery partition detection during capture and apply.

Replace hard-coded D:\ Apps ISO assumptions with FFUAppsRoot discovery, token expansion, legacy D:\ BYO app path remapping, and a logged audit-mode orchestration bootstrap.

Update BYO apps, Hyper-V settings, and parameter documentation.
2026-06-22 18:44:20 -07:00
rbalsleyMSFT 56a2597818 Consolidate WinGet version detection
Add a shared WinGet component status helper that uses Get-WinGetVersion
through Microsoft.WinGet.Client, and route both the CLI and UI status checks
through it. This removes the UI-only winget.exe --version parsing path and
adds clearer logging for missing modules, missing cmdlets, parse failures,
and caught WinGet version errors.
2026-06-05 13:35:07 -07:00
rbalsleyMSFT 895728ebe8 Prefer DeviceGroup arch for Dell client drivers
Use DeviceGroup OperatingSystem osArch when selecting Dell client driver packages, falling back to SupportedOperatingSystems when DeviceGroup metadata is absent. This keeps existing server catalog behavior unchanged.
2026-06-05 10:41:00 -07:00
rbalsleyMSFT 9fb9e81701 Add configurable FFU build partition drive letters
Add System, Windows, and Recovery partition drive-letter settings to the Hyper-V Settings UI, config save/load, BuildFFUVM parameters, and sample/docs. Defaults remain S, W, and R.

Validate selected letters early, log validation failures for the UI, include drive-letter metadata in VHDX cache matching, and normalize legacy malformed cache values. This only affects FFU build-time partitioning; ApplyFFU deployment letters remain unchanged.
2026-06-05 09:46:00 -07:00
rbalsleyMSFT c32cb93434 Fix stale WinGetWin32Apps.json handling
Treat WinGetWin32Apps.json as generated app orchestration output so failed or cancelled builds do not restore stale install metadata. Reuse Apps.iso when app inputs have not changed, and refresh it only when current app content or orchestration inputs are newer.
2026-06-04 16:54:16 -07:00
rbalsleyMSFT 7decd8f1ba Merge pull request #495 from ConfigMatt/HyperV-Deployment-Instructions
Added HyperV Deployment instructions to quickstart documentation
2026-05-29 15:43:28 -07:00
rbalsleyMSFT 75f4025cf1 Merge pull request #378 from iambdud/add-try-catch-for-creating-vm
adding a simple try/catch for cases where the VM fails to start
2026-05-29 15:39:06 -07:00
rbalsleyMSFT f750cd872a Merge pull request #380 from dodexahedron/fix-winget-check-fail-if-multiple-versions-present
Fix failure on winget check if multiple versions exist
2026-05-29 14:55:18 -07:00
Matt Atkinson 9de2b30c93 Added HyperV Deployment instructions to quickstart documentation 2026-05-22 22:33:55 -07:00
rbalsleyMSFT 0153176278 Update winget installation command for PowerShell
Clarify installer type for PowerShell installation using winget.
2026-05-04 15:24:48 -07:00
rbalsleyMSFT e1c6259021 Processes unattend from a temp copy
Copies the source answer file to local temp storage before use, preserving the original media file and failing fast if the working copy cannot be prepared.
2026-04-28 13:10:48 -07:00
rbalsleyMSFT 8774fb4ef0 Updates quickstart video to 2604.1 release
Replaces the previous preview video link with the newly updated tutorial for the 2604.1 release. Relocates the older video into the archived section.
2026-04-24 11:29:07 -07:00
rbalsleyMSFT 10a8887281 Merge pull request #473 from rbalsleyMSFT/UI
Removes previous release notes from documentation
2026-04-17 12:06:00 -07:00
rbalsleyMSFT f29319efc4 Removes previous release notes from documentation
Cleans up the introductory section by removing specific patch notes and release announcements. This streamlines the content to maintain focus on general usage and instructions rather than transient update news.
2026-04-17 12:04:41 -07:00
rbalsleyMSFT 37a9572c97 Merge pull request #472 from rbalsleyMSFT/UI
2604.1
2604.1
2026-04-16 17:04:19 -07:00
rbalsleyMSFT b21d20d414 Updates changelog for version 2604.1 release
Documents the new features, improvements, and fixes included in the 2604.1 release. Highlights include the transition to Fluent UI styling alongside PowerShell 7.6, direct VHDX capturing for improved build times, and new UI controls for device naming and unattend file paths. Also notes critical fixes for Surface and Lenovo driver downloads, as well as image servicing reliability following recent Windows updates.
2026-04-16 16:55:04 -07:00
rbalsleyMSFT fedb45a419 Merge pull request #470 from rbalsleyMSFT/Fluent
Fluent
2026-04-16 16:37:08 -07:00
rbalsleyMSFT 15ca246abd Updates documentation screenshots and UI descriptions
Refreshes numerous screenshot image references across the documentation to reflect the latest UI changes. Updates text descriptions in several documents (Build, Prerequisites, Quickstart, Windows Settings) to align with recent features, such as the new Windows Media Source options, explicitly mentioning PowerShell 7.6+ requirements, and clarifying the Device Naming and Copy Unattend.xml behavior.

Co-authored-by: Copilot <copilot@github.com>
2026-04-16 15:46:02 -07:00
rbalsleyMSFT 6b76f6b9a2 Renames serial mapping file path UI labels
Updates UI labels, tooltips, message boxes, dialog titles, and corresponding documentation to use "Serial Computer Names CSV Mapping File Path" instead of "SerialComputerNames.csv File Path" to improve clarity and presentation.

Co-authored-by: Copilot <copilot@github.com>
2026-04-16 14:25:47 -07:00
rbalsleyMSFT 944ec1e856 Merge branch 'Naming' into Fluent 2026-04-15 14:52:27 -07:00
rbalsleyMSFT 14811e3f9c Updates version to 2604.1
Increments the script version identifiers to reflect the new release cycle.
2026-04-15 14:42:23 -07:00
rbalsleyMSFT 38323e6be1 Add support for SerialComputerNames CSV mapping
Introduces a new `SerialComputerNames` device naming mode that allows automated device naming during deployment based on the BIOS serial number. The mapping is provided via a CSV file with `SerialNumber` and `ComputerName` columns.

This feature requires `CopyUnattend` and writes a `SerialComputerNames.csv` file to the USB deployment media, replacing the need for manual prompts or prefix selection when device serial numbers are known in advance. The UI has been updated to support creating, loading, and saving the CSV mapping content.
2026-04-15 14:39:14 -07:00
rbalsleyMSFT 24f10b89b0 Fixes DeviceNamingMode UI state tracking and defaults
Updates the FFU UI core to better track the loaded `DeviceNamingMode` configuration.
Introduces flags to detect explicit user changes versus default states.
Ensures that if the user does not explicitly set the device naming mode, it defaults gracefully and preserves legacy script behaviors.
Updates documentation to reflect the actual behavior of not writing the `DeviceNamingMode` key unless modified.
2026-04-15 13:04:12 -07:00
rbalsleyMSFT 0607cf5386 Updates package addition to use native cmdlet
Replaces the direct invocation of DISM via cmd with the native Windows PowerShell cmdlet to streamline and simplify the package installation process during WinPE media creation.
2026-04-14 18:18:53 -07:00
rbalsleyMSFT 28297f3a0e Switches to Windows ADK DISM CLI for adding Windows packages
Replaces the native PowerShell command for adding Windows packages with direct command-line invocations of the Deployment Image Servicing and Management (DISM) tool. This fixes an issue introduced by the March 31, 2026 OOB update that persists in the April 2026 2B update where Add-WindowsPackage fails due to issues with CBS. Using native dism fixes the issue.
2026-04-14 14:56:02 -07:00
rbalsleyMSFT 7bd5decc62 Adds custom unattend XML file selection paths
Adds parameters for x64 and arm64 unattend XML file paths.
Updates the BuildFFUVM_UI to let the user pick specific XML files to copy or inject instead of requiring them to exist in the `unattend` folder.
Adds validation to ensure the selected unattend XML files are not empty.
Updates documentation to reflect the new functionality.
2026-04-09 16:44:39 -07:00
rbalsleyMSFT f1f1957c43 Auto-generate ComputerName in Unattend XML
Replaces the strict validation for an existing ComputerName element with dynamic XML initialization. Automatically creates the specialize settings block, the Microsoft-Windows-Shell-Setup component, and the ComputerName element if they are missing from the provided Unattend XML file. This improves script robustness and simplifies the requirements for custom unattended setup templates by patching in the necessary device naming structure on the fly.
2026-04-09 15:14:00 -07:00
rbalsleyMSFT 82bac17b38 Adds Prompt option to device naming mode
Introduces an explicit "Prompt" option for device naming to allow technicians to enter the device name during deployment. This replaces the implicit legacy behavior, providing clear UI controls and validation to ensure that Unattend.xml is copied, which is required for prompt-based naming. Relevant documentation is updated to reflect this new workflow capability.
2026-04-09 13:33:37 -07:00
rbalsleyMSFT 1ea1ef6fd0 Improves FFU deployment menu selections and device naming
Refactors the `ApplyFFU.ps1` script to use a new `Read-MenuSelection` function for standardized user prompts, improving input validation and allowing users to skip optional prompts (like prefix selection, AP JSON, and PPKG files). Updates sample unattend XML files to use `*` for the computer name, falling back to default Windows naming if not specified. Updates the documentation to reflect the new UI and script behaviors.
2026-04-08 17:58:25 -07:00