none
ClickOnceを使っての必須コンポーネントの配布について RRS feed

  • 質問

  • OS:WindowsXP
    開発ツール:Visual C# 2005 Express Edition

    ファイルサーバーにClickOnceアプリケーションと必須コンポーネントを置き、そこからクライアントに配布しようと考えています。

    例えば、アプリケーション1を作成し、必須コンポーネントとして.NET FrameWork2.0を付属させます。
    アプリケーション1プロジェクトのプロパティ→「発行」ペイン→「必須コンポーネント」
    と設定ダイアログを進め、そこで「アプリケーションと同じ場所から必須コンポーネントをダウンロードする」にチェックしました。※1

    そして、発行を試みたところ以下のようにサーバー上にファイル(フォルダ構造)が展開されました。
    例1
    root -+-アプリケーション1_1_0_0_0
          |
          +-dotnetfx (←.NET FrameWork2.0が入っている)

    しかし、このままではroot直下にバージョンフォルダがたくさんできてしまうため、以下のようにフォルダを一枚挟んで発行しました。
    この指定は発行場所の指定で行っています。

    例2
    root -アプリケーション1-+-アプリケーション1_1_0_0_0
                        |
                        +-アプリケーション1_1_0_0_1
                        |
                        +-dotnetfx

    しかし、このままではアプリケーション2を作成した際、「dotnetfx」フォルダが2箇所に分散してしまいます。
    そこで、以下のようにしたいと考えました。
    例3
    root -+-アプリケーション1-+-アプリケーション1_1_0_0_0
          |                |
          |                +-アプリケーション1_1_0_0_1
          |         
          +-アプリケーション2---アプリケーション2_1_0_0_0
          |
          +-dotnetfx

    こ のように必須コンポーネントを別の場所からダウンロードするように指定するには※1のところで「次の場所から必須コンポーネントをダウンロード」にチェッ クを入れ、ダウンロード場所を指定するとMSDNに書いてありましたので、この場合ですとrootフォルダを指定して発行を試みました。しかし、フォルダ 構造は例2のように展開されてしまいます。

    必須コンポーネントはアプリケーションで共有したいのです。例3のように展開するためにはどうすれば良いでしょうか。

    2006年5月30日 11:30

すべての返信

  • 解決しました。といってよろしいのかどうかはわかりませんが、意図した通りの配布ができるようになりました。

    「次の場所から必須コンポーネントをダウンロード」でダウンロード先※1を指定する際、フォルダ名に全角文字を使っていたのがまずかったようです。

    ただし、どうしても以下の作業をする必要性が出てきます。

    必須コンポーネントは必ず発行場所※2で指定したフォルダ以下にアップロードされます。

    そのため、※1での指定先が※2で指定したのと違う場合、手動で必須コンポーネントを移動させる必要があるようです。これはなんともめんどくさい。

    しかし、一番のストレスの原因は発行するたびに必須コンポーネントをアップロードするはめになるということです。(ソフトウェアは数百KBくらいなのに必須コンポーネントが数百MBあるため発行に時間がかかる)

    ClickOnceは通常の使い方をする分にはとても便利ですが、ちょっと道をはずれるとあれもできないこれもできないというように不便な部分が浮き彫りになる機能だなぁと思いました。

     

     

    2006年6月1日 1:58