Skip to content

Releases: jantari/LSUClient

Version 1.4.1

15 Feb 17:59
Compare
Choose a tag to compare

Changelog since 1.4.0

  • Fix some ThinkPad BIOS update packages (e.g. E14 Gen 2) being reported as failed even though they succeeded
  • Handle ranges (A to B, e.g. 18362^18363) in version pattern comparisons

Version 1.4.0

29 Jan 00:04
Compare
Choose a tag to compare

Changelog since 1.3.4

  • Packages with reboot type 5 will now be correctly classified as unattended (thanks @dkattan)

  • The Install-LSUpdate cmdlet now returns rich PackageInstallResult objects with the following properties:

    [string] $ID
    [string] $Title
    [Nullable[PackageType]] $Type
    [bool] $Success
    [string] $FailureReason
    [PackagePendingAction] $PendingAction
    [Nullable[Int64]] $ExitCode
    [string[]] $StandardOutput
    [string[]] $StandardError
    [string[]] $LogOutput
    [TimeSpan] $Runtime

    where PendingAction is an enum of NONE, REBOOT_SUGGESTED, REBOOT_MANDATORY or SHUTDOWN.

    ℹ️ The PendingAction property is now the recommended way to determine whether a power cycle should be performed (over the -SaveBIOSUpdateInfoToRegistry parameter of Install-LSUpdate), because the PendingAction property is set for ALL installs, not just BIOS updates, and there are other updates as well for which "it simply isn't safe to postpone the reboot".

    That said, -SaveBIOSUpdateInfoToRegistry will continue to work the same as before. To aid the transition, the following table compares the values to expect in different scenarios - the exact code deciding the value of PendingAction can be referenced here as well:

    Scenario PendingAction "ActionNeeded" registry value with -SaveBIOSUpdateInfoToRegistry
    ThinkPad BIOS update REBOOT_MANDATORY REBOOT
    ThinkCentre BIOS update SHUTDOWN SHUTDOWN
    Any Reboot Type 5 update REBOOT_MANDATORY -
    Any Reboot Type 3 update REBOOT_SUGGESTED -
    Any Reboot Type 0 update NONE -
    Any unsuccessful update NONE -
  • Fix some packages with MSI installers failing to install with "The command or file ... could not be found" error

  • Fix a syntax mistake that caused all _OS tests to always succeed leading to inaccurate Win10/Win11 distinction [#48]

Version 1.3.4

28 Nov 15:43
Compare
Choose a tag to compare

Changelog since 1.3.3

  • Handle multiple Version elements in _WindowsBuildVersion tests [#42]
  • Ignore phantom/disconnected devices by default when evaluating relevant updates [#43]
    If you want to continue to include updates for non-present devices, use the new -IncludePhantomDevices parameter of Get-LSUpdate
  • Differentiate Windows 11 from 10 for package lookup and _OS tests. This means computers running Windows 11 will now fetch their correct, Windows 11 specific list of packages

Version 1.3.3

28 Oct 19:47
Compare
Choose a tag to compare

Changelog since 1.3.2

  • Properly support systems with a 5-character model number [Fix #38]
  • Allow passing full-length model numbers such as 20K70000GE (instead of just 20K7) to Get-LSUpdate -Model
  • URL-encode file names before attempting to download them from HTTP(S) repositories [Fix #39]
  • Adjust logic for _Driver tests when processing SeverityOverride - packages Severities should now be identical to System Update
    If you find a package that LSUClient shows with a different severity from System Update please open an issue about it

Version 1.3.2

17 Oct 23:10
Compare
Choose a tag to compare

Changelog since 1.3.1

  • Added Type property to package objects. Package type may be one of "Application", "Driver", "Bios" or "Firmware". Some packages do not have type information, in that case it will be $null
  • Process the SeverityOverride of packages if present for more accurate severity classification. It's still not the same as System Update, but it's a work in progress to get there
  • Add -NoTestSeverityOverride parameter to Get-LSUpdate to allow skipping the new SeverityOverride tests
  • Allow 5-character long values for Get-LSUpdate -Model parameter [#38]
  • Fix _FileExists tests always failing and update _Driver test - both should lead to more accurate IsApplicable and IsInstalled results

Version 1.3.1

08 Sep 16:20
Compare
Choose a tag to compare

Changelog since 1.3.0

  • Fix #34 - powershell window hiding (seemingly closing) during Get-LSUpdate run on some computer models

Version 1.3.0

30 Jul 19:59
Compare
Choose a tag to compare

πŸŽ‰ Another anniversary release πŸŽ‰

Changelog since 1.2.5

  • Support for custom, internal and offline package repositories [#17]
    The new -Repository parameter of Get-LSUpdate defaults to the official Lenovo package source like before, but it can also be set to a custom HTTP(S) URL or filesystem path that serves the expected files! Repositories created with the "Update Retriever" program are directly supported, as are filesystem directories with read-only access.
    ⚠️ Repositories created by Update Retriever use a different metadata format than the official one and they do not preserve Category information - therefore all packages retrieved from such a package source will have blank categories!
  • The URL property of package objects is now of type [String] rather than [Uri] (to avoid it being cast to a file:/// URL for packages retrieved from a filesystem path)
  • No longer are all BIOS/UEFI updates automatically classified Unattended and then just get skipped when they actually aren't,
    instead only the kinds of BIOS updates that LSUClient can actually install silently will be marked as unattended and all others will now have the Unattended value set to $false
  • Install-LSUpdate now takes proxy parameters as well so running Save-LSUpdate first is no longer necessary if you require them
  • Supporting custom repositores required a bit of internal rework and with that come new verbose/debug/warning and error messages

Version 1.2.5

21 Jun 18:00
Compare
Choose a tag to compare

Changelog since 1.2.4

  • Fix a problem causing updates that were already installed to show up again as needed/not installed yet for users in timezones with a negative offset to UTC (#33)
  • Big performance improvement for Get-LSUpdate - on most devices it should complete at least twice as fast as before
  • Better errorhandling when a packages installer is an invalid executable or 0-byte file (e.g. corrupted download) (#32)
  • The ReleaseDate of packages is now shown when they're formatted in list view (with Format-List)

Version 1.2.4

14 Apr 16:57
Compare
Choose a tag to compare

Changelog since 1.2.3

  • Support for new _WindowsBuildVersion tests [Fix #31]
  • Internal version number comparison now supports version numbers with any amount of "number-blocks", previously I relied on the [System.Version] type which only supports 2, 3 or 4 numbers

Version 1.2.3

28 Feb 00:42
Compare
Choose a tag to compare

Changelog since 1.2.2

  • Installers and all other executables are no longer run through cmd.exe /D /C [...] but instead started directly (fix #25)
  • The temporary scratch directory Get-LSUpdate uses during the package search is now configurable (fix #30)
    Previously this was hardcoded to $env:TEMP, now you can use the optional -ScratchDirectory parameter to pass a custom path.
  • The package objects returned by Get-LSUpdate now have ReleaseDate and Size information
  • Save-LSUpdate now downloads all files belonging to a package, not just its installer/main setup
    This is mostly in preparation to support offline/internal repositories at a later time (#17)
  • Fix Install-LSUpdate stopping with an error in a rare condition: the -Debug parameter set, PowerShell started in Non-Interactive mode and a ThinkCentre BIOS update about to be installed
  • Slight changes to the warnings printed when a package install fails to make them more informative