Anurag__ Ответов: 0

Некоторые из накопительных обновлений & feature не дают url-адреса загрузки (windows 10).


Я создал код с помощью классов Iupdate, до windows 8.1 он работает нормально.
Но в windows 10 feature updates & некоторые накопительные обновления не имеют url-адреса загрузки.
Любое решение будет полезно.
Заранее спасибо.

Что я уже пробовал:

Используемые API-интерфейсы Iupdate classes, IupdateCollection и т. д.

Richard MacCutchan

Ваш вопрос не совсем ясен. Если у вас есть проблема с каким-то кодом, то, пожалуйста, покажите коды и четко объясните, какая ошибка возникает.

Anurag__

тап_п()
{
IUpdateSession *updateSession = NULL;
IUpdateSearcher *updateSearcher = NULL;
ISearchResult *searchResult = NULL;
IUpdateCollection *updates = NULL;
IUpdateDownloadContentCollection *pDownUrl = NULL;
IUpdateDownloadContent *downloadContent = NULL;
HRESULT res;
int ret = 1;
длинный счет;
res = CoInitializeEx(NULL, 0);
if (FAILED(res)) {
HandleError(L"не удалось инициализировать COM", res);
возврат 1;
}

res = CoCreateInstance(CLSID_UpdateSession, NULL, CLSCTX_INPROC_SERVER, IID_IUpdateSession, (LPVOID *)&updateSession);
if (FAILED(res)) {
HandleError(L"не удалось создать сеанс обновления", res);
Гото очистка;
}

res = updateSession->CreateUpdateSearcher(&updateSearcher);
if (FAILED(res)) {
HandleError(L"не удалось создать поисковик обновлений", res);
Гото очистка;
}

res = updateSearcher->put_IncludePotentiallySupersededupdates(VARIANT_TRUE);
if (FAILED(res)) {
HandleError(L"не удалось установить параметры поиска", res);
Гото очистка;
}

Критерии BSTR = SysAllocString(L"IsInstalled=1 или IsHidden=1");
res = updateSearcher->Search(критерии, &searchResult);
SysFreeString(критерии);
if (FAILED(res)) {
HandleError(L"не удалось выполнить поиск обновлений", res);
Гото очистка;
}

res = searchResult->get_Updates(&updates);
if (FAILED(res)) {
HandleError(L"не удалось получить список обновлений из результата поиска", res);
Гото очистка;
}

LONG updateCount;
res = updates->get_Count(&updateCount);
if (FAILED(res)) {
HandleError(L"не удалось получить счетчик обновлений", res);
Гото очистка;
}

for (LONG i = 0L; i < updateCount; ++i)
{
IUpdate *update = NULL;
IStringCollection *updateKBIDs = NULL;
боол innerError = истина;
res = updates->get_Item(i, &update);
if (FAILED(res)) {
HandleError(L"не удалось получить элемент обновления", res);
перейти innerCleanup;
}

res = update->get_KBArticleIDs(&updateKBIDs);
if (FAILED(res)) {
HandleError(L"не удалось получить список идентификаторов статей kb", res);
перейти innerCleanup;
}
res = update->get_DownloadContents(&pDownUrl);
если(сменил(ВИЭ))
{
BSTR url;
res = pDownUrl->get_Count(&count);
res = pDownUrl->get_Item(1, &downloadContent);
if(FAILED(res))
{
HandleError(L"не удалось получить url article ID count", res);
//перейти innerCleanup;
}
еще
{
res = downloadContent->get_DownloadUrl(&url);
if(FAILED(res))
{
//перейти innerCleanup;
}
еще
{
с std::wcout &ЛТ;&ЛТ; л"URL-адрес" в < в< адрес &ЛТ;&ЛТ; л':' &ЛТ;&ЛТ; функция std::епси;
SysFreeString(url);
}
}
}
Длинный kbIDCount;
res = updateKBIDs->get_Count(&kbIDCount);
if (FAILED(res)) {
HandleError(L"не удалось получить KB article ID count", res);
перейти innerCleanup;
}

for (LONG j = 0L; j < kbIDCount; ++j) {
BSTR kbID;
res = updateKBIDs->get_Item(j, &kbID);
if (FAILED(res)) {
HandleError(L"не удалось получить идентификатор статьи KB", res);
перейти innerCleanup;
}
с std::wcout &ЛТ;&ЛТ; л"КБ" &ЛТ;&ЛТ; kbID &ЛТ;&ЛТ; л':' &ЛТ;&ЛТ; функция std::епси;
SysFreeString(kbID);
}

BSTR updateTitle;
res = update->get_Title(&updateTitle);
if (FAILED(res)) {
HandleError(L"не удалось получить заголовок обновления", res);
перейти innerCleanup;
}
с std::wcout &ЛТ;&ЛТ; л" " &ЛТ;&ЛТ; updateTitle &ЛТ;&ЛТ; функция std::епси &ЛТ;&ЛТ; функция std::епси;
SysFreeString(updateTitle);

innerError = ложь;
innerCleanup:
updateKBI

Richard MacCutchan

Пожалуйста, добавьте код, правильно отформатированный, в ваш файл. вопрос так что все это видят. Кроме того, вам все равно нужно включить подробную информацию о том, что происходит не так и где в коде возникает проблема.

Anurag__

Привет Ричард,
Я думаю, что там есть ограничение на слово, поэтому я не могу видеть полный код,
позвольте мне проверить какой-нибудь другой метод.

Anurag__

Я получил этот код по следующей ссылке
https://gist.github.com/apsun/b471c2e11dab94ad690d

где я добавил этот код

res = update->get_DownloadContents(&pDownUrl);
если(сменил(ВИЭ))
{
BSTR url;
res = pDownUrl->get_Count(&count);
res = pDownUrl->get_Item(1, &downloadContent);
if(FAILED(res))
{
HandleError(L"не удалось получить url article ID count", res);
//перейти innerCleanup;
}
еще
{
res = downloadContent->get_DownloadUrl(&url);
if(FAILED(res))
{
//перейти innerCleanup;
}
еще
{
с std::wcout &ЛТ;&ЛТ; л"URL-адрес" в < в< адрес &ЛТ;&ЛТ; л':' &ЛТ;&ЛТ; функция std::епси;
SysFreeString(url);
}
}

В приведенном выше разделе я не получаю url-адрес загрузки.

Anurag__

Я изменил некоторый код, теперь я получаю url-адрес загрузки.

Измененный код:-

res = update->get_BundledUpdates(&updatecol);
//res = updatecol->get_Count(&j);
res = updatecol->get_Item(0,&updateTmp);
res = update->get_KBArticleIDs(&updateKBIDs);
if (FAILED(res)) {
HandleError(L"не удалось получить список идентификаторов статей kb", res);
перейти innerCleanup;
}
res = updateTmp->get_DownloadContents(&pDownUrl);
если(сменил(ВИЭ))
{
BSTR url;
res = pDownUrl->get_Count(&count);
res = pDownUrl->get_Item(0, &downloadContent);
if(FAILED(res))
{
HandleError(L"не удалось получить url article ID count", res);
//перейти innerCleanup;
}
еще
{
res = downloadContent->get_DownloadUrl(&url);
if(FAILED(res))
{
//перейти innerCleanup;
}
еще
{
с std::wcout &ЛТ;&ЛТ; л"URL-адрес" в << л': в' < в< адрес &ЛТ;

Anurag__

Этот вышеописанный код прекрасно работает до windows 8.1
но в некоторых накопительных обновлениях и обновлениях функций не удается получить url-адрес загрузки в windows 10.

Anurag__

https://social.technet.microsoft.com/Forums/en-US/208e8a4c-f2fa-43f1-842a-a2b4de8b8dd3/some-of-the-cumulative-amp-feature-updates-not-giving-download-url-windows-10?forum=winserverwsus

0 Ответов