我正在按照本指南公开一些 Apple 帮助。我工作的应用程序多年来一直内置帮助,但它突然停止工作,并且没有对应用程序 plist 或任何帮助文件进行任何更改。我们假设苹果改变了一些东西,所以我确保它符合苹果要求的规格。当我说“不工作”时,我的意思是我们使用的链接NSHelpManager
将打开帮助查看器,但会返回一个未找到的页面。
检查清单的事项:
- 页面顶部有一个名称正确的锚点
- 文件夹结构是之前链接的那篇文章的副本
- 我们正在重新索引帮助页面
- 我们确实清除了所有缓存
这是我们用来打开帮助页面的代码:
NSString *locBookName = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleHelpBookName"];
[[NSHelpManager sharedHelpManager] openHelpAnchor:@"mypage" inBook:locBookName];
在这种情况下,我们会有一个<a name="mypage"></a>
顶部带有 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/
我们进行构建,将文件夹放入 Applications 文件夹以注册应用程序 + 帮助。我们甚至尝试重新启动或注销/登录,但仍然一无所获。我知道这是一个非常繁琐的过程,但我们尝试的任何方法似乎都不起作用。我们想要做的就是使用NSHelpManager
来打开一个帮助锚。毫无疑问,这在 10.6+ 中有效,因为许多其他应用程序都这样做(一些报告表明它在 10.7/8 中无效,但它们一定是不真实的)。
想法?
编辑(文件夹结构):
它位于 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' 有图像文件。