Windows Update API c#:设置下载位置

时间:2011-08-25 21:06:43

标签: c# .net windows hotfix

我正在编写一个代码来自动下载&安装Windows更新。 (使用“tlbimped”wuapi.dll和一些通过Internet找到的示例代码)。

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

没关系 - 我成功下载并安装了更新。但是,我更喜欢缓存项目,如果此项目alredy存在于“special”文件夹中,则不要下载它们。谷歌说,我可以使用:

IUpdate.CopyFromCache(path, true);

但它对我不起作用:(

以下是示例代码

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);
}

项目不为空,下载。可以安装,但不能复制到指定的路径。

1 个答案:

答案 0 :(得分:2)

解决方案非常简单 - 我们应该复制子(Bundled)更新而不是main(父)更新。

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

这正是IUpdate Interface页面的备注部分中提到的答案:

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

  

“如果BundledUpdates属性包含IUpdateCollection,则有些   更新的属性和方法可能只在   捆绑更新,例如,DownloadContents或CopyFromCache。“