- - PR -
ProgramFiles フォルダのパス名の取得方法を教えてください。
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-02-28 23:12
表題の通りなのですが、ある実行中のプログラムがProgramFiles にある場合は相対パスでなんとかなるのですが、installer クラスから派生したクラスの中から、あるファイルをインストール先の ProgramFiles のフォルダの下に作成したいので、できれば絶対パスで得たいのですが、なにかそういった情報を得るクラスってありますでしょうか?
わかりましたら教えてください。 |
|
投稿日時: 2003-03-01 13:41
System.Environment.GetFolderPathメソッド
パラメータEnvironment.SpecialFolder.ProgramFiles で取得できます。 |
|
投稿日時: 2003-03-01 16:46
ありがとうございました。だいぶ助かりました。
あとできましたら、インストール先のフォルダ名をインストール中に取得できる方法が分かりましたらありがたいのですが、どなたかご存じないでしょうか? Environment.SpecialFolder.ProgramFiles からフォルダを得た場合、どうしてもインストール先フォルダを決め打ちしないといけなくなってしまうので、インストールする人がインストール先フォルダを変えた場合でも対応できるようにしたいのです。 セットアッププロジェクトのアプリケーションフォルダの DefaultLocation プロパティの値がインストール中にとれるといいのかな?と思っています。ちなみに、DefaultLocation プロパティの値は、ProgramFilesFolder]\[ProductName]と設定しています。 何か分かりましたらよろしくお願いします。 |
|
投稿日時: 2003-03-01 23:34
>ある実行中のプログラムがProgramFiles にある場合は相対パスでなんとかなるのですが
実行中のプログラムの絶対パスを取得する方法でできませんか? Application.StartupPath |
|
投稿日時: 2003-03-03 09:44
> 実行中のプログラムの絶対パスを取得する方法でできませんか?
> > Application.StartupPath この方法も試しては見たのですが、インストール中ですと、Windows インストーラのモジュールが動作している Windows\system32 が取得されてしまうようです。 インストール先のフォルダはわからないんでしょうか? |
|
投稿日時: 2003-03-03 11:29
自己レスですが。
ちょっと強引ですが、 string strPath = Assembly.GetExecutingAssembly().Location.ToString(); strPath = Path.GetDirectoryName(strPath); でアセンブリが含まれているフォルダの絶対パスを取得して、 StreamWriter objWriter = new StreamWriter(Path.Combine(strPath, "filename")); で強引に作りたいファイルを作成しました。 アンインストール時にこのファイルを削除するコードを追加してうまくいきそうです。 いろいろと助かりました。 ありがとうございました。 |
1