.net - Windows Update API c #: Indstil downloadlokation

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg skriver en kode til automatisk at downloade og installere Windows-opdateringer.
(ved hjælp af 'tlbimped' wuapi.dll og nogle prøvekode fundet over internettet).


UpdateDownloader updateDownloader = Sesion.CreateUpdateDownloader();
updateDownloader.Updates = new UpdateCollection() { Item };                      
updateDownloader.BeginDownload(this, this, this);


Og det er fint - jeg kan med held downloade og installere opdatering. Men jeg foretrækker at cache elementer og ikke downloade dem, hvis dette emne alredy findes i 'special' mappe. Google siger, at jeg kan bruge:


IUpdate.CopyFromCache(path, true);


Men det virker ikke for mig :(


Her er prøvekode


IUpdate Item { get; set; }
public UpdateSession Sesion { get; set; }

void CopyToFolder()
{
 string path=Environment.CurrentDirectory + @"Updates";

 DirectoryInfo di = new  DirectoryInfo(path);

 if (!di.Exists) Directory.CreateDirectory(path);

 Item.CopyFromCache(path, true);
}


Varen er ikke null, downloades. Kan installeres, men kan ikke kopieres til den angivne sti.

Bedste reference


Løsningen er ret let - vi bør kopiere barn (Bundled) opdateringer i stedet for hoved (forælder) en.


foreach (IUpdate child in Item.BundledUpdates)
{
   child.CopyFromCache(path, false);
}





Dette er nøjagtigt svaret som angivet i afsnittet Bemærkninger på siden IUpdate Interface:


http://msdn.microsoft.com/en-us/library/aa386099(v=VS.85).aspx[5]



  'Hvis ejendommen BundledUpdates indeholder en IUpdateCollection, nogle
  Egenskaber og metoder til opdateringen må kun være tilgængelige på
  bundtede opdateringer, for eksempel DownloadContents eller CopyFromCache. '