792 Commits

Author SHA1 Message Date
rbalsleyMSFT 08b1df79f2 Refactor Apps Script Variables UI for improved layout and usability
- Simplified the input layout for defining Apps Script Variables by removing the grid structure.
- Added clear labels for "Key" and "Value" inputs to enhance user understanding.
- Adjusted the "Add Variable" button for better alignment and padding, improving the overall user experience.
2025-05-27 19:30:34 -07:00
rbalsleyMSFT 3ec53548a9 Add AppsScriptVariables functionality to UI for defining key-value pairs
- Introduced a new checkbox to enable defining Apps Script Variables.
- Added a panel for inputting key-value pairs with validation for duplicates.
- Implemented event handlers for adding, removing, and clearing Apps Script Variables.
- Updated LoadConfig logic to handle loading of Apps Script Variables from configuration.
2025-05-27 19:12:48 -07:00
rbalsleyMSFT 93108817de Remove InstallAppsandSysprep.cmd script to streamline application installation process and eliminate deprecated logic. 2025-05-27 18:38:04 -07:00
rbalsleyMSFT 4b19b7199b Update example usage in Invoke-AppsScript.ps1 and modify Orchestrator.ps1 to include AppsScript execution logic
- Changed example variable checks in Invoke-AppsScript.ps1 to reflect accurate usage of the AppsScriptVariables hashtable.
- Removed Invoke-AppsScript.ps1 from the script list in Orchestrator.ps1 and added logic to invoke it conditionally based on the presence of AppsScriptVariables.json.
- Enhanced output messages for clarity during script execution.
- Updated AppsScriptVariables parameter description in BuildFFUVM.ps1 to clarify its purpose and usage.
2025-05-27 18:30:14 -07:00
rbalsleyMSFT e8d1be6aa6 Rename "Build Config File" button to "Save Config File" for improved clarity in the UI, reflecting its functionality more accurately. 2025-05-27 10:00:33 -07:00
rbalsleyMSFT bde3cdd09f Update LoadConfig logic to manage Optional Features checkboxes based on loaded configuration. Added functionality to check/uncheck feature checkboxes according to the loaded features string, enhancing user interface responsiveness and clarity. 2025-05-26 18:12:32 -07:00
rbalsleyMSFT d05f9aa267 Enhance USB drive selection logic in LoadConfig process
- Added functionality to automatically check "Select Specific USB Drives" if USBDriveList is present and not empty in the configuration.
- Implemented checks for both PSCustomObject and hashtable types for backward compatibility.
- Included logging for the auto-check condition to improve traceability during configuration loading.
2025-05-26 17:59:28 -07:00
rbalsleyMSFT d253a88daa Add Set-UIValue function for improved UI property handling and configuration loading
- Introduced a new helper function `Set-UIValue` to streamline the process of setting UI properties from configuration objects, enhancing error handling and logging.
- Updated the `Get-UIConfig` function to utilize `Set-UIValue` for loading various UI elements from the configuration file, improving code readability and maintainability.
- Enhanced logic for handling driver model selection based on user input and added robust checks for configuration keys.
- Improved logging for configuration loading process, including error handling for missing keys and exceptions.
2025-05-26 17:08:08 -07:00
rbalsleyMSFT 6db5a93598 Refactor Get-UIConfig function to enhance parameter handling and improve clarity. Added new parameters from Sample_default.json, renamed existing parameters for consistency, and removed unnecessary comments. Updated logic to derive paths for UserAppList.json and Orchestration based on user input. 2025-05-26 15:35:32 -07:00
rbalsleyMSFT d4a4c6878d Added BuildFFUVM.ps1 parameters to Sample_default.json 2025-05-26 14:52:44 -07:00
rbalsleyMSFT 550e45a5c0 Updated UI Config parameters 2025-05-26 13:04:49 -07:00
rbalsleyMSFT 266fcbf58b Fix version numbering 2025-05-26 12:23:16 -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
rbalsleyMSFT 2efb9fb2a1 Added common winget functions 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 1156373f0c Add Save, Load, and Clear functionality for BYO applications with JSON support 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 5f9bf37617 Add functionality to manage applications - implement Add and Remove buttons with priority handling in the UI 2025-05-26 11:40:06 -07:00
rbalsleyMSFT c0fdd102e3 Add application information section for 'Bring Your Own Applications' feature - added code for modern folder browser and added the code behind for the browse folder buttons 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 9f3ee8d963 Add 'Bring Your Own Applications' checkbox and update visibility logic based on installation options 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 802865c1a6 Add Clear List button to Save/Import functionality and fixed sorting issues with winget app list. 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 02835579c1 Add Winget search panel with results list and save/import functionality 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 81b3be894e Refactor margins for application installation options and Winget status panel in UI 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 3875181d89 Enhance UI for application installation options and add Winget status panel 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 0669c64da1 Refactor USB drive configuration options and improve UI handling for related checkboxes 2025-05-26 11:40:06 -07:00
rbalsleyMSFT 931e9d13f7 Fixed USBDriveList json formatting 2025-05-26 11:40:06 -07:00
rbalsleyMSFT cd0598c5d1 Fixed a bug displaying USB drives in the listview 2025-05-26 11:40:06 -07:00
rbalsleyMSFT bc4980c6b8 Add USB drive detection and selection functionality 2025-05-26 11:40:06 -07:00
rbalsleyMSFT f20945be9f Commit
- Added new parameter `$USBDriveList` - A hashtable containing USB drives from win32_diskdrive where:
- Key: USB drive model name (partial match supported)
- Value: USB drive serial number (trailing partial match supported due to some serial numbers ending with blank spaces)

