Как CreateUpdateDownloader узнает, какие файлы скачивать?

Как CreateUpdateDownloader скачать файлы? Я спрашиваю, потому что моей системе не хватает 4 КБ.

Я получаю название 4 пропущенных КБ от итерации коллекции обновлений в моем скрипте.

Когда я назначаю эту коллекцию CreateUpdateDownloader Тем не менее, я нахожу только 1 КБ в C:\Windows\SoftwareDistribution\Download.

Есть мысли, почему он не загрузил остальные 3 КБ? Да, я только сейчас просматриваю и скачиваю, пытаясь узнать, как это работает, наблюдая за этим в действии. Я доберусь до установки позже, так как хочу кое-что настроить.

Код следует:

Dim session : Set session = CreateObject("Microsoft.Update.Session")
Dim search  : Set search  = session.CreateUpdateSearcher()

WScript.Echo "Searching for updates..." & vbCrLF

Set result = search.Search("IsInstalled=0 AND Type='Software' AND IsHidden=0")

WScript.Echo "Missing KBs:"
For i = 0 To result.Updates.Count -1 'last item in the collection always seems to be some kind of gibberish null.
    Set update = result.Updates.Item(i)
    WScript.Echo i + 1 & "> " & update.Title
Next

If result.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
End If

Set downloader = session.CreateUpdateDownloader() 
downloader.Updates = result.Updates ' updatesToDownload
downloader.Download()

1 ответ

Решение

Для сбора обновлений для загрузки необходимо использовать Microsoft.Update.UpdateColl. Функция CopyFromCache позволяет скачать локальную копию обновления. Свойство DownloadURL позволит вам скачать его из Интернета. Это было очень полезно iupdate объект документации

Это мой "первый" подход к коду. Первые 5 обновлений загружаются в каталог d:\updates и отображаются соответствующие URL-адреса.

Dim session : Set session = CreateObject("Microsoft.Update.Session")
Dim search  : Set search  = session.CreateUpdateSearcher()
WScript.Echo "Searching for updates..." & vbCrLF
Set result = search.Search("IsInstalled=0 AND Type='Software' AND IsHidden=0")
WScript.Echo "Missing KBs:"
For i = 0 To result.Updates.Count -1 'last item in the collection always seems to be some kind of gibberish null.
    Set update = result.Updates.Item(i)
    WScript.Echo i + 1 & "> " & update.Title
Next
If result.Updates.Count = 0 Then
    WScript.Echo "There are no applicable updates."
End If

Set updatesToDownload = CreateObject("Microsoft.Update.UpdateColl")
Set downloader = session.CreateUpdateDownloader() 
'For I = 0 to result.Updates.Count-1
For I = 0 to 5
    Set update = result.Updates.Item(I)
    updatesToDownload.Add(update)
Next
WScript.Echo vbCRLF & "Downloading updates..."
downloader.Updates = updatesToDownload
downloader.Download()

'For I = 0 to result.Updates.Count-1
for i=0 to 5
  for each upd in downloader.Updates.Item(i).BundledUpdates
   upd.CopyFromCache "d:\UPDATES", False
   for each content in upd.DownloadContents
     wscript.echo "url: " & content.DownloadURL
   next 
  next 
next 
Другие вопросы по тегам