我正在按照本指南公开一些Apple的帮助.我工作的应用程序已经内置了多年的帮助,但它突然停止工作,并且没有对应用程序plist或任何帮助文件进行任何更改.我们假设Apple改变了一些东西,所以我确保它符合Apple要求的规格.当我说"不工作"时,我的意思是我们的链接使用NSHelpManager将打开帮助查看器,但带回一个找不到的页面.
要查看清单的事情:
这是我们用来打开帮助页面的代码:
NSString *locBookName = [[NSBundle mainBundle] objectForInfoDictionaryKey: @"CFBundleHelpBookName"];
[[NSHelpManager sharedHelpManager] openHelpAnchor:@"mypage" inBook:locBookName];
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我们有一个<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
Run Code Online (Sandbox Code Playgroud)
updatehelpindex.sh(重新生成索引)
#!/bin/sh
hiutil -C -f MyApp.help/Contents/Resources/English.lproj/MyApp.helpindex
MyApp.help/Contents/Resources/English.lproj/
Run Code Online (Sandbox Code Playgroud)
我们进行构建,将文件夹放入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
Run Code Online (Sandbox Code Playgroud)
在文件夹中正是如预期的那样,'css'中有一堆CSS文件,'pgs'有HTML页面,'gfx'有图像文件.
在向系统注册HelpBook时,沙盒影响HelpViewer目录搜索的方式似乎是一个错误(如本错误报告中所述),这完全解释了为什么它出现在10.7和10.8,而不是10.6和更早版本.即便是Apple的NSAlertTest也会受到影响.不幸的是,由于错误报告在本文发布时尚未解决,因此没有可行的解决方案,但我运行的少数测试已确认NSHelpManager平局忽略了我机器上的沙盒帮助plist.
| 归档时间: |
|
| 查看次数: |
1114 次 |
| 最近记录: |