|
.NET TIPS ClickOnceアプリのディレクトリ・パスを取得するには?[2.0のみ、C#、VB]デジタルアドバンテージ 一色 政彦2006/09/22 2006/09/22 更新 |
![]() |
|
|
|
ClickOnceで配置したアプリケーション(以降、ClickOnceアプリ)は、自動的にClickOnce独自のアプリケーション・ストア(以降、ClickOnceキャッシュ領域)に格納される。このClickOnceキャッシュ領域は、ユーザーごとに存在する「C:\Documents and Settings\<ユーザー名>\Apps\2.0」フォルダの配下にあり、その中でさらにアプリケーションごとのフォルダに分けられて存在する。そのため、どのディレクトリ・パスにClickOnceアプリが存在するのかというのは、開発者が前もって知ることはできない(つまり、実行時に調べる必要があるのだ)。
実際にClickOnceアプリのディレクトリ・パスを調べるには、次の手順を実行すればよい。
- 実行中のメイン・アセンブリのフル・パスを取得する
- フル・パスからディレクトリ・パス部分を抽出する
具体的には、次のようなコードになる。
|
||
| ClickOnceアプリのディレクトリ・パス部分を取得するサンプル・プログラム(上:C#、下:VB) |
まず1の手順を行うために、Assemblyクラス(System.Reflection名前空間)のGetEntryAssemblyメソッドを使ってメイン・アセンブリ(Assemblyオブジェクト)を取得し、そのLocationプロパティから実行されているClickOnceアプリのフル・パスを取得している。これについて詳しくは、「TIPS:実行ファイルのパスを取得するには?」を参考にしてほしい。
次にPathクラス(System.IO名前空間)の静的メソッドGetDirectoryNameを使ってフル・パスからディレクトリ・パス部分を抽出している。これについての詳細は、「TIPS:パス文字列からディレクトリ・パス部分を取り出すには?」を参考にされたい。
なおこの方法以外にも、Applicationクラス(System.Windows.Forms名前空間)の静的プロパティStartupPathからもClickOnceアプリのディレクトリ・パスは取得できる。
あとは、取得したClickOnceアプリのディレクトリ・パスをコンソールに出力しているだけだ。
ちなみに、従来のVisual Basic .NET(2002/2003)では、次のコード例のように、Assemblyクラスをコード内に記述する際、誤ってAssemblyキーワードと判別されないように角カッコ([ ])で囲む必要があった(詳しくは「TIPS:C#やVB.NETでキーワードを識別子として使用するには?」を参照してほしい)。
Dim asm As [Assembly] = [Assembly].GetEntryAssembly()
しかしVisual Basic 2005では、上記のサンプル・プログラムで示されているように角カッコは不要である(恐らくVBコンパイラの仕様が改善されたのだろう)。
|
なお、ClickOnceで配布したアプリケーションの各ファイルは、ClickOnceアプリのディレクトリ・パスの配下に格納される。従って、通常のファイルは本稿のように取得したディレクトリ・パスの配下のファイルを取り扱えばよいわけだが、データ・ファイル(.XMLファイルや.MDBファイルなど)だけは別のデータ・ディレクトリに格納される。データ・ディレクトリのパスの取得方法は「TIPS:ClickOnceデータ・ディレクトリのパスを取得するには?」にて紹介する。![]()
| 利用可能バージョン:.NET Framework 2.0のみ カテゴリ:Windowsフォーム 処理対象:ClickOnce 使用ライブラリ:Assemblyクラス(System.Reflection名前空間) 使用ライブラリ:Pathクラス(System.IO名前空間) 関連TIPS:実行ファイルのパスを取得するには? 関連TIPS:パス文字列からディレクトリ・パス部分を取り出すには? 関連TIPS:C#やVB.NETでキーワードを識別子として使用するには? 関連TIPS:ClickOnceデータ・ディレクトリのパスを取得するには? |
|
||||||||||||||||||||||||||||
| 更新履歴 | |
|
| 「.NET TIPS」 |
TechTargetジャパン
- Kinectが切り開く“夢の近未来” (2012/2/2)
日本を含めた世界中でKinect for Windowsセンサー商用版とSDK正式版がリリース。未来のコンピューティングはどう変化するのか? - 3つの視点でネイティブと.NETの適材適所を考察 (2012/1/31)
アプリ開発は「ネイティブ」と「.NET」、どちらが最良? その問いには「適材適所」と答えるしかない。では、“適所”は一体どこかを考察する - SQL Azure Data Sync入門 (2012/1/30)
SQL Azure/SQL Serverデータベース間のデータ同期を簡単に実現するサービスとは? その仕組みや使用手順を解説 - Windows Phoneアプリ市場の現状を分析する (2012/1/27)
Windows Phone のアプリ・ストアに日々登録されている多種多様なアプリ。カテゴリ別のアプリ数は? 市場の現状を明らかにする
|
|
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -


