1

因此,根据我对 Mac 打包的一点了解,我看到启动的实际程序是在 Info.plist 中的 CFBundleExecutable 键下定义的程序。

<key>CFBundleExecutable</key>
<string>JavaApplicationStub</string>

现在,如果 /APP/Content/MacOS/JavaApplicationStub 不是 chmodded +x,我的应用程序将无法工作(它只是默默地失败而没有做任何事情,这很痛苦!)。很公平,我猜它是不可执行的。但是,如果您从不支持文件上的 +x 属性的地方复制应用程序,那将是一个大问题;例如 windows、fat32 USB 密钥、CDROM、网站、zip 文件等...

在这些情况下我可以做些什么来使应用程序能够运行?手动设置执行位不是一种选择。

至少会有人从 CD 上运行 Mac 应用程序!

4

2 回答 2

1

@mxcl,这行得通,有点,谢谢。但是,您需要在 Mac 上运行 hdiutil :(。此外,它会混淆应用程序的路径......有些文件(如 db 文件)不在 .app 文件夹中,因此是不包含在 .DMG 文件中。

我在 Windows 上构建,并且该应用程序正在部署到可移动媒体。重点是避免安装任何东西。

该应用程序也可以在 Windows 上运行,因此磁盘根目录上的 mac.app 旁边有一个 windows .exe。还有一个两个版本的应用程序共享的 sqllite.db 文件。多平台很难:/

于 2008-10-21T07:45:23.797 回答
1

我认为您唯一的选择是将 APP 捆绑包打包成 DMG 文件或 tar。

DMG 更标准,并且与使用 tar 或 zipping 一样容易。我们使用的命令行是:

hdiutil create -srcfolder Last.fm.app -format UDZO -imagekey zlib-level=9 -scrub Last.fm.dmg

您可以从任何平台 tar,(即使是 Windows,如果您安装 cygwin,或使用 GNU 独立,http ://gnuwin32.sourceforge.net/packages/gtar.htm )

tar cf app.tar app_directory

使用 gzip 压缩:

tar czf app.tar.gz app_directory
于 2008-10-21T07:10:01.043 回答