ContentIndexer无法在Windows 10 Creators Update

时间:2017-08-23 16:10:21

标签: windows-8 windows-10-universal indexer content-indexing creators-update

我正在开发一个旧的Windows 8应用程序,该应用程序使用Windows中的ContentIndexer为应用程序中的搜索引擎构建索引。在我将计算机更新到最后的创建者更新之前,它运行良好。我在调用AddAsync函数时遇到异常:

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

例外是:来自HRESULT的异常:0x80040DB4

内部异常为null:(

有关信息,仅当我在具有Creators更新的计算机上部署我的应用程序时才会引发异常。它仍在使用以前的更新在Windows 8和Windows 10上工作。

我尝试创建一个空白的Windows 10 UWP应用程序,以查看ContentIndexer是否正常工作但它也失败了。

你有任何想法解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:0)

  

有关信息,仅当我在具有Creators更新的计算机上部署我的应用程序时才会引发异常。它仍在使用以前的更新在Windows 8和Windows 10上运行。

问题是内容的Stream属性不可用。奇怪的是,如果你没有设置StreamStreamContentType有效,那就行了!我会将此问题报告给相关团队。目前,向索引器添加内容的一种解决方法是,您可以使用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;
}

有关详情,请参阅official code示例并选择Add app content files to be indexed方案。