在已安装的应用程序中使用Qt帮助文件

时间:2015-09-23 20:06:49

标签: windows qt clucene

我为Windows开发了一个Qt应用程序,并且使用qhc集合文件以qch格式生成了帮助文件。使用QHelpEngine将帮助嵌入到应用程序中。帮助文件放在与应用程序可执行文件相同的文件夹中,这适用于开发版本。

但是当我们在" Program Files"中部署应用程序时使用WiX安装程序,文档工作但搜索功能失败,我收到警告:

  

virtual void fulltextsearch :: clucene :: QHelpSearchIndexWriter :: run():   由于CLucene异常而失败。

在开发版本中,似乎CLucene在帮助文件文件夹中创建了一些索引文件。这里它不能,因为帮助文件在安装文件夹中,标准用户不能在那里写。

错误是否与缺少索引文件创建权限相关?如何让CLucene写入User文件夹呢?

由于

1 个答案:

答案 0 :(得分:3)

我通过查看助手源代码找到了解决方案。

CLucene始终将其缓存写入与.qhc

相同的文件夹中

Qt助手通过不直接打开主qhc来处理这个问题。它将其复制到用户配置文件(在Windows下,在C:\User\Username\appdata\Local\assistant中),相应地更新.qch路径,然后打开此用户特定文件。

我实施了相同的方法,它就像一个魅力。您甚至不必在安装程序中部署qhc,您可以通过使用不存在的路径调用QHelpEngine直接创建一个,并使用{{注册qch个文件1}}

所以我找到的最好方法是:

  1. 使用.qhc文件的路径创建registerDocumentation,该文件可能不存在,但位于存在且可写的文件夹中。我为此使用了QHelpEngine。如果需要,Qt将创建一个.qhc文件,或者再次打开它。
  2. 对所有.qch文件进行迭代,并检查它们是否已使用QStandardPaths::CacheLocation
  3. 进行注册
  4. 对于未注册的文档,请使用engine->registeredDocumentations()
  5. 注册
  6. 您的引擎已准备好使用
  7. 以下是我的代码,其中包含一个qch文件:

    engine->registerDocumentation