Windows In-place upgrade fixlet doesn't actually upgrade

Hello,
So I’m trying to perform an in-place upgrade on my Windows 10 machines. I have a dummy machine that I can run tests on.

So I have an ISO file that I got from IT. Looking at the indexes in it, I can see it contains multiple Windows 10 editions (Pro, Ent, Home, Edu, etc.).
Here are the steps I took:

  1. I copied the ISO to my BES server, renamed it to the SHA1 (without a .iso extension) value and moved it to BES Server\wwwrootbes\bfmirror\downloads\sha1.
  2. I created a custom copy of the upgrade fixlet and changed the values as so:
begin prefetch block	
add prefetch item name =Windows.20h2.iso sha1=67ac49e4db7db73e2e406e0616e3240fc585e4b5 size=4908253184 url={value of setting "_BESClient_AllowCustomRepoDownloads" of client   | "http://MANUAL_BES_CACHING_REQUIRED/"}Windows.20h2.iso sha256=ff8a342bfa96a679ac710c9317b0ba2076e8fffe5e3579c38f5a57ecc92f5100
end prefetch block

parameter "workISO" = "{pathname of client folder of current site & "\__Download\Windows.20h2.iso"}"
continue if {exists file (parameter "workISO")} 

So essentially I just changed the SHA1, SHA256 and size. Also, I wasn’t sure if it’s necessary but I also copied the ISO to \__Download\Windows.20h2.iso. I’m guessing it’s wrong cause that’s where the client downloads the ISO from the server to?

  1. I deployed the action on my dummy server and the logs look good. I also get this in my summary:
    https://i.imgur.com/rLjNt0E.png

I watched the server itself and saw that some actions were being performed by Powershell (setup.exe /bla bla) and other processes. Also, the ISO was mounted on that dummy server, so I figured it works.
The next thing I saw was that the server was pending restart within a couple of minutes. I restarted and it seems like no upgrade was installed.

I’m wondering what I did wrong.

Here are the logs:

   ActionLogMessage: (action:629) Download url: 'http://MANUAL_BES_CACHING_REQUIRED/Windows.20h2.iso'
At 14:02:11 +0200 - 
   Report posted successfully
At 14:15:17 +0200 - 
   ActionLogMessage: (action:629) Action signature verified for Execution
   ActionLogMessage: (action:629) starting action
   DownloadCRCPing command received
   ActiveDirectory: User logged in - Domain: domain User: user
