mirror of
https://github.com/ChrisTitusTech/winutil
synced 2026-04-06 06:38:31 +00:00
fix full button width
This commit is contained in:
@@ -17,7 +17,7 @@ function Invoke-WinUtilISORefreshUSBDrives {
|
|||||||
|
|
||||||
foreach ($disk in $removable) {
|
foreach ($disk in $removable) {
|
||||||
$sizeGB = [math]::Round($disk.Size / 1GB, 1)
|
$sizeGB = [math]::Round($disk.Size / 1GB, 1)
|
||||||
$label = "Disk $($disk.Number): $($disk.FriendlyName) [$sizeGB GB] — $($disk.PartitionStyle)"
|
$label = "Disk $($disk.Number): $($disk.FriendlyName) [$sizeGB GB] - $($disk.PartitionStyle)"
|
||||||
$combo.Items.Add($label)
|
$combo.Items.Add($label)
|
||||||
}
|
}
|
||||||
$combo.SelectedIndex = 0
|
$combo.SelectedIndex = 0
|
||||||
@@ -38,7 +38,7 @@ function Invoke-WinUtilISOWriteUSB {
|
|||||||
|
|
||||||
if (-not $contentsDir -or -not (Test-Path $contentsDir)) {
|
if (-not $contentsDir -or -not (Test-Path $contentsDir)) {
|
||||||
[System.Windows.MessageBox]::Show(
|
[System.Windows.MessageBox]::Show(
|
||||||
"No modified ISO content found. Please complete Steps 1–3 first.",
|
"No modified ISO content found. Please complete Steps 1-3 first.",
|
||||||
"Not Ready", "OK", "Warning")
|
"Not Ready", "OK", "Warning")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@@ -107,28 +107,54 @@ function Invoke-WinUtilISOWriteUSB {
|
|||||||
return $null
|
return $null
|
||||||
}
|
}
|
||||||
|
|
||||||
# ── Diskpart script: clean + GPT + format only (no assign) ──────────
|
# ── Phase 1: Clean the disk via diskpart ────────────────────────────
|
||||||
# We intentionally omit "assign" here and let PowerShell assign letters
|
# Only run "clean" here. "convert gpt" in diskpart requires the disk to
|
||||||
# explicitly below. diskpart's "assign" can silently fail on drives that
|
# already be MBR; after a clean the disk is RAW, so convert gpt fails on
|
||||||
# previously had letter bindings still present in the registry, which is
|
# many systems. We use Initialize-Disk (which accepts RAW disks) instead.
|
||||||
# the root cause of the "could not locate partition" error.
|
$dpScript1 = @"
|
||||||
$dpScript = @"
|
|
||||||
select disk $diskNum
|
select disk $diskNum
|
||||||
clean
|
clean
|
||||||
convert gpt
|
exit
|
||||||
create partition efi size=512
|
"@
|
||||||
format quick fs=fat32 label="SYSTEM"
|
$dpFile1 = Join-Path $env:TEMP "winutil_diskpart_$(Get-Random).txt"
|
||||||
|
$dpScript1 | Set-Content -Path $dpFile1 -Encoding ASCII
|
||||||
|
Log "Running diskpart clean on Disk $diskNum..."
|
||||||
|
$dpOut1 = diskpart /s $dpFile1 2>&1
|
||||||
|
Remove-Item $dpFile1 -Force -ErrorAction SilentlyContinue
|
||||||
|
$dpOut1 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
||||||
|
|
||||||
|
# ── Phase 2: Initialize as GPT via PowerShell ────────────────────────
|
||||||
|
# After "clean", Windows may still see the disk as initialized (stale
|
||||||
|
# metadata). Initialize-Disk only accepts RAW disks; Set-Disk handles
|
||||||
|
# already-initialized (MBR/GPT) disks with no partitions. Try both.
|
||||||
|
Start-Sleep -Seconds 2
|
||||||
|
Update-Disk -Number $diskNum -ErrorAction SilentlyContinue
|
||||||
|
$diskObj = Get-Disk -Number $diskNum -ErrorAction Stop
|
||||||
|
if ($diskObj.PartitionStyle -eq 'RAW') {
|
||||||
|
Initialize-Disk -Number $diskNum -PartitionStyle GPT -ErrorAction Stop
|
||||||
|
Log "Disk $diskNum initialized as GPT."
|
||||||
|
} else {
|
||||||
|
Set-Disk -Number $diskNum -PartitionStyle GPT -ErrorAction Stop
|
||||||
|
Log "Disk $diskNum converted to GPT (was $($diskObj.PartitionStyle))."
|
||||||
|
}
|
||||||
|
|
||||||
|
# ── Phase 3: Create partitions via diskpart ──────────────────────────
|
||||||
|
# "create partition efi" is not supported on removable media.
|
||||||
|
# A single FAT32 primary partition is all that is needed for a UEFI-
|
||||||
|
# bootable Windows install USB – the firmware locates \EFI\Boot\bootx64.efi
|
||||||
|
# on any FAT32 volume regardless of GPT partition type.
|
||||||
|
$dpScript2 = @"
|
||||||
|
select disk $diskNum
|
||||||
create partition primary
|
create partition primary
|
||||||
format quick fs=fat32 label="WINPE"
|
format quick fs=fat32 label="WINPE"
|
||||||
exit
|
exit
|
||||||
"@
|
"@
|
||||||
$dpFile = Join-Path $env:TEMP "winutil_diskpart_$(Get-Random).txt"
|
$dpFile2 = Join-Path $env:TEMP "winutil_diskpart2_$(Get-Random).txt"
|
||||||
$dpScript | Set-Content -Path $dpFile -Encoding ASCII
|
$dpScript2 | Set-Content -Path $dpFile2 -Encoding ASCII
|
||||||
Log "Running diskpart on Disk $diskNum..."
|
Log "Creating partitions on Disk $diskNum..."
|
||||||
$dpOut = diskpart /s $dpFile 2>&1
|
$dpOut2 = diskpart /s $dpFile2 2>&1
|
||||||
Remove-Item $dpFile -Force -ErrorAction SilentlyContinue
|
Remove-Item $dpFile2 -Force -ErrorAction SilentlyContinue
|
||||||
# Log diskpart output for diagnostics
|
$dpOut2 | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
||||||
$dpOut | Where-Object { $_ -match '\S' } | ForEach-Object { Log " diskpart: $_" }
|
|
||||||
|
|
||||||
SetProgress "Assigning drive letters..." 30
|
SetProgress "Assigning drive letters..." 30
|
||||||
Start-Sleep -Seconds 3 # allow Windows to settle after partition creation
|
Start-Sleep -Seconds 3 # allow Windows to settle after partition creation
|
||||||
@@ -169,7 +195,7 @@ exit
|
|||||||
$wimSizeMB = [math]::Round((Get-Item $installWim).Length / 1MB)
|
$wimSizeMB = [math]::Round((Get-Item $installWim).Length / 1MB)
|
||||||
if ($wimSizeMB -gt 3800) {
|
if ($wimSizeMB -gt 3800) {
|
||||||
# FAT32 limit – split with DISM
|
# FAT32 limit – split with DISM
|
||||||
Log "install.wim is $wimSizeMB MB – splitting for FAT32 compatibility..."
|
Log "install.wim is $wimSizeMB MB - splitting for FAT32 compatibility...This will take several minutes."
|
||||||
$splitDest = Join-Path $usbDrive "sources\install.swm"
|
$splitDest = Join-Path $usbDrive "sources\install.swm"
|
||||||
New-Item -ItemType Directory -Path (Split-Path $splitDest) -Force | Out-Null
|
New-Item -ItemType Directory -Path (Split-Path $splitDest) -Force | Out-Null
|
||||||
Split-WindowsImage -ImagePath $installWim `
|
Split-WindowsImage -ImagePath $installWim `
|
||||||
|
|||||||
@@ -1353,7 +1353,7 @@
|
|||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
||||||
<!-- STEP 1 : Select Windows 11 ISO -->
|
<!-- STEP 1 : Select Windows 11 ISO -->
|
||||||
<!-- ═══════════════════════════════════════════════════════════ -->
|
<!-- ═══════════════════════════════════════════════════════════ -->
|
||||||
<Border Grid.Row="0" Name="WPFWin11ISOSelectSection" Style="{StaticResource BorderStyle}">
|
<Border Grid.Row="0" Name="WPFWin11ISOSelectSection" Style="{StaticResource BorderStyle}" HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
<Grid Margin="5">
|
<Grid Margin="5">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="*"/>
|
<ColumnDefinition Width="*"/>
|
||||||
@@ -1449,7 +1449,8 @@
|
|||||||
<Border Grid.Row="1"
|
<Border Grid.Row="1"
|
||||||
Name="WPFWin11ISOMountSection"
|
Name="WPFWin11ISOMountSection"
|
||||||
Style="{StaticResource BorderStyle}"
|
Style="{StaticResource BorderStyle}"
|
||||||
Visibility="Collapsed">
|
Visibility="Collapsed"
|
||||||
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
<Grid Margin="5">
|
<Grid Margin="5">
|
||||||
<Grid.ColumnDefinitions>
|
<Grid.ColumnDefinitions>
|
||||||
<ColumnDefinition Width="Auto"/>
|
<ColumnDefinition Width="Auto"/>
|
||||||
@@ -1514,7 +1515,8 @@
|
|||||||
<Border Grid.Row="2"
|
<Border Grid.Row="2"
|
||||||
Name="WPFWin11ISOModifySection"
|
Name="WPFWin11ISOModifySection"
|
||||||
Style="{StaticResource BorderStyle}"
|
Style="{StaticResource BorderStyle}"
|
||||||
Visibility="Collapsed">
|
Visibility="Collapsed"
|
||||||
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
<StackPanel Margin="5">
|
<StackPanel Margin="5">
|
||||||
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
<TextBlock FontSize="{DynamicResource FontSize}" FontWeight="Bold"
|
||||||
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,8">
|
Foreground="{DynamicResource MainForegroundColor}" Margin="0,0,0,8">
|
||||||
@@ -1542,7 +1544,8 @@
|
|||||||
<Border Grid.Row="3"
|
<Border Grid.Row="3"
|
||||||
Name="WPFWin11ISOOutputSection"
|
Name="WPFWin11ISOOutputSection"
|
||||||
Style="{StaticResource BorderStyle}"
|
Style="{StaticResource BorderStyle}"
|
||||||
Visibility="Collapsed">
|
Visibility="Collapsed"
|
||||||
|
HorizontalAlignment="Left" MinWidth="{DynamicResource ButtonWidth}">
|
||||||
<StackPanel Margin="5">
|
<StackPanel Margin="5">
|
||||||
<!-- Header row: title + Clean & Reset button -->
|
<!-- Header row: title + Clean & Reset button -->
|
||||||
<Grid Margin="0,0,0,12">
|
<Grid Margin="0,0,0,12">
|
||||||
|
|||||||
Reference in New Issue
Block a user