我有一个独立的XULRunner应用程序,以前运行的是XULRunner 1.9.2(旧的,我知道)。我刚升级到XULRunner 33。
以前,当我在本地开发(MacBook Pro with Mac OS X 10.9.5)时,我经常在我的IDE和我的应用程序之间 Cmd + Tab 。 / p>
升级后,我无法再这样做了。我的桌面上仍然有一个窗口(如main.xul
中所定义),但它不再出现在我的 Cmd + Tab 列表中。我必须在桌面上“找到”它。
关闭窗口会退出应用程序等,而且我正在获取应用程序窗口的事实意味着我的main.xul
是正确的...但我不知道为什么会这样。< / p>
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<?xml-stylesheet href="chrome://my-app-name/skin/css/main.css" type="text/css"?>
<!DOCTYPE window SYSTEM "chrome://my-app-name/locale/main.dtd">
<window id="main" title="&window-title;" width="750" height="530" persist="width,height,screenX,screenY,sizemode" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<script><!-- MY APPLICATION CODE HERE --></script>
<keyset>
<key modifiers="accel" key="W" oncommand="window.close()"/>
<key modifiers="accel" key="Q" id="quit"/>
</keyset>
<toolbox>
<menubar>
<menu id="menu_file" label="File" hidden="true">
<menupopup>
<menuitem id="menu_FileQuitItem" key="quit" label="Quit" oncommand="goQuitApplication();"/>
</menupopup>
</menu>
</menubar>
</toolbox>
</window>
我已阅读Windows and menus in XULRunner教程:
XULRunner 1.9.2上的相同代码运行正常,我可以“激活”窗口。使用新的XULRunner,窗口标题在Mac OS X中显示为灰色,无法选择。
有关尝试什么的任何想法?
我不知道它是否有用,但是当我选择窗口时,我也习惯在OS X中获得一个菜单栏。即使现在,如果我点击窗口的标题栏,OS X显示的菜单栏也不会显示我的应用程序菜单。
答案 0 :(得分:2)
我不知道改变了什么,或者什么时候改变了,但这种行为在MDN上有所记录。
在Mac上,在运行完整的XULRunner应用程序之前,必须使用
--install-app
xulrunner命令行标志安装它。安装应用程序会创建OS X应用程序包:
该页面继续介绍了如何执行此操作的一些步骤,但我无法让它们使用现代XULRunner版本。
我能够让现代XULRunner版本完全正常工作的唯一方法是手动创建应用程序包。
在此示例中,我将使用MDN文档中引用的the "hello world" example。
第1步:
创建以下目录结构。
hello.app/
Contents/
MacOS/
Resources/
第2步:
Download the version of XULRunner runtime you want(我使用33),并提取XUL.framework
。
第3步:
将XUL.framework/Versions/Current/
内的所有文件复制到hello.app/Contents/MacOS/
。
同时将dependentlibs.list
复制到hello.app/Contents/Resources/
第4步:
下载the example files,并将以下文件和目录复制到hello.app/Contents/Resources/
。
chrome/
defaults/
application.ini
chrome.manifest
第5步:
由于another issue,xulrunner
二进制文件不会自动找到它应该的application.ini
。要解决这个问题,我们需要一个存根加载器,就像我之前写的那样。
#!/bin/sh
runpath="`dirname "$0"`"
contentsdir="`cd "$runpath"/.. > /dev/null && pwd`"
exec "$runpath/xulrunner" --app "$contentsdir/Resources/application.ini"
在hello
创建一个名为hello.app/Contents/MacOS/hello
的新文件,将上面的代码放在里面,并赋予它可执行权限(chmod +x hello
)。
第6步:
现在我们需要一个Info.plist
文件。这是我根据Deploying XULRunner示例创建的。请注意,CFBundleExecutable
必须与上面的存根加载程序文件名匹配。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>hello</string>
<key>CFBundleGetInfoString</key>
<string>1.0</string>
<key>CFBundleIconFile</key>
<string>app_icon.icns</string>
<key>CFBundleIdentifier</key>
<string>net.yourcompany.yourapplication</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>applicationName</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.0</string>
</dict>
</plist>
将此文件保存在hello.app/Info.plist
。
第7步:
在PkgInfo
创建一个名为hello.app/PkgInfo
的新文件,并将此文本放入其中。
APPL????
第8步:
您现在应该能够使用菜单和文档图标以及 Cmd + Tab 功能运行您的应用程序。您可以通过Finder或命令行打开它。
$ ./hello.app/Contents/MacOS/hello