diff --git a/FFUDevelopment/BuildFFUVM_UI.ps1 b/FFUDevelopment/BuildFFUVM_UI.ps1
index 718fb70..40f6abe 100644
--- a/FFUDevelopment/BuildFFUVM_UI.ps1
+++ b/FFUDevelopment/BuildFFUVM_UI.ps1
@@ -18,6 +18,7 @@ $defaultWindowsSKU = "Pro"
$defaultMediaType = "Consumer" # updated value
$defaultOptionalFeatures = ""
$defaultProductKey = ""
+$defaultFFUPrefix = "_FFU" # <-- new default for VM Name Prefix
# Large list from the ValidateSet in BuildFFUVM.ps1 ($OptionalFeatures parameter)
$allowedFeatures = @(
@@ -138,6 +139,9 @@ function Get-UIConfig {
$logicalSectorObj = $window.FindName('cmbLogicalSectorSize').SelectedItem
$logicalSectorSize = [int]$logicalSectorObj.Content
+ # <-- NEW: retrieve FFUPrefix from the new textbox (VM Name Prefix)
+ $ffuPrefix = $window.FindName('txtVMNamePrefix').Text
+
# --- Windows Settings tab ---
$wrItem = $window.FindName('cmbWindowsRelease').SelectedItem
$windowsRelease = if ($wrItem -and $wrItem.Value) { [int]$wrItem.Value } else { 10 }
@@ -198,6 +202,7 @@ function Get-UIConfig {
EnablePromptExternalHardDiskMedia = $promptExt
FFUCaptureLocation = $ffuCaptureLocation
FFUDevelopmentPath = $ffuDevPath
+ ISOPath = $isoPath # <-- NEW: Add Windows ISO Path to config
MediaType = $mediaType
Make = $make
Model = $model
@@ -225,6 +230,7 @@ function Get-UIConfig {
WindowsRelease = $windowsRelease
WindowsSKU = $windowsSKU
WindowsVersion = $windowsVersion
+ FFUPrefix = $ffuPrefix # <-- new option for VM Name Prefix
}
# Sort the configuration hashtable alphabetically by key
@@ -412,6 +418,8 @@ $window.Add_Loaded({
$window.FindName('txtUsername').Text = "ffu_user"
# Set VM Location default to $FFUDevelopmentPath\VM
$window.FindName('txtVMLocation').Text = (Join-Path $FFUDevelopmentPath "VM")
+ # <-- NEW: Set the default for the new VM Name Prefix textbox on the Hyper-V Settings tab
+ $window.FindName('txtVMNamePrefix').Text = $defaultFFUPrefix
# Hyper-V Settings: Populate defaults (Share Name and Username now on Build, so only populate remaining fields)
$script:vmSwitchMap = @{}
$script:allSwitches = Get-VMSwitch -ErrorAction SilentlyContinue
@@ -688,6 +696,8 @@ $btnLoadConfig.Add_Click({
$window.FindName('txtMemory').Text = $configContent.Memory / 1GB
$window.FindName('txtProcessors').Text = $configContent.Processors
$window.FindName('txtVMLocation').Text = $configContent.VMLocation
+ # <-- NEW: Update the VM Name Prefix textbox value during config load
+ $window.FindName('txtVMNamePrefix').Text = $configContent.FFUPrefix
$window.FindName('cmbLogicalSectorSize').SelectedItem = $configContent.LogicalSectorSizeBytes
# Windows Settings
$window.FindName('txtISOPath').Text = $configContent.ISOPath
diff --git a/FFUDevelopment/BuildFFUVM_UI.xaml b/FFUDevelopment/BuildFFUVM_UI.xaml
index cad41bd..90408b3 100644
--- a/FFUDevelopment/BuildFFUVM_UI.xaml
+++ b/FFUDevelopment/BuildFFUVM_UI.xaml
@@ -146,8 +146,8 @@
-
-
+
+
@@ -156,8 +156,8 @@
-
-
+
+
@@ -166,8 +166,8 @@
-
-
+
+
@@ -176,8 +176,8 @@
-
-
+
+
@@ -185,17 +185,17 @@
-
-
+
+
-
-
-
-
+
+
+
+
@@ -208,16 +208,16 @@
-
-
-
+
+
+
-
-
-
+
+
+
@@ -236,6 +236,7 @@
+
@@ -243,13 +244,14 @@
-
+
+ HorizontalAlignment="Stretch"
+ ToolTip="Name of the Hyper-V virtual switch. If $InstallApps is set to $true, this must be set. This is required to capture the FFU from the VM. The default is '*external*', but you will likely need to change this."/>
+ ToolTip="Enter your custom VM Switch Name if 'Other' is selected."/>
-
+
-
+
+ Text="30"
+ ToolTip="Size of the virtual hard disk for the virtual machine. Default is a 30GB dynamic disk."/>
-
+
+ Text="4"
+ ToolTip="Amount of memory to allocate for the virtual machine. Recommended to use 8GB if possible, especially for Windows 11. Default is 4GB."/>
-
+
+ Text="4"
+ ToolTip="Number of virtual processors for the virtual machine. Recommended to use at least 4."/>
-
+
-
+ Text="{x:Static sys:Environment.CurrentDirectory}"
+ ToolTip="Default is $FFUDevelopmentPath\VM. This is the location of the VHDX that gets created where Windows will be installed to."/>
+
-
+
+
+
+
+
+
+ HorizontalAlignment="Left"
+ ToolTip="Unit32 value of 512 or 4096. Useful for 4Kn drives or devices shipping with UFS drives. Default is 512.">
@@ -342,7 +359,7 @@
-
+
@@ -362,16 +379,17 @@
-
+
+ HorizontalAlignment="Stretch"
+ ToolTip="Integer value of 10 or 11. This is used to identify which release of Windows to download. Default is 11."/>
-
+
+ IsEnabled="False"
+ ToolTip="String value of the Windows version to download. This is used to identify which version of Windows to download. Default is '24h2'."/>
-
+
+ HorizontalAlignment="Left"
+ ToolTip="String value of 'x86' or 'x64'. This is used to identify which architecture of Windows to download. Default is 'x64'."/>
-
+
+ HorizontalAlignment="Left"
+ ToolTip="String value in language-region format (e.g., 'en-us'). This is used to identify which language of media to download. Default is 'en-us'."/>
-
+
+ HorizontalAlignment="Stretch"
+ ToolTip="Edition of Windows 10/11 to be installed. Accepted values are: 'Home', 'Home N', 'Home Single Language', 'Education', 'Education N', 'Pro', 'Pro N', 'Pro Education', 'Pro Education N', 'Pro for Workstations', 'Pro N for Workstations', 'Enterprise', 'Enterprise N'."/>
-
+
+ HorizontalAlignment="Left"
+ ToolTip="String value of either 'business' or 'consumer'. This is used to identify which media type to download. Default is 'consumer'."/>
-
+
+ ToolTip="Provide a semicolon-separated list of Windows optional features you want to include in the FFU (e.g., netfx3;TFTP)."/>
@@ -458,13 +481,13 @@
-
-
-
-
-
-
-
+
+
+
+
+
+
+
@@ -479,7 +502,7 @@
-
+
@@ -498,17 +521,17 @@
-
+
-
+
-
+
@@ -522,7 +545,7 @@
-
+
@@ -545,13 +568,13 @@
-
+
-
+
-
+
@@ -564,38 +587,38 @@
-
+
-
+
-
+
-
+
-
+
-
+
-
+