Как мне реализовать IDownloadProgressChangedCallback с использованием WIN32OLE?
Я хотел бы загрузить обновления Windows, используя WIN32OLE в Ruby. Я сталкиваюсь с проблемами, зная, какой 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()
Однако вместо вызова "Download()" я хотел бы использовать "BeginDownload()". Как я могу создать экземпляр IDownloadProgressChangedCallback (например). Я думаю, что это может быть очевидно в C#, но, используя WIN32OLE, я не уверен, как создать объект.