Commit Graph

66 Commits

Author SHA1 Message Date
rbalsleyMSFT 7babad8262 Refactor driver management into dedicated modules
Relocates driver-specific download, parsing, and management logic from the main UI script and the FFUUI.Core module into new, dedicated modules for each manufacturer (Dell, HP, Lenovo, Microsoft). This improves modularity and code organization.

Additionally, centralizes common HTTP headers and user agent strings in the FFUUI.Core module, accessible via a new helper function.
2025-06-12 15:47:46 -07:00
rbalsleyMSFT 9282b4231e Add FFU.Common and FFUUI.Core module manifests and shared UI functions
- Created module manifest for FFU.Common with initial version 0.0.1.
- Created module manifest for FFUUI.Core with initial version 0.0.1.
- Implemented shared UI functions in FFUUI.Shared.psm1, including:
  - Update-ListViewItemStatus: Updates the status of items in a ListView.
  - Update-OverallProgress: Updates a progress bar and status label.
  - Invoke-ProgressUpdate: Enqueues progress updates to the UI thread.
  - Add-SortableColumn: Adds sortable columns to a ListView.
  - Add-SelectableGridViewColumn: Adds a selectable column with a "Select All" checkbox.
  - Update-SelectAllHeaderCheckBoxState: Updates the state of the header checkbox.
  - Invoke-ListViewSort: Sorts ListView items based on specified properties.
  - Show-ModernFolderPicker: Displays a modern folder picker dialog.
2025-06-11 20:50:51 -07:00
rbalsleyMSFT e4201aebff Refactor UI initialization to utilize centralized state object for control management
- Introduced the Initialize-UIControls function to streamline the assignment of UI control references to the centralized state object.
- Removed repetitive control assignments from the window loading event, enhancing maintainability and readability.
- Improved the overall structure of the UI initialization process for better consistency across the application.
2025-06-10 20:09:13 -07:00
rbalsleyMSFT c5730230f6 Refactor functions to utilize a centralized state object for improved consistency and maintainability
Refactor functions to use a centralized state object

Modifies various functions to accept and utilize a `$State` parameter, replacing direct access to `$script:uiState` and module-scoped variables.

This change centralizes state management, improving code consistency and maintainability by passing necessary UI elements, data, and default configurations explicitly.
2025-06-09 20:30:57 -07:00
rbalsleyMSFT 11084f6689 Added new $state object and refactored code to use the $state reference instead.
- Moved Get-UIConfig from BuildFFUVM_UI.ps1 to FFUUI.Core.psm1 to enhance separation of concerns.
- Updated Get-UIConfig to accept a central $State object, removing direct dependencies on global UI variables.
- Modified internal logic to access UI control values from the $State.Controls hashtable.
- Updated calls in BuildFFUVM_UI.ps1 to pass the $script:uiState object to the refactored function.
- Exported Get-UIConfig from FFUUI.Core.psm1 for accessibility in the main UI script.
2025-06-07 17:36:30 -07:00
rbalsleyMSFT 4ffdba8e41 Refactor Windows SKU handling to derive values internally and update mappings for LTSB/LTSC releases
- Updated Update-WindowsSkuCombo function to derive selected release value and display name from the ComboBox, removing the need for parameters.
- Enhanced logging to include display names for better traceability.
- Corrected SKU values for Windows 10 LTSB 2016 and LTSC 2019 in the release mappings.
- Adjusted Get-AvailableSkusForRelease function to handle specific cases for LTSB 2016 and LTSC 2019, ensuring accurate SKU retrieval.
2025-05-29 17:19:22 -07:00
rbalsleyMSFT 092ae26257 Add dynamic SKU handling for Windows releases and update UI integration
- Introduced a new function `Get-AvailableSkusForRelease` to retrieve available SKUs based on the selected Windows release value.
- Added a new function `Update-WindowsSkuCombo` to refresh the SKU ComboBox in the UI when the release changes.
- Updated the SKU lists for various Windows versions, including client and server SKUs, as well as LTSC editions.
- Modified the `RefreshWindowsSettingsCombos` function to call the new SKU update function.
- Ensured that the SKU ComboBox is populated dynamically based on the selected release, improving user experience and accuracy.
2025-05-29 16:59:45 -07:00
rbalsleyMSFT 11c3eeb9b8 Add Windows 10 LTSB 2016 and LTSC 2019 to release options and update version mapping 2025-05-29 16:22:17 -07:00
rbalsleyMSFT ae656932ba Refactor SKU list formatting for improved readability and maintainability 2025-05-29 15:45:49 -07:00
rbalsleyMSFT 7d4e8ba27c Add additional Windows SKU and release options to core logic
- Expanded the list of allowed SKUs to include 'Enterprise 2016 LTSB', 'Enterprise N 2016 LTSB', 'Enterprise LTSC', 'Enterprise N LTSC', 'IoT Enterprise LTSC', and 'IoT Enterprise N LTSC'.
- Updated the list of all Windows releases to include 'Windows 10 LTSC 2021' and 'Windows 10 LTSC 2024'.
- Modified the Windows version map to include version mappings for LTSC 2021 and LTSC 2024.
2025-05-29 15:38:27 -07:00
rbalsleyMSFT c8042c6a75 Add Drivers.json path configuration to UI and core logic
- Introduced a new TextBox and Button in the UI for specifying the Drivers.json file path.
- Updated the UI layout to accommodate the new Drivers.json path input.
- Enhanced the core logic to set a default path for Drivers.json based on the Drivers folder.
- Implemented functionality to browse and select the Drivers.json file, allowing users to create or select an existing file.
2025-05-29 13:26:03 -07:00
rbalsleyMSFT 421fb76320 Add 'Update Latest Microcode' checkbox to UI and update related logic for handling microcode updates 2025-05-29 12:54:15 -07:00
rbalsleyMSFT 6f336970db Add 'Update ADK' checkbox to UI and update related logic for handling ADK installation 2025-05-29 10:39:19 -07:00
rbalsleyMSFT 985285963c Add 'Remove Downloaded Update Files' checkbox to UI and update related logic for handling updates 2025-05-28 18:01:59 -07:00
rbalsleyMSFT 43223ad1cc Add 'Remove Apps Folder Content' checkbox to UI and update related logic
- Introduced a new checkbox in the UI for removing application content in the Apps folder after FFU capture.
- Updated the Get-UIConfig function to retrieve the state of the new checkbox.
- Added default value for the new 'RemoveApps' parameter in the general defaults.
2025-05-28 17:43:59 -07:00
rbalsleyMSFT f162de89be - Added Apps\Orchestration folder with new orchestration workflow to replace InstallAppsAndSysprep.cmd file.
- Updated BuildFFUUnattend files to point to the new Orchestrator.ps1 file.
- Added new common and FFUUI.Core directories that house common/shared files between the UI and PS1 script. This breaks up each of the PS1 scripts to keep things smaller and more organized. Still a lot of work to do here to pull some stuff out of the PS1 scripts.
- Modified the CaptureFFU.ps1 file to include more info during the capture process to help with troubleshooting
- Too many functional changes to list here.
2025-05-26 11:54:14 -07:00