ContentIndexer не работает в Windows 10 Creators Update

Я работаю над старым приложением Windows 8, которое использует ContentIndexer из Windows для создания индекса для поисковой системы в приложении. Это работало хорошо, пока я не обновил свой компьютер до последнего Обновления Создателей. Я получаю исключение при вызове функции AddAsync:

var indexer = Windows.Storage.Search.ContentIndexer.GetIndexer();
await indexer.AddAsync(content);

Исключение: Исключение из HRESULT: 0x80040DB4

Внутреннее исключение равно нулю:(

Для информации, исключение возникает только при развертывании приложения на компьютере с обновлением Creators. Он все еще работает на Windows 8 и Windows 10 с предыдущими обновлениями.

Я также попытался создать пустое приложение Windows 10 UWP, чтобы проверить, работает ли ContentIndexer, но оно тоже не удалось.

Есть ли у вас идея решить эту проблему?

Спасибо

1 ответ

Для информации, исключение возникает только при развертывании приложения на компьютере с обновлением Creators. Он все еще работает на Windows 8 и Windows 10 с предыдущими обновлениями.

Проблема заключается в Stream свойство контента недоступно. Странно, что если вы не установите Stream а также StreamContentType это будет работать! Я сообщу об этой проблеме соответствующей команде. В настоящее время одним из способов добавления контента в индексатор является то, что вы можете добавить индекс, используя IndexableContent,

public async static Task<string> AddAppContentFilesToIndexedFolder()
{
    var localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    var installDirectory = Windows.ApplicationModel.Package.Current.InstalledLocation;
    var outputString = "Items added to the \"Indexed\" folder:";
    var appContentFolder = await installDirectory.GetFolderAsync("appcontent-ms");
    var indexedFolder = await localFolder.CreateFolderAsync("Indexed", Windows.Storage.CreationCollisionOption.OpenIfExists);
    var files = await appContentFolder.GetFilesAsync();
    foreach (var file in files)
    {
        outputString += "\n" + file.DisplayName + file.FileType;
        await file.CopyAsync(indexedFolder, file.Name, Windows.Storage.NameCollisionOption.ReplaceExisting);
    }
    return outputString;
}

Для получения дополнительной информации вы можете обратиться к официальному образцу кода и выбрать Add app content files to be indexed сценарий.

Другие вопросы по тегам