构建dmg文件时出现BUILD FAILED错误

时间:2012-04-16 03:31:26

标签: java macos deployment ant dmg

我正在使用ant工具构建dmg文件,但是我在构建时遇到错误。

build.xml的摘录:

            ...
            <copy todir="${mac.build.dir}/.background">
                    <fileset file="${basedir}/build/installer/images/mac/dmgBackground.png"/>
            </copy>

            <symlink link="${mac.build.dir}/Applications" overwrite="true" resource="/Applications" />
            <echo message="Create tmp.dmg"/>
            <exec executable="hdiutil" failonerror="true">
                    <arg line="create -srcfolder '${mac.build.dir}' -volname '${mac.volname}' -fs HFS+ -fsargs '-c c=64,a=16,e=16' -format UDRW '${target}/tmp.dmg'"/>
            </exec>
            ....

错误:

**BUILD FAILED
D:\DevProjects\spark\build\build.xml:761: Could not launch ln: java.io.IOException: Cannot run program "ln": CreateProcess error=2, The system cannot find the file specified**

我使用脚本调用dmg文件创建为ant installer.mac

我是否正在调用正确的目标或错误的目标?

1 个答案:

答案 0 :(得分:2)

Ant的symlink任务不适用于Windows变体。

参见SO:Ant symlink task on windows (NTFS)

来自Ant documentation

  

管理基于Unix的平台上的符号链接。可用于创建单个链接,删除链接,从属性文件创建多个链接,或创建描述指定目录中链接的属性文件。默认情况下不会覆盖现有链接。

......和......

  

限制:由于Java没有直接支持处理符号链接,因此该任务通过比较规范路径和绝对路径来划分它们。在非unix系统上,这可能会导致误报。 此外,在命令行上命令ln -s不是有效命令的任何操作系统都将无法使用action =“single”或action =“recreate”。 Action =“record “和action = delete应该仍然有效。最后,Java中缺少对符号链接的支持意味着所有链接都被记录为规范资源名称的链接。因此链接:链接 - &gt; subdir / dir /../ foo.bar将记录为link = subdir / foo.bar并恢复为链接 - &gt;子目录/ foo.bar


至于如何解决这个问题,我现在已经不在了,因为我之前从未制作过DMG。但是,符号链接是指向Applications文件夹的链接,可能只是在那里,以便用户有一个方便的链接将应用程序拖动到应用程序中。因此,该链接可能不是严格必要的。如果有人能对此有所了解,请做。