diff --git a/FFUDevelopment/BuildFFUVM.ps1 b/FFUDevelopment/BuildFFUVM.ps1 index 0c2ca90..5a3463a 100644 --- a/FFUDevelopment/BuildFFUVM.ps1 +++ b/FFUDevelopment/BuildFFUVM.ps1 @@ -167,6 +167,7 @@ param( [string]$ProductKey, [bool]$BuildUSBDrive ) +$version = '2305' if (($InstallOffice -eq $true) -and ($InstallApps -eq $false)) { throw "If variable InstallOffice is set to `$true, InstallApps must also be set to `$true." @@ -239,6 +240,7 @@ function LogVariableValues { ) $allVariables = Get-Variable -Scope Script | Where-Object { $_.Name -notin $excludedVariables } + Writelog "Script version: $version" WriteLog 'Logging variables' foreach ($variable in $allVariables) { $variableName = $variable.Name @@ -848,7 +850,8 @@ function New-FFU { $FFUFile = "$FFUCaptureLocation\$FFUFileName" #Capture the FFU WriteLog 'Capturing FFU from VHDX file' - Invoke-Process cmd "/c ""$DandIEnv"" && dism /Capture-FFU /ImageFile:$FFUFile /CaptureDrive:\\.\PhysicalDrive$($vhdxDisk.DiskNumber) /Name:$($winverinfo.Name)$($winverinfo.DisplayVersion)$($winverinfo.SKU) /Compress:Default" + #Invoke-Process cmd "/c ""$DandIEnv"" && dism /Capture-FFU /ImageFile:$FFUFile /CaptureDrive:\\.\PhysicalDrive$($vhdxDisk.DiskNumber) /Name:$($winverinfo.Name)$($winverinfo.DisplayVersion)$($winverinfo.SKU) /Compress:Default" + Invoke-Process cmd "/c dism /Capture-FFU /ImageFile:$FFUFile /CaptureDrive:\\.\PhysicalDrive$($vhdxDisk.DiskNumber) /Name:$($winverinfo.Name)$($winverinfo.DisplayVersion)$($winverinfo.SKU) /Compress:Default" WriteLog 'FFU Capture complete' WriteLog 'Sleeping 60 seconds before dismount of VHDX' Dismount-ScratchVhdx -VhdxPath $VHDXPath @@ -879,7 +882,8 @@ function New-FFU { } #Optimize FFU WriteLog 'Optimizing FFU - This will take a few minutes, please be patient' - Invoke-Process cmd "/c ""$DandIEnv"" && dism /optimize-ffu /imagefile:$FFUFile" + #Invoke-Process cmd "/c ""$DandIEnv"" && dism /optimize-ffu /imagefile:$FFUFile" + Invoke-Process cmd "/c dism /optimize-ffu /imagefile:$FFUFile" WriteLog 'Optimizing FFU complete' } @@ -1163,7 +1167,7 @@ try { $osPartitionDriveLetter = $osPartition[1].DriveLetter $WindowsPartition = $osPartitionDriveLetter + ":\" - $recoveryPartition = New-RecoveryPartition -VhdxDisk $vhdxDisk -OsPartition $osPartition[1] -RecoveryPartitionSize $RecoveryPartitionSize -DataPartition $dataPartition + #$recoveryPartition = New-RecoveryPartition -VhdxDisk $vhdxDisk -OsPartition $osPartition[1] -RecoveryPartitionSize $RecoveryPartitionSize -DataPartition $dataPartition WriteLog "All necessary partitions created." diff --git a/FFUDevelopment/Docs/BuildDeployFFU.docx b/FFUDevelopment/Docs/BuildDeployFFU.docx index d05af39..80177ab 100644 Binary files a/FFUDevelopment/Docs/BuildDeployFFU.docx and b/FFUDevelopment/Docs/BuildDeployFFU.docx differ diff --git a/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 b/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 index 6d57e45..88f1ee2 100644 --- a/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 +++ b/FFUDevelopment/WinPEDeployFFUFiles/ApplyFFU.ps1 @@ -127,26 +127,27 @@ WriteLog "Physical DeviceID is $PhysicalDeviceID" $DiskID = $PhysicalDeviceID.substring($PhysicalDeviceID.length - 1,1) WriteLog "DiskID is $DiskID" +#COMMENT THIS WHOLE BLOCK OUT ONCE FFUPROVIDER FIX IS IN #Modify diskpart answer files if DiskID not 0 # $UEFIFFUPartitions = 'x:\CreateUEFI-FFU-Partitions.txt' -# $ExtendPartition = 'x:\ExtendPartition-UEFI.txt' +$ExtendPartition = 'x:\ExtendPartition-UEFI.txt' -# If ($DiskID -ne '0'){ -# WriteLog 'DiskID is not 0. Need to modify diskpart answer files' -# try { -# Set-DiskpartAnswerFiles $UEFIFFUPartitions $DiskID -# } -# catch { -# WriteLog "Modifying $UEFIFFUPartitions failed with error: $_" -# } +If ($DiskID -ne '0'){ + WriteLog 'DiskID is not 0. Need to modify diskpart answer files' + # try { + # Set-DiskpartAnswerFiles $UEFIFFUPartitions $DiskID + # } + # catch { + # WriteLog "Modifying $UEFIFFUPartitions failed with error: $_" + # } -# try { -# Set-DiskpartAnswerFiles $ExtendPartition $DiskID -# } -# catch { -# WriteLog "Modifying $ExtendPartition failed with error: $_" -# } -# } + try { + Set-DiskpartAnswerFiles $ExtendPartition $DiskID + } + catch { + WriteLog "Modifying $ExtendPartition failed with error: $_" + } +} #Find FFU Files [array]$FFUFiles = @(Get-ChildItem -Path $USBDrive*.ffu) @@ -472,18 +473,20 @@ else{ # } # } -#Extend Windows partition and create recovery partition -# Writelog 'Extending Windows partition' -# Invoke-Process diskpart.exe "/S $ExtendPartition" -# if($LASTEXITCODE -eq 0){ -# WriteLog 'Successfully extended Windows partition and created recovery partition' -# } -# else{ -# Writelog "Failed to extend Windows partition and/or create recovery partition - LastExitCode = $LASTEXITCODE" -# } +#COMMENT THIS WHOLE BLOCK OUT AFTER FFUPROVIDER FIX IS IN +# Extend Windows partition and create recovery partition +Writelog 'Extending Windows partition' +Invoke-Process diskpart.exe "/S $ExtendPartition" +if($LASTEXITCODE -eq 0){ + WriteLog 'Successfully extended Windows partition and created recovery partition' +} +else{ + Writelog "Failed to extend Windows partition and/or create recovery partition - LastExitCode = $LASTEXITCODE" +} +#UNCOMMENT THIS AFTER FFUPROVIDER FIX IS IN #Set W: drive letter to Windows partition -Get-Disk | Where-Object Number -eq $DiskID | Get-Partition | Where-Object PartitionNumber -eq 3 | Set-Partition -NewDriveLetter W +#Get-Disk | Where-Object Number -eq $DiskID | Get-Partition | Where-Object PartitionNumber -eq 3 | Set-Partition -NewDriveLetter W #Copy modified WinRE if folder exists, else copy inbox WinRE $WinRE = $USBDrive + "WinRE\winre.wim" diff --git a/FFUDevelopment/WinPEDeployFFUFiles/ExtendPartition-UEFI.txt b/FFUDevelopment/WinPEDeployFFUFiles/ExtendPartition-UEFI.txt new file mode 100644 index 0000000..dbfe4b9 --- /dev/null +++ b/FFUDevelopment/WinPEDeployFFUFiles/ExtendPartition-UEFI.txt @@ -0,0 +1,10 @@ +select disk 0 +select partition 3 +Assign letter="W" +shrink minimum=1000 +create partition primary +format quick fs=ntfs label="Recovery" +assign letter="R" +set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac" +gpt attributes=0x8000000000000001 +exit