3

我想在 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()

但是,我不想调用“Download()”,而是使用“BeginDownload()”。如何实例化IDownloadProgressChangedCallback(例如)。我认为这样做在 C# 中可能很明显,但是使用 WIN32OLE,我不确定如何创建对象。

4

0 回答 0