At 14:15:17 +0200 - actionsite (http://server01.domain:52311/cgi-bin/bfgather.exe/actionsite)
   Command succeeded parameter "workISO" = "C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__Download\Windows.20h2.iso" (action:629)
   Command succeeded (evaluated true) continue if {exists file (parameter "workISO")}  (action:629)
   Command succeeded parameter "workPath" = "C:\win10_upgrade_temp" (action:629)
   Command started - waithidden cmd /C rmdir /S /Q "C:\win10_upgrade_temp" (action:629)
At 14:15:17 +0200 - 
   ActiveDirectory: Refreshed User Information - Domain: domain User: user
At 14:15:17 +0200 - actionsite (http://server01.domain:52311/cgi-bin/bfgather.exe/actionsite)
   Command succeeded (Exit Code=0) waithidden cmd /C rmdir /S /Q "C:\win10_upgrade_temp" (action:629)
   Command started - waithidden cmd /C mkdir "C:\win10_upgrade_temp" (action:629)
   Command succeeded (Exit Code=0) waithidden cmd /C mkdir "C:\win10_upgrade_temp" (action:629)
   Command succeeded delete No 'C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__appendfile' exists to delete, no failure reported (action:629)
   Command succeeded delete No 'C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__Download\setupcomplete.cmd' exists to delete, no failure reported (action:629)
   Command succeeded appendfile @echo off (action:629)
   Command succeeded (file created) appendfile @echo off (action:629)
   Command succeeded appendfile @echo off (action:629)
   Command succeeded appendfile SET WindowsISO="C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__Download\Windows.20h2.iso" (action:629)
   Command succeeded appendfile powershell.exe "Dismount-DiskImage ""%WindowsISO%""" (action:629)
   Command succeeded appendfile rmdir /S /Q "C:\win10_upgrade_temp" (action:629)
   Command succeeded move __appendfile __Download\setupcomplete.cmd (action:629)
   Command succeeded delete No 'C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__appendfile' exists to delete, no failure reported (action:629)
   Command succeeded (file created) appendfile @echo off (action:629)
   Command succeeded appendfile @echo off (action:629)
   Command succeeded appendfile SET WindowsISO="C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__Download\Windows.20h2.iso" (action:629)
   Command succeeded appendfile FOR /F "skip=3" %%I IN ('powershell.exe "Get-DiskImage """%WindowsISO%""" | Get-Volume | Select-Object {$_.DriveLetter}"') DO %%I:\setup.exe /auto upgrade /Compat ScanOnly /DynamicUpdate disable /noreboot" (action:629)
   Command succeeded appendfile echo %errorlevel% > "C:\win10_upgrade_temp\out.log" (action:629)
   Command succeeded move __appendfile "C:\win10_upgrade_temp/upgradeCheck.bat" (action:629)
   Command succeeded delete No 'C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__appendfile' exists to delete, no failure reported (action:629)
   Command succeeded delete No 'C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\mount.and.install.bat' exists to delete, no failure reported (action:629)
   Command succeeded (file created) appendfile @echo on (action:629)
   Command succeeded appendfile @echo on (action:629)
   Command succeeded appendfile SET WindowsISO="C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__Download\Windows.20h2.iso" (action:629)
   Command succeeded appendfile powershell.exe "Mount-DiskImage ""%WindowsISO%""" (action:629)
   Command succeeded appendfile TIMEOUT 10 (action:629)
At 14:15:18 +0200 - actionsite (http://server01.domain:52311/cgi-bin/bfgather.exe/actionsite)
   Command succeeded appendfile FOR /F "skip=3" %%I IN ('powershell.exe "Get-DiskImage """%WindowsISO%""" | Get-Volume | Select-Object {$_.DriveLetter}"') DO dir %%I: > "C:\win10_upgrade_temp\dir.log" && %%I:\setup.exe /auto upgrade /Quiet /DynamicUpdate disable /noreboot /postoobe "C:\Program Files (x86)\BigFix Enterprise\BES Client\__BESData\actionsite\__Download\setupcomplete.cmd" (action:629)
   Command succeeded appendfile echo %errorlevel% > "C:\win10_upgrade_temp\out.log" (action:629)
   Command succeeded move __appendfile mount.and.install.bat  (action:629)
   Command started - wait mount.and.install.bat > "C:\win10_upgrade_temp\cmd.log" (action:629)
At 14:15:21 +0200 - 
   Report posted successfully
At 14:17:23 +0200 - actionsite (http://server01.domain:52311/cgi-bin/bfgather.exe/actionsite)
   Command succeeded (Exit Code=0) wait mount.and.install.bat > "C:\win10_upgrade_temp\cmd.log" (action:629)
   Command started - wait __Download\setupcomplete.cmd >"C:\win10_upgrade_temp\setupcomplete.log" (action:629)
At 14:17:28 +0200 - 
   Report posted successfully
At 14:17:32 +0200 - actionsite (http://server01.domain:52311/cgi-bin/bfgather.exe/actionsite)
   Command succeeded (Exit Code=0) wait __Download\setupcomplete.cmd >"C:\win10_upgrade_temp\setupcomplete.log" (action:629)
   Command succeeded action requires restart "1B1BD78704E5B0476490DCB85EC6187AB2DE7EA4" (action:629)
At 14:17:42 +0200 - actionsite (http://server01.domain:52311/cgi-bin/bfgather.exe/actionsite)
   Fixed - Windows 10 20H2 Pro - In-place upgrade fixlet (fixlet:627)

One more thing, I have a setupcomplete.log file inside of C:\win10_upgrade_temp with the following content:

Attached          : False
BlockSize         : 0
DevicePath        : 
FileSize          : 4908253184
ImagePath         : C:\Program Files (x86)\BigFix Enterprise\BES 
                    Client\__BESData\actionsite\__Download\Windows.20h2.iso
LogicalSectorSize : 2048
Number            : 
Size              : 4908253184
StorageType       : 1
PSComputerName    : 

Check what’s in this file, it should be the output of the setup command. If it started setup and gave some kind of error message, also check \Windows\Panther for the logs generated by Windows Setup itself.

I forget which versions you said you were upgrading from/to, but I recall a problem I had with…maybe 1607?.. where one of the default Windows Store applications was not supported in a later version, and we had to remove that via DISM before running the upgrades. I think it was something related to Miracast? One of the Panther logs referenced failing to upgrade it, if you have a reference from the log we could find that info again.

1 Like

Thank you Jason,
There’s no cmd.log file there, but according to a log file I found in the Panther folder, it’s a disk space issue.
I will check again after increasing the disk size.

Also, what would be the “best practice” way of verifying there’s enough disk space on a machine that I want to upgrade?

I Googled a bit and thought about adding this relevance to the fixlet itself:

(if (0<(it / (1024*1024*1024*1024))) then (it / (1024*1024*1024*1024)) as string & " TB" else if (0<(it / (1024*1024*1024))) then (it / (1024*1024*1024)) as string & " GB" else if (0<(it / (1024*1024))) then (it / (1024*1024)) as string & " MB" else if (0<(it / (1024))) then (it / (1024)) as string & " KB" else (it as string & " B")) of (free space of drive of system folder) > "20"