none
VB2008 ClickOnceアプリケーションのexe.configのパス RRS feed

  • 質問

  • 現在、仕事でVB2008 ClickOnceアプリケーションを開発しています。

    顧客の環境で営業所が複数あるため、各営業所にDBサーバーを配置し、

    それぞれの営業所は自営業所のDBサーバーへ接続するように

    考えています。

    ところが、顧客の役員のみ自由に接続先を切り替えてアプリケーションを

    使用したいというご要望を頂きました。

    接続先はexe.configに保持していますが、ClickOnceアプリケーションは

    クライアント側でのインストールパスが動的であるため、のexe.configのパス

    が不規則な文字列のフォルダになっています。

    アプリケーションの機能としてexe.configの接続文字列を書きかえる機能を

    実装するためにexe.configのファイルパスを取得したいのですが、

    取得の方法はあるのでしょうか?

    ご教授お願いいたします。


    ////////////////////////////////////////////////////////// nagano-item Mail: nagano@item-jp.com //////////////////////////////////////////////////////////
    2011年4月25日 9:38

回答

  • ClickOnce の場合、app.config は ClickOnce のデータディレクトリに保管されるので、アセンブリとは異なる場所にあります。データディレクトリを取得するには、System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory で取得できます。(データディレクトリはバージョンアップ時に引き継がれるため、app.config に対しておこなった変更がバージョンアップ時にも反映されます)

    System.Windows.Forms.Application 等からでも取得できます。(実行環境によって返される値がかわるようになっているため、ApplicationDeployment より便利に利用できます)

    • 回答としてマーク naga0318 2011年4月28日 0:27
    2011年4月25日 23:49

すべての返信

  • >実装するためにexe.configのファイルパスを取得したいのですが、

    直接のお答えとしては
    System.Reflection.Assembly.GetEntryAssembly().Location
    で実行ファイルパスを取得できますので、それに「.config」を付け足せば良いということになります。

    が、設定ファイルの項目へは
    Properties.Settings.Default.[設定項目名」
    という形でアクセスできます(更新も可能です)ので、
    こちらを使用されたほうがスマートかもしれませんので、ご検討されてみてはいかがでしょうか。

    (上記はWinForm,WPFともに使用できます。)

    以上、よろしくお願い致します。
    2011年4月25日 12:14
  • ClickOnce の場合、app.config は ClickOnce のデータディレクトリに保管されるので、アセンブリとは異なる場所にあります。データディレクトリを取得するには、System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory で取得できます。(データディレクトリはバージョンアップ時に引き継がれるため、app.config に対しておこなった変更がバージョンアップ時にも反映されます)

    System.Windows.Forms.Application 等からでも取得できます。(実行環境によって返される値がかわるようになっているため、ApplicationDeployment より便利に利用できます)

    • 回答としてマーク naga0318 2011年4月28日 0:27
    2011年4月25日 23:49
  • 早速のご教授ありがとうございます。

    ご教授いただいた内容で早速実装を試みてみます。


    ////////////////////////////////////////////////////////// nagano-item Mail: nagano@item-jp.com //////////////////////////////////////////////////////////
    2011年4月25日 23:53
  • >K.Takaokaさん
    ご指摘ありがとうございました。

    >nagano-itemさん、K.Takaokaさん
    書き換え可能なuser.configの位置の取得は
    System.Deployment.Application.ApplicationDeployment.CurrentDeployment.DataDirectory
    を使うべきでした。
    exe.configと混同しておりました。
    申し訳ありません。

    書き換えはいつも
    Properties.Settings.Default
    から行っていたもので、不慣れなまま返信してしまってすみませんでした。

    大変勉強になりました。
    ありがとうございました。
    2011年4月26日 4:32
  • K.Takaokaさん

    返信遅くなってすみません。

    ご教授いただいた方法で取得することができました。

    大変勉強になりました。

    ありがとうございました。


    ////////////////////////////////////////////////////////// nagano-item Mail: nagano@item-jp.com //////////////////////////////////////////////////////////
    2011年4月28日 0:29