【发布时间】:2011-01-22 03:17:43
【问题描述】:
我需要构建一个相当简单的应用程序,但它需要同时在 PC 和 Mac 上运行。
它还需要作为独立的桌面应用程序在光盘或 USB 驱动器上进行再分发。
最初我认为 AIR 非常适合此应用(它满足所有 API 要求),但困难在于使其可分发,因为应用程序需要安装 AIR 运行时才能运行。
我遇到了Shu Player 作为一个选项,因为它似乎能够将 AIR 运行时与应用程序打包并进行(静默?)安装。
然而,这似乎违反了 Adobe (as outlined here) 的 T&C,所以我不确定其合法性。
另一种选择可能是锌,但我尚未对其进行测试,因此我不确定它是否符合要求。
你会推荐或建议我检查什么?
非常感谢任何建议
编辑: 还有一些关于单声道用法的讨论(尽管没有真正的结论): Here 和 Here
EDIT2: Titanium 也可能符合要求,会检查一下。
还有来自任何人的 cmets 吗?
EDIT3(一年过去了):我发布这个问题实际上已经快一年了,但似乎有些人仍然不时遇到它,甚至提供一个答案,甚至是一年后。
我想我会更新一下这个问题。最后我没有去尝试 tcl/tk 选项,时间限制和对不同操作系统版本兼容性的不确定性导致我放弃了它作为一个选项。
我确实尝试了 Titanium 一段时间,但虽然第一印象还不错,但它们确实比任何东西都在推动移动平台,而且恕我直言,桌面实现有点缺乏关注。还有一些关于某些操作系统上的一些 Visual Studio 运行时问题的报告(现在不记得细节了)。所以也丢弃了。
我最终选择了XULRunner。两大诉求是:
- Firefox 似乎可以在大多数操作系统版本上开箱即用,所以我认为 XULRunner 应用程序可能与大多数系统兼容。为我节省了大量测试,结果发现它确实在所有平台上都运行得非常好,没有一个关于无法启动应用程序的报告
- 这是 Javascript 宝贝!语言学习曲线很小。要解决的主要问题是额外的 xpcom 接口是什么以及如何查询它们。
不利的一面:
- 我认为排除错误有时是一项艰巨的任务,venkman 调试器有点笨拙,最终使用控制台比什么都重要。
- sqlite 界面是桌面应用程序的一项重要资产,但当某些东西不起作用时,我经常很难找到相关的错误信息 - 也许我做错了。
- 花了一点时间才弄清楚如何将应用程序打包为适用于 PC 和 Mac 的独立应用程序。最后一种方法是拥有一个“shell”mac 应用程序和一个 shell pc 应用程序和几个“编译”脚本,这些脚本将复制 shell 并将自定义源代码添加到它的正确位置。
- 对于某些人来说,最后一个潜在问题是,由于 xulrunner 应用程序的性质,您的源代码将随应用程序一起部署,您可以根据需要使用混淆,但如果您想保护您的知识产权,请记住这一点
总而言之,跨平台应用的绝佳平台。我强烈推荐它。
【问题讨论】:
-
关于使用 Mono 的答案在哪里消失了?我再也看不到了...
-
投反对票?真的吗?过了这么久?
-
感谢 Ben 提供如此详细的帖子。直到今天,XULRunner 对您的效果如何?它仍然适用吗?
-
@yatg 这是 5 年前的事了,对于一个技术项目来说,那是一段很长的时间。我不久前完成了那个项目,并在很久以前就移交了。我会重新开始,肯定会调查任何新选项——我什至不确定它是否仍然由 Mozilla 积极维护,或者他们是否已经继续前进。
-
@yatg 您可能想在 Raymond Camden 的博客上阅读这篇关于使用 Electron raymondcamden.com/2015/07/23/… 构建的应用程序的最新帖子 - 它非常有见地,而且更及时
标签: cross-platform air desktop-application packaging xulrunner