apps/myapp/
と他のいくつかのdllを使用するファイルmyapp.exe
を含むmyapp.dll
というディレクトリがあります。
Linuxで行うように、これをディレクトリにシンボリックリンクしたいとします。
bin/myapp.exe
=> verylongpath/myapp/myapp.exe
。つまり、mklink bin/myapp.exe verylongpath/bin/myapp.exe
を使用します
Myappを実行すると、dllが見つからないと叫んでいます。これは、exeがそれ自体の作業ディレクトリに対して実行されないことを意味します。それは私を悲しくさせます。
どういうわけか私はそれをints自身の作業ディレクトリで実行させることができますか?ありがとう!
おそらく行う必要があるのは、EXEファイル自体ではなく、アプリケーションバイナリを含むフォルダをシンボリックリンクすることです。 Windowsでディレクトリシンボリックリンクを作成するための最も互換性のある方法は、ジャンクションポイントを使用することです。
次のコマンドを使用します。
mklink /J ..\link\target\dir linkdirname
ターゲットへのパスは、現在の場所を基準にすることができます。ドライブ文字から始める必要はありません。
これが完了すると、linkdirnameにCDを挿入して、通常どおりアプリケーションを実行できるようになります。
参考:ディレクトリシンボリックリンクに/ Dオプションを使用することもできますが、私の経験では、ジャンクションポイントがはるかに優れた(そしてより互換性のある)方法で動作することがわかりました。一部のアプリケーションは、ディレクトリのシンボリックリンクにだまされませんが、ジャンクションで問題なく動作します。たとえば、Steamでは、ジャンクションを使用してゲームフォルダーを再ルーティングできますが、ディレクトリシンボリックリンクを使用することはできません。
myapp.bat(linkの代わりに)を作成し、以下のコマンドを書き込むことができます:
call "absolute\path\of\your\excecutable" %*
例:
@call "C:\Program Files (x86)\GnuWin32\bin\openssl.exe" %*
上記の行をopenssl.batショートカットが必要な場所に保存します。