我正在跟进本指南 http://developer.apple.com/library/mac/#documentation/Carbon/Conceptual/ProvidingUserAssitAppleHelp/authoring_help/authoring_help_book.html#//apple_ref/doc/uid/TP30000903-CH206-CIHEAADH向公众提供一些苹果帮助。我工作的应用程序多年来一直内置帮助,但它突然停止工作,并且没有对应用程序 plist 或任何帮助文件进行任何更改。我们假设苹果改变了一些东西,所以我确保它符合苹果要求的规格。当我说“不起作用”时,我的意思是我们的链接使用NSHelpManager
将打开帮助查看器,但返回未找到的页面。
清单上需要检查的事项:
- 页面顶部有一个具有正确名称的锚点
- 文件夹结构是前面链接的那篇文章中内容的副本
- 我们正在重新索引帮助页面
- 我们确实清除了所有缓存
这是我们用来打开帮助页面的代码:
NSString *locBookName = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleHelpBookName"];
[[NSHelpManager sharedHelpManager] openHelpAnchor:@"mypage" inBook:locBookName];
在这种情况下,我们会有一个页面<a name="mypage"></a>
位于顶部,因此它应该正确链接。我们的脚本如下:
hvfix(清除所有缓存):
rm -rf ~/Library/Caches/com.apple.help*
rm -rf ~/Library/Preferences/com.apple.help*
rm -rf ~/.Trash/*
killall helpd
defaults write com.apple.helpindexer IndexAnchors YES
updatehelpindex.sh(重新生成索引)
#!/bin/sh
hiutil -C -f MyApp.help/Contents/Resources/English.lproj/MyApp.helpindex
MyApp.help/Contents/Resources/English.lproj/
我们进行构建,将文件夹放入应用程序文件夹中,以便注册应用程序和帮助。我们甚至尝试重新启动或注销/登录,但仍然一无所获。我知道这是一个非常繁琐的过程,但我们所做的一切似乎都不起作用。我们想要做的就是使用NSHelpManager
打开帮助锚。毫无疑问,这在 10.6+ 中有效,就像许多其他应用程序一样(一些报告表明它在 10.7/8 中不起作用,但它们一定是不真实的)。
Ideas?
编辑(文件夹结构):
它位于 MyProj.help 文件夹中,该文件夹位于整个 Cocoa 项目的一个名为“help”的子目录中。
+ Contents
Info.plist
+ Resources
+ shrd
(a bunch of image files)
+ English.lproj
MyProj.helpindex
index.html
+ css
+ pgs
+ gfx
文件夹中的内容正如预期的那样,“css”中有一堆 CSS 文件,“pgs”有 HTML 页面,“gfx”有图像文件。