jantari / LSUClient

Orchestrate driver, BIOS/UEFI and firmware updates for Lenovo computers 👨‍💻
https://jantari.github.io/LSUClient-docs/
MIT License
201 stars 21 forks source link

BIOS-Update uses an older version of wflash2exe that cannot be installed without forcing a reboot #54

Closed stondino00 closed 2 years ago

stondino00 commented 2 years ago

Version

1.4.1

Question

I have a number of older flash version machines that are giving me this message. How would I process these updates and make it reboot when it's done? Thanks for the help.

VERBOSE: Processing package 'fbjye0usa - Flash BIOS Update for ThinkCentre E93, M73p, M83, M93, M93p, M93p Tiny and ThinkStation E32,P300 [32,64]' VERBOSE: Destination directory did not exist, created it: 'C:\Users\PDDDDEP~1\AppData\Local\Temp\LSUPackages\fbjye0usa' VERBOSE: Starting download of 'https://download.lenovo.com/pccbbs/thinkcentre_bios/fbjye0usa_2_.xml' VERBOSE: Starting download of 'https://download.lenovo.com/pccbbs/thinkcentre_bios/fbjye0usa.exe' VERBOSE: Starting download of 'https://download.lenovo.com/pccbbs/thinkcentre_bios/fbjye0usa.txt' WARNING: This BIOS-Update uses an older version of wflash2.exe that cannot be installed without forcing a reboot - skipping!

jantari commented 2 years ago

Unfortunately, there is no way to install these BIOS updates directly with LSUClient.

I can only test whether a particular update is recent enough and supports the /sccm parameter (which allows to suppress the reboot) after it has already been downloaded and extracted. If it could be determined at the time of searching for updates (during Get-LSUpdate) then it would be possible to just declare these updates not-unattended and thus allow the user to choose/filter based on that whether they want to install it, knowing that it'd force a reboot. But because it can only be determined just before it's about to be installed there is no good way to allow a choice at that point.

However, what you can do as a workaround is install these particular updates with your own script.

The installer files (such as fbjye0usa.exe in this case) that you download with Save-LSUpdate or any other way can be extracted with:

fbjye0usa.exe /VERYSILENT /DIR="C:\directory\where\to\extract" /EXTRACT="YES"

and then installed with:

C:\directory\where\to\extract\Flash.cmd /quiet

If you have to do this dynamically in a script you could automatically "fall back" to this approach whenever you get back Success False with the FailureReason OPERATION_NOT_SUPPORTED from Install-LSUpdate when attempting to install a BIOS update.

Admittedly it's not as neat as having LSUClient handle it, but hopefully it can work for your situation?

stondino00 commented 2 years ago

Cool

Thanks so much for the help on this!!