Установка обновлений Windows в автономном режиме с использованием WUApiLib
Мне нужна помощь в автоматизации установки обновлений Windows с помощью файла wsusscn2.cab, доступного на веб-сайте Microsoft.
Настройка, на которую я пытаюсь реализовать это, немного странная, поэтому я думаю, что не могу найти много помощи с помощью Google.
У меня есть 8 машин под управлением Windows 7 SP1, которые не могут быть подключены к Интернету, поэтому я загружаю файл wsusscn2.cab от Microsoft, который, очевидно, содержит список всех выпущенных обновлений и сами фактические обновления / исправления.
Код, который у меня есть, позволяет мне использовать WUApiLib для чтения CAB-файла и установить из него, какие обновления не установлены на компьютере. В настоящее время возвращается список из 149 обновлений, которые доступны, но не установлены.
При проверке функции.IsDownloaded() каждого обновления / исправления возвращается False, а код ошибки - orcFailed.
Это настолько близко, насколько я могу себе представить, как я уже говорил с моей установкой, Google не предоставляет мне большой помощи, так как большинство людей упоминают такие вещи, как WSUS на Windows Server, что невозможно, или другие онлайн-решения, которые также что-то, что я не могу сделать.
Вот фрагмент кода, который у меня есть, я новичок в этой библиотеке, и это мой первый крупный проект на C#, поэтому любая помощь будет высоко оценена, так как я чувствую, что в данный момент бьюсь о кирпичную стену. Может ли кто-нибудь также подтвердить, действительно ли обновления хранятся в CAB-файле, когда я пытался извлечь их, чтобы посмотреть, что внутри, но безрезультатно?
Большое спасибо!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using WUApiLib;
using System.Management;
using Shell32;
namespace SoftwareUpdateTool
{
class InstallUpdates
{
public static void Getupdates()
{
UpdateSession updateSession = new UpdateSession();
UpdateServiceManager updateSM = new UpdateServiceManager();
IUpdateService updateService = updateSM.AddScanPackageService("Offline Sync Service", "C:\\Users\\Admin\\Desktop\\Windows Updates\\wsusscn2.cab");
IUpdateSearcher searcher = updateSession.CreateUpdateSearcher();
IUpdateInstaller installer = updateSession.CreateUpdateInstaller();
searcher.ServerSelection = ServerSelection.ssOthers;
searcher.ServiceID = updateService.ServiceID;
ISearchResult SearchResults = searcher.Search("IsInstalled=0");
UpdateCollection foundUpdates = SearchResults.Updates;
Console.WriteLine("Number of updates found are " + foundUpdates.Count);
installer.Updates = foundUpdates;
int updateCount = 0;
foreach (IUpdate x in foundUpdates)
{
Console.WriteLine(x.Title + " " + x.IsDownloaded.ToString());
Console.WriteLine("Error Code >> " + ConvertCode(installResult.GetUpdateResult(updateCount).ResultCode.ToString()));
updateCount += 1;
}
}
private static string ConvertCode(string errorCode)
{
switch (errorCode)
{
case "0":
errorCode = errorCode + " not started";
break;
case "1":
errorCode = errorCode + " in progress";
break;
case "2":
errorCode = errorCode + " succeeded";
break;
case "3":
errorCode = errorCode + " suceeded with errors";
break;
case "4":
errorCode = errorCode + " failed";
break;
case "5":
errorCode = errorCode + " aborted";
break;
}
return errorCode;
}
}
}
1 ответ
Возможно, вы не загружаете обновления из CAB-файла перед установкой. При загрузке обновлений через Интернет я использовал что-то вроде.
`/// <summary>
/// Downloads list up updates or update
/// </summary>
/// <param Update Collection="uCollection"></param>
public void Download(UpdateCollection uCollection)
{
//creates new Downloader
UpdateDownloader uDownloader = new UpdateDownloader();
//Sets Downloader updates
uDownloader.Updates = uCollection;
//Downloads the updates
uDownloader.Download();
}`
Вы должны проверить, загружены ли они, затем попробуйте запустить установщик
РЕДАКТИРОВАТЬ
От: https://msdn.microsoft.com/en-us/library/windows/desktop/aa387290(v=vs.85).aspx
Файл Wsusscn2.cab является CAB-файлом, подписанным Microsoft. Этот файл содержит информацию об обновлениях, связанных с безопасностью, которые публикуются Microsoft. Компьютеры, которые не подключены к Интернету, можно сканировать, чтобы увидеть, присутствуют или требуются эти обновления, связанные с безопасностью. Файл Wsusscn2.cab не содержит самих обновлений безопасности, поэтому вы должны получить и установить все необходимые обновления, связанные с безопасностью, другими способами. Новые версии файла Wsusscn2.cab периодически выпускаются по мере выпуска, удаления или изменения связанных с безопасностью обновлений на сайте Центра обновления Windows.
Wsusscn2.cab не содержит актуальных обновлений, которые он только что использовал для сканирования. Вам нужно будет загрузить все эти обновления, а затем запустить установщик для загруженных обновлений. Вы можете использовать что-то вроде http://download.wsusoffline.net/ чтобы помочь вам получить обновления.