ショートカットを作成してリンク先をソフトの実行ファイルにするとき、普通にターゲット指定を
string targetPath = Directory.GetCurrentDirectory() + "\hoge.exe" ;
のようにしているのですが、これだと当該フォルダをコピーして、中にあるショートカットで起動させた場合、コピー元の実行ファイルがターゲットとなってしまいます。
フォルダをコピーしても、ショートカットのリンク先が相対リンクとなるようにすることはできないでしょうか。
追記
ショートカットを作るコードはごく一般的なもので次を参考にしています。
コピーした後でショートカットを作ればいいのでは?
リンク先を既にあるショートカットで起動させたいという趣旨です。
既にあるショートカットではなく、新しく作ればいいという主旨です。
どうしてもと言うならこちら。OS の機能なので。
https://www.projectgroup.info/tips/Windows/comm_0051.html
そのショートカットを作るコードを提示しましょう
または、コピーをファイルコピーの API で行うのではなく、ファイルを読み書きして自前でコピーすれば追随しません。
返信ありがとうございます。
ターゲットファイルは同一フォルダ内に依存する数多くのdllがあるため単独でコピーしても意味をなさないのです。
ショートカットのリンク先を絶対指定ではなく、実行ファイルから見ての相対位置にすることは、やはり難しいのかなという気がしてきております。
また、OSの設定を変更する方法は、ソフトの頒布を堰堤としているため難しい状況です。
コピーした後でショートカットを作るという方法を取るのが普通です。
ということをしたくなかったため、お伺いしました。
やはり無理なのだということが分かりました。
それだけでも、情報として助かりました。
ありがとうございました。
ソフトの頒布ならインストーラー作ってそこでショートカットを作成すればいいのでは?
これがZuishinさんの言う「後から作る」に当てはまるかと
すいません、説明が不足していました。あるサイトのアカウントを分ける手段として一括してコピーするという操作をするものです。メインのソフトの部分はインストーラーでショートカットを作成しております。そのソフトをコピーする際に作ったショートカットが使えないため質問しました。
なお、頒布やアカウントの作成等については質問外となります。
説明が不足しているので対応も大雑把になりますが、そのままコピーするのではなく、一度アーカイブすればいいでしょう。
ある前提さえ解決すれば簡単に解決する問題は多いですが、その前提を絶対のものと固執して秘匿する人が多いので、解決法もいびつになりがちです。
今回もショートカットの作り方ではなく、コピーの仕方を変えるだけで簡単に解決しそうです。具体的なコピーの仕方についてはすでに二種類書きました。二番目の方法、つまりアーカイバを使う方法は、プログラミングしない人向けです。プログラミングする人、つまり関数やループを知っている人は、あなたの切って捨てた最初の方法でも簡単に解決できます。
あくまでもユーザーのアクセシビリティ向上のために、ユーザーが実行ファイルにアクセスせずにショートカットを作成できないかと思ったところです。前提としてユーザーにコピーをさせるということで考えていましたが、確かに、コピー操作も面倒でしょうから、プログラム的に行えばもしかすると簡単なのかも知れません。ソフトにコピーの機能を付けて、そのときにコピー先をターゲットとしたショートカットを作るだけで済みます。ただ、そうすると、もともとのソフトをマルチアカウント対応にした方が楽になってしまいます。そこまでのコンセプトはないもので、簡単に相対パスのショートカットを作成できないかと思ったところです。この主旨に沿うような方法がもしかするとあるのかと思って質問させていただきました。ありがとうございました。
インストーラーがなくて自分でコピーする時点でアクセシビリティ落ちていますので、本末転倒です。Chocolatey のスクリプトなどを作るのが良いのではないかと思います。
まず主旨が間違っているため、たとえ実現する方法があったとしても検討の余地があります。学習ならともかく、複数の処理を何度も繰り返すのがわかっていてスクリプトを作らず Explorer を使わせる理由がありません
なるほどChocolateyですか。その方法まで考え及びませんでした。確かにそうすると趣旨に合いそうです。ありがとうございました。
回答2件
あなたの回答
tips
プレビュー