Example: @{ "SanDisk Ultra" = "1234567890"; "Kingston DataTraveler" = "0987654321" }

This is primarily designed for the UI so when a user selects a specific drive, we can make sure we're targeting the correct drive. We don't rely on the physical disk number since a user can save the USB drive information to a config file and re-use that at a later date and the physical disk number could be different, or used on another machine.

- Added support for the $USBDriveList parameter to handle copying to specified USB drives. There is no change to the prior USB drive copy process.
2025-05-26 11:40:06 -07:00
rbalsleyMSFT 099bbb1607 Update log message for .ffu file location and clean up unused image source function 2025-05-26 11:37:43 -07:00
rbalsleyMSFT ebcfa4f9dc Tooltips 2025-05-26 11:37:43 -07:00
rbalsleyMSFT f121505c50 Remove unused image path and image names from BuildFFUVM_UI.ps1, fixed some tooltip issues 2025-05-26 11:37:43 -07:00
rbalsleyMSFT 793830ab21 Fixed some checkbox interplay issues 2025-05-26 11:37:43 -07:00
rbalsleyMSFT 735c1ce688 Lots of changes :) 2025-05-26 11:37:43 -07:00
rbalsleyMSFT 837d4ef7ee - Finished optional features 2025-05-26 11:37:43 -07:00
rbalsleyMSFT adfa88aef8 Minor Optional Features adjustment 2025-05-26 11:37:43 -07:00
rbalsleyMSFT fbd0101b45 More windows settings work 2025-05-26 11:37:43 -07:00
rbalsleyMSFT f1cfeb0acc Added Windows settings 2025-05-26 11:37:43 -07:00
rbalsleyMSFT 45b8563db1 Refactored code and commented to make it more readable 2025-05-26 11:37:43 -07:00
rbalsleyMSFT ec3c89ac1b Added Windows settings tab 2025-05-26 11:32:35 -07:00
rbalsleyMSFT b422a565d5 Added M365 Apps/Office tab 2025-05-26 11:32:35 -07:00
rbalsleyMSFT eb3212ee2d Updates to the UI 2025-05-26 11:32:35 -07:00
rbalsleyMSFT e209251d0b More driver work 2025-05-26 11:32:35 -07:00
rbalsleyMSFT e73fa2d7f9 More driver work 2025-05-26 11:32:35 -07:00
rbalsleyMSFT 8c0ed525b3 Modified the drivers tab 2025-05-26 11:32:35 -07:00
rbalsleyMSFT 31e66c7213 Updated UI 2025-05-26 11:32:34 -07:00
rbalsleyMSFT b3e76f5580 Broke out the xaml to a separate file. Added drivers tab 2025-05-26 11:30:11 -07:00
rbalsleyMSFT f217a819fe First iteration of UI 2025-05-26 11:30:11 -07:00
rbalsleyMSFT 6a784a14fa Merge pull request #167 from rbalsleyMSFT/main
Merge back in changelog.md to be consistent with main
2025-05-21 17:39:09 -07:00
rbalsleyMSFT d809fc021f Updated changelog.md v2505.1 2025-05-21 17:29:12 -07:00
rbalsleyMSFT 582df6e3a8 Merge pull request #165 from rbalsleyMSFT/dev
2505.1
2025-05-21 17:26:25 -07:00
rbalsleyMSFT d5a4f96482 Enhance FFU Development Scripts and Configuration
BuildFFUVM.ps1
- Added parameter definitions that were missing:
  - AppListPath - Path to a JSON file containing a list of applications to install using WinGet. Default is $FFUDevelopmentPath\Apps\AppList.json.
  - PEDriversFolder - Path to the folder containing drivers to be injected into the WinPE deployment media. Default is $FFUDevelopmentPath\PEDrivers.
