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
сценарий.