Macos .移动媒体上的应用程序OSX包问题

Macos .移动媒体上的应用程序OSX包问题,macos,packaging,info.plist,Macos,Packaging,Info.plist,因此,从我对Mac打包的了解来看,实际启动的程序是在Info.plist中的CbundleExecutable键下定义的程序 <key>CFBundleExecutable</key> <string>JavaApplicationStub</string> CbundleExecutable JavaApplicationStub 现在,如果/app/Content/MacOS/JavaApplicationStub不是chmoded+x,我

因此,从我对Mac打包的了解来看,实际启动的程序是在Info.plist中的CbundleExecutable键下定义的程序

<key>CFBundleExecutable</key>
<string>JavaApplicationStub</string>
CbundleExecutable
JavaApplicationStub
现在,如果/app/Content/MacOS/JavaApplicationStub不是chmoded+x,我的应用程序就不能工作(它只是默默地失败,什么也不做,这很痛苦!)。 公平地说,我想这是不可执行的。但是如果你从某个文件上不支持+x属性的地方复制应用程序,这是一个大问题;例如windows、fat32 USB密钥、CD-ROM、网站、zip文件等

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


至少应该有人在CD上运行Mac应用程序

我认为您唯一的选择是将应用程序包打包到DMG文件或tar中

DMG更标准,就像使用焦油或拉链一样简单。我们使用的命令行是:

hdiutil create -srcfolder Last.fm.app -format UDZO -imagekey zlib-level=9 -scrub Last.fm.dmg
您可以从任何平台(即使是Windows,如果您安装cygwin或使用GNU standalone),使用tar

使用gzip压缩:

tar czf app.tar.gz app_directory

@mxcl,这很有效,有点,谢谢。但是,您需要在Mac上运行hdiutil:(。 此外,它还破坏了应用程序的路径…有些文件(如db文件)不在.app文件夹中,因此不包含在.DMG文件中

我是在windows上构建的,应用程序正在部署到可移动媒体上。关键是要避免安装任何东西


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

我将我的答案添加到了tar中。您希望从哪个平台执行此操作?最终的包不必只有.app文件。但是,如果您正在向公众分发文件,并且需要将文件放在其计算机上的.app文件夹之外,则应使用mpkg安装程序。我只是注意到了这些注释!:p编辑了文章以提供更多详细信息。如果运行CD,则应用程序很可能会以DMG形式出现。
tar czf app.tar.gz app_directory