我为Windows开发了一个Qt应用程序,并且使用qhc集合文件以qch格式生成了帮助文件。使用QHelpEngine将帮助嵌入到应用程序中。帮助文件放在与应用程序可执行文件相同的文件夹中,这适用于开发版本。
但是当我们在" Program Files"中部署应用程序时使用WiX安装程序,文档工作但搜索功能失败,我收到警告:
virtual void fulltextsearch :: clucene :: QHelpSearchIndexWriter :: run(): 由于CLucene异常而失败。
在开发版本中,似乎CLucene在帮助文件文件夹中创建了一些索引文件。这里它不能,因为帮助文件在安装文件夹中,标准用户不能在那里写。
错误是否与缺少索引文件创建权限相关?如何让CLucene写入User文件夹呢?
由于
答案 0 :(得分:3)
我通过查看助手源代码找到了解决方案。
CLucene始终将其缓存写入与.qhc
相同的文件夹中 Qt助手通过不直接打开主qhc来处理这个问题。它将其复制到用户配置文件(在Windows下,在C:\User\Username\appdata\Local\assistant
中),相应地更新.qch
路径,然后打开此用户特定文件。
我实施了相同的方法,它就像一个魅力。您甚至不必在安装程序中部署qhc
,您可以通过使用不存在的路径调用QHelpEngine
直接创建一个,并使用{{注册qch
个文件1}}
所以我找到的最好方法是:
registerDocumentation
,该文件可能不存在,但位于存在且可写的文件夹中。我为此使用了QHelpEngine
。如果需要,Qt将创建一个.qhc文件,或者再次打开它。QStandardPaths::CacheLocation
engine->registeredDocumentations()
以下是我的代码,其中包含一个qch文件:
engine->registerDocumentation