- Added two new parameters:
  - UpdateLatestMicrocode - This is used for Windows 10/Server. When set to $true, will download and install the latest microcode updates for applicable Windows releases (e.g., Windows Server 2016/2019, Windows 10 LTSC 2016/2019) into the FFU. Default is $false.
  - UpdateADK - Added for airgapped scenarios where you've manually updated the ADK and don't need it to continually check. When set to $true, the script will check for and install the latest Windows ADK and WinPE add-on if they are not already installed or up-to-date. Default is $true.
- Reorganized the WindowsSKU validateset to make it easier to read and added in 2016 LTSB releases
- Changed version to 2505.1
- Reorganized the releasetoMapping SKUs to make it easier to read
- Omitted Defender/Edge from reporting KB ID since neither includes it
- Updated Save-KB with some enhancements from the UI branch which will handle KBs that don't have an architecture defined in their file name that will leverage a new function Get-PEArchitecture that can interrogate the file name and determine the correct architecture
- Updated Get-ShortenedWindowsSKU with LTSB/LTSC SKUs
- Updated New-FFUFileName to use $winverinfo.Name for $WindowsRelease for client OSes to which will set $WindowsRelease to using Win10 or Win11. This fixes a bug where you might see 10 or 11 instead of Win10 or Win11 for FFU builds that use only the VHDX (e.g. `-InstallApps $false`. This keeps the naming consistent with FFUs built via VM.
- Updated Get-WindowsVersionInfo to fix an issue with naming LTSC 2019
- Added Get-PEArchitecture function
- Commented out the Windows Security Platform Update code since the URL is dead for the content. This is fixed in the UI branch and will be reintroduced in Dev and Main at a later date when the UI work is complete.
- Created a new variable `$isLTSC`
- Modified and reorganized the search strings for the various .net framework components. LTSC introduced some complexity with handling the various .net releases.
- VHDXCaching will now recurse the KBPath folder when finding downloaded KBs to include in its config file

Sample_default.json
- Added new/missing parameters
  - ApplistPath
  - UpdateADK
  - UpdateLatestMicrocode

CaptureFFU.ps1
- `$WindowsVersion` 2016 and 2019 for LTSC releases
- Changed some SKU spacing to make things more consistent and included Enterprise N LTSC

ApplyFFU.ps1
- Updated version to 2505.1
2025-05-21 16:44:21 -07:00