【问题标题】:Windows Update API c# : set download locationWindows Update API c#:设置下载位置
【发布时间】:2011-08-25 21:06:42
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 欢迎来到 StackOverflow。 “它对我不起作用”是没有用的。这到底是什么意思呢?您是否收到错误消息?如果是这样,消息的确切文本是什么?没有这些信息,您的问题很难回答。请记住,我们无法从这里看到您的显示器,而且大多数人的 ESP 还不够强大,无法在全世界范围内工作。 :) 请编辑您的问题并添加有关您遇到的具体问题的更多信息,以便我们尝试帮助您。
  • 抱歉耽搁了。 “它对我不起作用”意味着该方法执行时没有任何错误。而且什么也没发生。我看到没有文件添加到“路径”目录中。
  • @Ken White,抱歉我没有提供详细信息。现在一切都好起来了(我希望)

标签: c# .net windows hotfix


【解决方案1】:

解决方案很简单——我们应该复制子(捆绑)更新而不是主(父)更新。

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

这正是 IUpdate 接口页面的备注部分中指出的答案:

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

"如果 BundledUpdates 属性包含 IUpdateCollection,则某些 更新的属性和方法可能仅在 捆绑更新,例如 DownloadContents 或 CopyFromCache。”

【讨论】:

    猜你喜欢
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-26
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多