我正在使用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
我是调用正确的目标还是错误的目标?
最佳答案
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中缺少对符号链接的支持,这意味着所有链接都记录为指向规范资源名称的链接。因此,链接:link-> subdir / dir /../ foo.bar将记录为link = subdir / foo.bar并恢复为link-> subdir / foo.bar
至于如何解决它,我现在已经超出了深度,因为我以前从未做过DMG。但是,符号链接是指向“应用程序”文件夹的链接,并且可以简单地位于该链接中,以便用户可以方便地将应用程序拖动到该链接,以便将其复制到“应用程序”中。因此,该链接可能并非严格必要。如果有人可以照亮它,请这样做。