我有一个 Mac OS X 应用程序在 XULRunner 18.0 版上运行良好。
现在我正在将 XULRunner 版本从 18.0 升级到 30.0。已按照以下步骤操作:
- 下载了 XULRunner 30.0 运行时
- 从 XULRunner.Framework 目录中删除内容
- 复制了 XULRunner 30.0 Runtime 中下载的最新文件
- 现在启动应用程序时,我收到此错误:
Dyld 错误消息: 库未加载:@executable_path/libmozglue.dylib 引用自:/Users/USER/Desktop/*/MyApp.app/Contents/MacOS/xulrunner 原因:找不到图片
最佳答案
不幸的是,XULRunner 没有得到很好的支持,但我能够解决大部分错误并使其正常工作,除了一个问题,我稍后会讨论。
基本上,我能找到的有关如何构建 bundle 的所有说明都已过时。 Mozilla had to restructure the binaries due to changes in the Mac code signing layout requirements 。来自 this bug report经过一些试验和错误,我能够确定布局要求。
运行 Contents/MacOS/xulrunner
时我们可以看到的第一个错误来自命令行的二进制文件。
错误1:
dyld: Library not loaded: @executable_path/libmozglue.dylib
XUL.framework
的全部内容内容必须放入应用程序的 Contents/MacOS/
目录。因此,要修复此错误,请复制 XUL.framework/Versions/Current
中的所有内容。进入您的应用程序的MacOS
目录。
好的,现在二进制文件将运行。但是,这给我们带来了下一个错误,该错误也可以从命令行看到。
错误2:
Couldn't load XPCOM.
此错误不是描述性的,但要解决它,您只需复制 dependentlibs.list
文件(现在位于您的 MacOS
目录中)到您的 Contents/Resources/
目录。
错误3:
现在,当您通过命令行运行时,您将得到类似以下内容的内容。
Mozilla XULRunner 36.0.4
Usage: xulrunner [OPTIONS]
xulrunner APP-FILE [APP-OPTIONS...]
OPTIONS
--app specify APP-FILE (optional)
-h, --help show this message
-v, --version show version
--gre-version print the GRE version string on stdout
APP-FILE
Application initialization file.
APP-OPTIONS
Application specific options.
不幸的是,xulrunner
不会自动查找 application.ini
文件在 Contents/Resources
。为了测试,我们可以通过命令行强制它。像下面这样的东西就可以解决问题:
./MyApp.app/Contents/MacOS/xulrunner MyApp.app/Contents/Resources/application.ini
目前,我目前可以提供的最后一个问题的唯一可能的解决方案是加载一个螺柱,无论是 shell 脚本还是编译的二进制文件,执行运行 application.ini
所需的命令。在xulrunner
.
关于macos - XULRunner 30.0 升级,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24740782/