首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ant压缩Mac OS .app

使用Ant压缩Mac OS .app
EN

Stack Overflow用户
提问于 2011-11-02 02:47:59
回答 3查看 1.4K关注 0票数 1

我已经构建了一个Java/Swing应用程序,并使用Ant成功地将其部署到Windows (使用launch4j)和Mac (使用jarbundler ant task)。然而,我想使用Ant来压缩.app和其他文件,但是因为.app只是一个特殊的文件夹,所以我遇到了一些问题。这是我的Ant目标:

代码语言:javascript
复制
    <property name="jarbundler.dir" location="lib/jarbundler" />
    <taskdef name="jarbundler" 
         classname="net.sourceforge.jarbundler.JarBundler"
         classpath="${jarbundler.dir}/jarbundler-2.2.0.jar"/>
    <target name="app">
        <jarbundler dir="release" name="MobilityCollector" mainclass="org.eclipse.jdt.internal.jarinjarloader.JarRsrcLoader" jar="mc.jar" icon="img/icon.icns"/>
        <zip destfile="release/MobilityCollector_MacOSX.zip">
            <zipfileset dir="img" prefix="img/"/>
            <zipfileset dir="release/MobilityCollector.app" prefix="MobilityCollector.app"/>
        </zip>
    </target>

以下是问题所在:

代码语言:javascript
复制
<zip destfile="release/MobilityCollector_MacOSX.zip">
     <zipfileset dir="img" prefix="img/"/>
     <zipfileset dir="release/MobilityCollector.app" prefix="MobilityCollector.app"/>
</zip>

问题是,当我运行这个应用程序时(在zippig并解压缩之后),它会永远在dock中弹跳,如果我点击它,它会立即关闭。我认为这可能是权限问题,但权限与原始应用程序相同(压缩前)。

由于.app是一个特殊的文件夹,我需要用另一种方式压缩它吗?我试着按照FailedDev建议的方式压缩,但还是发生了。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-03-14 03:28:56

问题出在Ant Zip任务捆绑了.app/Contents/MacOS/JavaApplicationStub时。文件权限设置为644。此文件需要是可执行的。您可以通过指定以下内容来修复此问题:

代码语言:javascript
复制
<zip destfile="My-app.zip" level="9">
    <zipfileset filemode="755" dir="basedir" includes="My.app/**/*" />
</zip>

当您将文件模式更改为非默认值755时,您将把JavaApplication存根设置为可执行文件,这将停止任务栏中的弹跳图标并实际启动您的应用程序。

如果这不能解决您的问题,您可以尝试使用mac上运行的控制台应用程序启动应用程序,并查看日志显示的内容。

票数 1
EN

Stack Overflow用户

发布于 2011-12-23 16:58:21

我在压缩.app包时遇到了同样的问题。我发现在OS命令行上使用压缩实用程序在.app上工作得很好。因此,我目前的解决方案基于使用此工具,而不是ant任务:

代码语言:javascript
复制
<exec executable="zip" dir="${basedir}/target">
  <arg value="-r" />
  <arg value="My-app.zip" />
  <arg value="My.app" />
</exec>

这将在目录${basedir}/target的命令行上执行命令zip -r My-app.zip My.app

票数 1
EN

Stack Overflow用户

发布于 2011-11-02 03:13:21

documentation中:

资源集合用于选择要存档的文件组。

仅在Ant1.7之前,并已被支持为嵌套元素。

所以你可以使用任何你想要的集合,例如:

代码语言:javascript
复制
<fileset dir="release" includes"MobilityCollector.app/*">
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7971341

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档