我正在编写一个代码来自动下载&安装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);
}
项目不为空,下载。可以安装,但不能复制到指定的路径。
答案 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。“