2009-10-15 17 views
5

大きなクリックワンアプリケーション(150MB、> 200個のDLL)を作成しています。インターバルのデバッグプロセスの一環として、DLLを1つだけ更新し、アプリケーション全体を再構築して再デプロイすることなくアプリケーションを再起動したいと思います。ClickOnceインストールでDLLを1つだけ更新するにはどうすればよいですか?

これは可能ですか?もしそうなら...どう?

質問の明確化: 2009年9月26日

私は全体のアプリケーションをダウンロードして、ローカルキャッシュから直接クライアント.EXEを起動した後に手動でクライアント上のDLLにパッチを適用することが可能であることを知っていますフォルダ。それはポイントではありません。 サーバでDLLを変更/追加する方法を知り、次回の起動時にすべてのクライアントに新しいDLLを取得させたいと思います。私は "このフォルダにDLLをコピーし、このテキストファイルを編集する"ということを探しています。私は特に行うは、サーバー上でクリック一回インストールを再構築または再展開したい...私はIDEでコンパイルした単一のDLLで手動でパッチを適用するだけです。

+1

Visual Studioでアプリケーションをビルドしてデバッグしても、ClickOnceパブリッシュ/デプロイメントプロセスは通常起動されません。アプリケーションのデバッグ方法を明確にしてください。 –

+0

私は彼がクライアントシステムのライブ環境でデバッグしていると思います。時には唯一のオプションです。 –

+1

単一のユーザーのマシンでデバッグしようとしているだけの場合は、デバッグバージョンをユーザーのデスクトップ上のフォルダにコピーして、ClickOnceを完全にスキップできますか? – codeConcussion

答えて

6

私は数日間これを使って戦ってきましたが、それはやり遂げることができますが、この解決策ではClickOnceはまだすべてのファイルをスキャンし、進行状況バーを表示します。ここで

は、私は、このパッチの適用方法を適用するために書かれているプロセスである...

(注)このプロセスは、展開をアップグレードするために一度クリックしての正確なコピーでの実行する必要があります。 (バージョン番号

  • は、パッチを適用したファイルを置き換えmageui(バージョン3.5以上と仮定するとVS2010)

  • 変更を使用して.exe.manifestアプリケーションファイルフォルダで

    ...

    1. オープンS )注意:ファイル名は.deploy Eg Control.DLLはcontrol.DLLになります。バージョン番号
    2. あなたのファイルがmageuiを使用してルートパス

      1. オープン.applicationのファイルで

      ファイルPFX

    3. ログイン&保存(バージョン3.5以上)
    4. の変更を展開します
    5. 最小必要バージョン番号を変更してください
    6. 上記で修正されたexe.manifestを選択してください。
    7. ログイン&保存ファイル

    コピー.applicationのアプリケーションファイルのフォルダ* 注:この手順は必須ではありませんが、ただ、関連するバックアップファイルを保持します。

    マニフェストファイルとパッチ付きライブラリをデプロイメント環境にコピーできるようになりました。

  • +0

    詳細情報をお寄せいただきありがとうございます。手順を詳しく説明していますので、この回答を解決策にしてください –

    +0

    私たちのアプリケーションでは、部分的なdll更新のためにプロジェクトの設定でFull-trustアプリケーションフラグを設定しなければなりませんネーミング – VMAtm

    1

    ClickOnceによって更新されたdllが決定されます。クライアントは150MBの完全なファイルをダウンロードする必要はなく、更新されたファイルのみをダウンロードします。欠点は、あなたはまだすべての150MBをアップロードする必要があります。

    私は、この方法で動作するClickOnceアプリケーションをお客様に提供しています。約40MBは常に同じです。特別な作業は必要ありません。

    +0

    +1:ここにも同じです。それは20分の展開ですが、私のクライアントが差分をダウンロードするには約10秒かかります。 –

    +0

    ええ、すべてのアップロードは、常に少し、すっごく吸う。リモートから展開すると(そしてクライアントがクリックすると、リポジトリが成長し、成長し、成長する...) –

    +0

    クライアントでの起動はそれほど問題ではありません。私は、実際に製品全体を再構築したり、一回限りのインストールセットを再構築したりせずに、個別にコンパイルしたDLLを1つだけ使用して、サーバー上のマスターファイルリストを修正する方法を知りたいと思います。私は "このDLLのコピーをサーバー上で探し、このテキストファイルを編集し、一度起動すると新しいDLLを使用して起動する"と答えています。 –

    0

    クライアントシステムのライブ環境で作業していると仮定すると、dllをインストールフォルダの前のdllにコピーすることでdllを置き換えることができます。私は、Windows XPでのクリックインストールの場所はC:\ Documents and Settings \ userprofile \ Local Settings \ Appsだと思います。

    +0

    これは単一のクライアントで機能します。私は解決策を探しています。どこのクライアントでも新しいDLLを入手できるように、私は直接アクセスできるサーバー上に1つのDLLを手動でパッチすることができます。 –

    2

    私はここで同じ問題を抱えています。 特定のファイルをclickOnceフォルダにコピーする必要があると思います。 MageUIで.manifestファイルと.applicationファイルを編集します。 両方のファイルのバージョン番号を進めます。 これについてはわかりませんが、クライアント側のClickOnceは変更されたファイルをダウンロードすることが予想されます。

    +2

    これは私のために働いたが、それは深刻な頭痛である。 ClickOnceのインストールを再構築して再デプロイするほうが簡単であることが判明しました。あまりにも悪い:( –

    関連する問題