お世話になります。
調べたのですが、分からないため教えてください。
実現したいこと
実行するexeのみを外に出して、
関係ないファイルをフォルダにまとめて、勝手に触らせないようにしたい
(dll等のファイルをまとめてフォルダに入れたい)
現状
以下画像のようなフォルダ構成になります。
デバッグすると、binフォルダの中の
「」というフォルダの中に以下のようなフォルダ構成になります。
希望の構成
◆理想1:Otherフォルダにdll等をまとめる
→ちゃんと動作するかが心配
◆理想2:RectMapフォルダにまとめ、外側のexeから実行させる
試したこと
理想2を作ろうとしました。
exeと同階層にあるファイルをサブフォルダにまとめたい
https://qiita.com/wifrstfasnriov/questions/3e72b380ab9e70c6a730
- フォームアプリの新規プロジェクト「appX_launcher」を作成
- Form1.csやForm1.designer.csを削除してソースファイルはProgram.csだけにする。
- Programe.csのMain()に、サブフォルダのappX.exeを起動する処理を書く
(相対パス指定も可能だが、ランチャー自身の実行パス情報を基準にした絶対パスに変換した方が確実)
(作業ディレクトリを指定するにはProcessStartInfoで設定する必要あり)
4. appX.exeを起動させたらランチャーは終了させれば、ユーザー視点ではショートカットとほぼ変わらないソースコードの中身の部分はせいぜい10行前後くらいでしょうし、アイコンも自分で設定できます。
上記を参考に、WPFにて対応しました。
1.RectMapのソリューション内に別プロジェクト「RectMapStart」を作成。
2.App.xaml の「StartupUri」を削除
3.以下のように記載
cs
1 //Processオブジェクトを作成する2 System.Diagnostics.Process p = new System.Diagnostics.Process();3 //起動する実行ファイルのパスを設定する4 var FilePath= System.IO.Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "RectMap\\RectMap.exe");5 p.StartInfo.FileName = FilePath;6 //起動する。プロセスが起動した時はTrueを返す。7 bool result = p.Start();
できないこと
1.デバッグの時にできるフォルダが「net6.0-windows」になる
→他の名称に変えたい
デバッグ時前のコマンドとかを入れたら自動で変えられそうですが
どうしたら良いものか…。
2.RectMapStart.exeからRectMap.exeを起動させたい
(ソリューション内にプロジェクト2つ入れてどうやるのか)
RectMapStartのプロジェクトのビルド時基本出力パスを
「C:\Users\NowUser\source\repos\RectMap\bin」
にしたところ、binのnet6.0-windowsの中にRectMapStart.exeが出来ました。
net6.0-windowsの外側に出したいけれど、どうしたら良いか分かりません…。
3.この方法で何か問題が出るでしょうか?
実際に実行させたいのはRectMap.exeなので、
それのショートカットのような形でもいいのですが
上手く動かなかったときが怖いと思いこのようなやり方を検討しています。
回答よろしくお願いいたします!
補足情報(FW/ツールのバージョンなど)
Visualstudio2022 V17.6.3
.NET 6.0 C#
0 コメント