我想在Ruby中使用WIN32OLE下载Windows更新。我遇到了一些问题,知道要使用哪个COM对象来获取IUpdateDownloader::BeginDownload 所需的参数。目前,我可以执行下载更新的同步版本,但我真的想知道如何使用异步方法。
现在可以使用以下内容:
require 'win32ole'
muSession = WIN32OLE.new('Microsoft.Update.Session')
availableUpdates = muSession.CreateUpdateSearcher().Search("IsInstalled=0 and Type='Software'").Updates
muUpdateColl = WIN32OLE.new('Microsoft.Update.UpdateColl')
availableUpdates.each do |update|
update.AcceptEula()
muUpdateColl.Add(update)
end
updateDownloader = WIN32OLE.new('Microsoft.Update.Session').CreateUpdateDownloader()
updateDownloader.Updates = muUpdateColl
downloadResult = updateDownloader.Download()
但是,我想使用“BeginDownload()”而不是调用“Download()”。如何实例化IDownloadProgressChangedCallback(例如)。我认为在C#中这样做可能很明显,但是使用WIN32OLE,我不知道如何创建对象。