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 symlink タスク (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 として記録され、link --> subdir/foo.bar として復元されます。


それを修正する方法については、これまで DMG を作成したことがないため、今は深みがありません。ただし、シンボリック リンクはアプリケーション フォルダへのリンクであり、アプリケーションにコピーするためにアプリケーションをドラッグするための便利なリンクをユーザーが持っているように、単純にそこにある場合がありますそのため、そのリンクは厳密には必要ない場合があります。誰かがこれに光を当てることができるなら、してください。

于 2012-04-16T04:07:17.733 に答える