0

我正在使用 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

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

4

1 回答 1

2

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

请参阅 SO:Windows 上的 Ant 符号链接任务 (NTFS)

来自Ant 文档

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

... 和 ...

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


至于如何修复它,我现在已经超出了我的深度,因为我以前从未制作过 DMG。但是,符号链接是指向 Applications 文件夹的链接,并且可能只是在那里,以便用户有一个方便的链接来将应用程序拖到以便复制到 Applications 中。因此,该链接可能不是绝对必要的。如果有人可以对此有所了解,请这样做。

于 2012-04-16T04:07:17.733 回答