2011-08-25 76 views
3

我正在編寫代碼以自動下載&安裝Windows更新。 (使用「tlbimped」wuapi.dll以及通過Internet找到的一些示例代碼)。Windows Update API c#:設置下載位置

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

項不爲空,則下載可進行但不能複製到指定的路徑

+2

歡迎來到StackOverflow。 「它對我不起作用」是沒用的。這到底是什麼意思呢?你收到錯誤信息嗎?如果是這樣,郵件的*確切*文本是什麼?沒有這些信息,你的問題很難回答。請記住,我們無法從這裏看到你的顯示器,而且大多數人的ESP還不夠強大,無法在整個世界中工作。 :)請編輯您的問題,並添加更多關於您正在使其工作的特定問題的信息,以便我們可以嘗試和幫助您。 –

+0

對不起延遲。 「它對我不起作用」意味着該方法執行時沒有任何錯誤。而且什麼都沒有發生。我看不到添加到「路徑」目錄中的文件。 –

+0

@Ken White,很抱歉,我沒有提供詳細信息。現在一切都好(我希望) –

回答

2

解決方法很簡單 - 我們應該複製子(捆綁)更新而不是主(父)一個

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。「