- PR -

ProgramFiles フォルダのパス名の取得方法を教えてください。

1
投稿者投稿内容
ひろ
会議室デビュー日: 2003/01/23
投稿数: 9
投稿日時: 2003-02-28 23:12
表題の通りなのですが、ある実行中のプログラムがProgramFiles にある場合は相対パスでなんとかなるのですが、installer クラスから派生したクラスの中から、あるファイルをインストール先の ProgramFiles のフォルダの下に作成したいので、できれば絶対パスで得たいのですが、なにかそういった情報を得るクラスってありますでしょうか?

わかりましたら教えてください。
karajan
ベテラン
会議室デビュー日: 2002/07/05
投稿数: 89
投稿日時: 2003-03-01 13:41
System.Environment.GetFolderPathメソッド
パラメータEnvironment.SpecialFolder.ProgramFiles

で取得できます。
ひろ
会議室デビュー日: 2003/01/23
投稿数: 9
投稿日時: 2003-03-01 16:46
ありがとうございました。だいぶ助かりました。

あとできましたら、インストール先のフォルダ名をインストール中に取得できる方法が分かりましたらありがたいのですが、どなたかご存じないでしょうか?

Environment.SpecialFolder.ProgramFiles からフォルダを得た場合、どうしてもインストール先フォルダを決め打ちしないといけなくなってしまうので、インストールする人がインストール先フォルダを変えた場合でも対応できるようにしたいのです。

セットアッププロジェクトのアプリケーションフォルダの
DefaultLocation プロパティの値がインストール中にとれるといいのかな?と思っています。ちなみに、DefaultLocation プロパティの値は、ProgramFilesFolder]\[ProductName]と設定しています。

何か分かりましたらよろしくお願いします。
Tog
ベテラン
会議室デビュー日: 2002/06/09
投稿数: 76
投稿日時: 2003-03-01 23:34
>ある実行中のプログラムがProgramFiles にある場合は相対パスでなんとかなるのですが

実行中のプログラムの絶対パスを取得する方法でできませんか?

Application.StartupPath
ひろ
会議室デビュー日: 2003/01/23
投稿数: 9
投稿日時: 2003-03-03 09:44
> 実行中のプログラムの絶対パスを取得する方法でできませんか?
>
> Application.StartupPath

この方法も試しては見たのですが、インストール中ですと、Windows インストーラのモジュールが動作している
Windows\system32
が取得されてしまうようです。

インストール先のフォルダはわからないんでしょうか?
ひろ
会議室デビュー日: 2003/01/23
投稿数: 9
投稿日時: 2003-03-03 11:29
自己レスですが。

ちょっと強引ですが、
string strPath = Assembly.GetExecutingAssembly().Location.ToString();
strPath = Path.GetDirectoryName(strPath);

でアセンブリが含まれているフォルダの絶対パスを取得して、
StreamWriter objWriter = new StreamWriter(Path.Combine(strPath, "filename"));

で強引に作りたいファイルを作成しました。

アンインストール時にこのファイルを削除するコードを追加してうまくいきそうです。

いろいろと助かりました。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)