2 votes

Comment CreateUpdateDownloader sait-il télécharger quels fichiers ?

Comment CreateUpdateDownloader télécharger des fichiers ? Je demande parce qu'il manque 4 Ko à mon système.

J'obtiens le titre des 4 KBs manquants en itérant à travers une collection de mise à jour dans mon script.

Lorsque j'affecte cette collection à un CreateUpdateDownloader cependant, je ne trouve que 1 KB dans C:\Windows\SoftwareDistribution\Download.

Vous savez pourquoi il n'a pas téléchargé les 3 autres Ko ? Oui, je ne cherche qu'à scanner et télécharger pour l'instant - j'essaie d'apprendre comment cela fonctionne en le regardant en action. J'essaierai d'apprendre comment cela fonctionne en le regardant à l'œuvre. J'installerai plus tard, car je veux modifier certaines choses.

Le code est le suivant :

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()

3voto

JoSerra Points 321

Il doit être utilisé Microsoft.Update.UpdateColl pour recueillir les mises à jour à télécharger. Fonction CopyFromCache permet de télécharger une copie locale de la mise à jour. Properté TéléchargerURL vous permettra d'obtenir le téléchargement à partir d'Internet. C'était très utile Documentation sur les objets iupdate

C'est ma "première" approche du code. Les 5 premières mises à jour sont téléchargées sur d : \updates et leur URL correspondante sont répertoriés.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X