potatoqualitee / kbupdate

🛡 KB Viewer, Saver, Installer and Uninstaller
MIT License
338 stars 50 forks source link

not able to download KB4052623 #224

Open KrX3D opened 1 year ago

KrX3D commented 1 year ago

hi

i tried to dowload the update with

Save-KbUpdate -Name kb4052623 -Architecture x64-Path C:\Updates

but i always get this warning

WARNUNG: [18:40:51][Save-KbUpdate] Could not find architecture match, downloading all

it saves than 1 file with the name off all 3 files

updateplatform_0456e6719c3ee098af03b785230ac020643fa1ac.exe updateplatform_eaf76728f00b841dc9b3b1722f778e50ed59438a.exe updateplatform_19608225e67d613b65e183e1ca4159bc915cf331.exe

the filesize is 4.57mb.

i also tried it with arm64:

Save-KbUpdate -Name kb4052623 -Architecture arm64 -Path C:\Updates

and also without the Architecture parameter

with the same result. i used arm64 since when i try:

Get-KbUpdate -Name KB4052623

it shows me 9 updates and this is the one i need (which says arm64, but it has 3 links for x64, x86 and arm64)

Title             : Update for Microsoft Defender Antivirus antimalware platform - KB4052623 (Version 4.18.23050.9)
Id                : 4052623
Description       : This package will update Microsoft Defender Antivirus antimalware platform’s components on the
                    user machine.
Architecture      : ARM64
Language          :                                                                                                     Classification    : Definition Updates                                                                                  SupportedProducts : Microsoft Defender Antivirus                                                                        MSRCNumber        :                                                                                                     MSRCSeverity      : n/a
Size              : 26.7 MB
UpdateId          : c9259ee0-f602-4763-b981-bf5924267678
RebootBehavior    : Never restarts
RequestsUserInput : False
ExclusiveInstall  :
NetworkRequired   : False
UninstallNotes    :
UninstallSteps    :
SupersededBy      :
Supersedes        :
LastModified      : 2023-07-24
Link              : {https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/defu/2023/07/updateplatf
                    orm.amd64fre_aa7e29ece94fbaacd94a7f34896b3f9671a18d18.exe, https://catalog.s.download.windowsupdate
                    .com/d/msdownload/update/software/defu/2023/07/updateplatform.arm64fre_705415ef1947972f9102f83c5823
                    0d4d46ce13e2.exe, https://catalog.s.download.windowsupdate.com/d/msdownload/update/software/defu/20
                    23/07/updateplatform.x86fre_551fa7abeaa568a723da710c739577ebf792cd0c.exe}

so am i doing something wrong?

for now i created this script which gets and downloads the x64 file i want, but using one line of code with Save-KbUpdate would be nicer

# Install the 'kbupdate' module if not already present
$moduleName = "kbupdate"
if (-not (Get-Module -ListAvailable | Where-Object { $_.Name -eq $moduleName })) {
    Install-Module -Name $moduleName -Force -Scope CurrentUser -AllowClobber
    Write-Host "Module '$moduleName' installed successfully."
} else {
    Write-Host "Module '$moduleName' is already installed."
}

# Import the 'kbupdate' module
Import-Module $moduleName -ErrorAction Stop

# Get the updates and find the newest version
$updateList = Get-KbUpdate -Name KB4052623
$newestUpdate = $updateList | Sort-Object -Property LastModified -Descending | Select-Object -First 1

if ($newestUpdate) {
    Write-Host "Newest Update:"
    Write-Output $newestUpdate

    # Find the link containing "updateplatform.amd64fre"
    $updateLink = $newestUpdate.Link | Where-Object { $_ -match "updateplatform\.amd64fre" }

    if ($updateLink) {
        Write-Host "Update Link:"
        Write-Output $updateLink

        # Define the download path to the desktop
        $desktopPath = [Environment]::GetFolderPath("Desktop")
        $downloadPath = Join-Path -Path $desktopPath -ChildPath ($updateLink.Split("/")[-1])

        # Download the file to the desktop
        Invoke-WebRequest -Uri $updateLink -OutFile $downloadPath
        Write-Host "File downloaded and saved to: $downloadPath"
    } else {
        Write-Host "Update link containing 'updateplatform.amd64fre' not found."
    }
} else {
    Write-Host "Update not found."
}