我应该如何使用帮助:Snow Leopard .help 包中的 URL?

Posted

技术标签:

【中文标题】我应该如何使用帮助:Snow Leopard .help 包中的 URL?【英文标题】:How should I use a help: URL in a Snow Leopard .help bundle? 【发布时间】:2010-03-10 15:49:24 【问题描述】:

我正在为我的应用程序编写帮助手册。根据需要,我在我的应用程序的 info.plist 中有 CFBundleHelpBookName 和 CFBundleHelpBookFolder 键,并且我正在使用新的 Snow Leopard .help 包格式作为帮助手册。 Rehearsals.help/Contents/Info.plist 中的各种键都按照Apple Help Programming Guide 填充。正如预期的那样,当用户从帮助菜单中选择“排练帮助”时,我的帮助书的索引页面(在适当的本地化版本中,目前只有英文)在帮助查看器中打开。

但实际上(当前)捆绑包中有两个 html 文件,index.html 和 support.html。我的理解是,如果我将命名锚点放在一个文件中,如下所示:

<a name="support"></a>

然后我可以从另一个文件链接到它,如下所示:

<a href="help:anchor=support bookID=info.thaesofereode.Rehearsals.help">Support</a>

但是这不起作用。也没有:

<a href="help:anchor=support">Support</a>

帮助查看器显示一个工作表,上面写着“帮助查看器无法打开此内容。”,如果我在帮助查看器中打开调试日志并得到帮助,我会看到:

10/03/2010 15:46:02 HelpViewer[2049]    decidePolicyForNavigationAction: help:anchor=support%20bookID=info.thaesofereode.Rehearsals.help
10/03/2010 15:46:02 HelpViewer[2049]    decidePolicyForNavigationAction: apple-help-content:help:anchor=support%2520bookID=info.thaesofereode.Rehearsals.help
10/03/2010 15:46:02 HelpViewer[2049]    willSendRequest: <NSMutableURLRequest apple-help-content:help:anchor=support%2520bookID=info.thaesofereode.Rehearsals.help>
10/03/2010 15:46:02 HelpViewer[2049]    Start loading apple-help-content:help:anchor=support%2520bookID=info.thaesofereode.Rehearsals.help
10/03/2010 15:46:02 HelpViewer[2049]    Starting search for query "support" with return port com.apple.helpd-26755
10/03/2010 15:46:02 helpd[2050] PID #2050 - received message #0: HPDStartMessageID
10/03/2010 15:46:02 helpd[2050] Process 2049 requested callback at com.apple.helpd-26755 and sent query: HPDQuery 289928762.026442: "support" in ("info.thaesofereode.Rehearsals.help") of types ("com.apple.HelpArticleResult") with limit 0
10/03/2010 15:46:02 helpd[2050] Run loops which have yet to start: (
    "com.apple.kbPlugin",
    "com.apple.helpbookPlugin"
)
10/03/2010 15:46:02 helpd[2050] Search for this query has been delayed 1 time: support
10/03/2010 15:46:02 helpd[2050] Delayed search for query: "support"
10/03/2010 15:46:02 helpd[2050] Starting help articles search for query: "support"
10/03/2010 15:46:02 helpd[2050] Query 289928762.026442 returned results: (
)
10/03/2010 15:46:02 helpd[2050] Response sent to port: com.apple.helpd-26755
10/03/2010 15:46:02 helpd[2050] Query finished: HPDQuery 289928762.026442: "support" in ("info.thaesofereode.Rehearsals.help") of types ("com.apple.HelpArticleResult") with limit 0
10/03/2010 15:46:02 helpd[2050] Response sent to port: com.apple.helpd-26755
10/03/2010 15:46:02 HelpViewer[2049]    <HVAnchorURLHandler: 0x1002bde50> finished query: HPDQuery 289928762.026442: "support" in ("info.thaesofereode.Rehearsals.help") of types ("com.apple.HelpArticleResult") with limit 0
10/03/2010 15:46:02 HelpViewer[2049]    <HVAnchorURLHandler: 0x1002bde50> has results: 

10/03/2010 15:46:02 HelpViewer[2049]    Found no results for support

如何在 Snow Leopard 帮助包中正确使用帮助:URL? (不用说,我知道使用相对文件 URL 的解决方法,这很有效,但我希望帮助锚在应用程序内获得上下文帮助和链接。)

【问题讨论】:

【参考方案1】:

事实证明,这些锚点和 URL 是正确的,并且有助于自动索引内容,但它会保持积极的缓存。如果帮助手册更新时没有增加版本号,则它不会扫描新的锚点。

rm -rf ~/Library/Caches/com.apple.help*
killall helpd

【讨论】:

谢谢!我花了好几个小时弄清楚为什么我们的锚不工作 - 杀死缓存是诀窍。【参考方案2】:

您是否使用“帮助索引器”实用程序的首选项中选择的锚索引来索引您的帮助书? 好像锚不是索引...

当然,从那以后我也会检查我的主播名字,但我在做或说它们 10 分钟后就忘记了……

【讨论】:

感谢@drstrangeP0rk。 helpd 应该自动索引 Snow Leopard 中的帮助书籍,但我继续使用启用锚索引对其进行索引。没有不同。而且我确定锚匹配:-)

以上是关于我应该如何使用帮助:Snow Leopard .help 包中的 URL?的主要内容,如果未能解决你的问题,请参考以下文章

如何停止安装在 Mac Snow Leopard 上的 Jenkins?

如何让 RabbitMQ 在 Snow Leopard 64 位上运行?

如何在 Mac OS X Snow Leopard 上启用 mysqli?

NSToolbar 在 Leopard 和 Snow Leopard 中看起来不同

在 Mac OSX Snow Leopard 上托管 Web 服务

用于Snow Leopard上的mercurial的GUI