3

ClickOnce 機能を既存のアプリケーションに導入することは可能ですか?

シナリオは次のとおりです。バージョン 1.0 はクライアントのオンプレミスに既にインストールされています。ClickOnce 機能を備えた 1.1 にアップグレードする新しいセットアップ パッケージを送りたいと思います。

それを除けば、この種の問題に対する他の解決策はありますか?

PS: 元のアプリケーションは、Visual Studio 2005 (つまり、.NET 2.0) で開発されました。現在、 Visual Studio 2008を使用しています。

4

4 に答える 4

4

クライアントの環境で ClickOnce 配置を徹底的にテストしてください。詳細は省きますが、ClickOnceには多くの問題があります。私は 3.5 年間 ClickOnce アプリケーションをサポートしてきましたが、マニフェストに関する多くの問題に遭遇しました。更新プログラムが正しくインストールされるように、サンドボックス ストレージ フォルダーを手動で削除しなければならないなどです。 MSDN フォーラムやその他の場所にはいくつかの問題があり、その多くは Visual Studio 2005 から公開されているため、MS は解決したくないようです。

また、.NET 3.5 SP1 より前の ClickOnce で問題が発生する可能性があることに注意してください。クライアント マシンによって認識されるCAからの独自のソフトウェア展開証明書がない場合、Visual Studio は、作成から 1 年間有効期限が切れる「一時的な」証明書 (*.pfx) を使用します。それ以降の更新リリースはおそらくインストールされず、証明書の有効期限に関する恐ろしいメッセージがユーザーに表示されます。Microsoft は .NET 3.5 SP1 でこれを修正しましたが、リリース ノートを掘り下げて、一時的または永続的な証明書が不要になったというコメントを見つける必要がありました。したがって、パブリック CA 証明書を持っておらず、このアプリケーションをしばらくサポートする場合は、.NET 3.5 SP1 を使用していることを確認してください。

シナリオの複雑さに応じて、他のソリューションについて質問されたため、次のような「独自のロール」アプローチを使用することになりました。

更新されたリリースごとに、必要に応じてアセンブリ バージョンがインクリメントされます。

ビルドには、新しいアセンブリ バージョンでファイルを自動生成するカスタム ステップが含まれています。

展開プロジェクトは、MSI を使用してバージョン ファイルを出力ディレクトリにコピーします。

インストールされたアプリケーションが実行されるたびに、それ自身のバージョンと deploy フォルダー内のバージョン ファイル内のバージョンが比較されます。それらが異なる場合は、アプリケーションを終了し、古いアプリケーション バージョンを自動的に削除するように設定した MSI を起動します。

これは、アプリケーション展開ツールがまったく (AD アプリケーションの広告さえも) ない環境向けの「貧乏人の ClickOnce」であるため、私たちはそうしました。繰り返しますが、このアプローチはあなたにとって十分に洗練されていないかもしれませんが、私たちにとってはうまくいきます.

幸運を祈ります。

于 2009-08-02T18:29:56.103 に答える
4

いいえ、標準の ClickOnce 配置シナリオでは不可能です。

ClickOnce は、クライアント側のサンドボックス インストールです。既にインストールされているバージョン 1.0 については認識されません。GUIDが ClickOnce を介して既にインストールされているかどうかを確認し、インストールされている場合は更新しますが、以前のバージョンが ClickOnce を介してデプロイされた場合のみです。

あなたの場合、ユーザーがバージョン 1.1 をインストールした場合、両方のバージョンが並行してインストールされます。バージョン 1.0 は更新されません。別の方法で展開されたため、ClickOnce は関連付けがあることを認識していないためです。バージョン 1.0 が不要になった場合は、手動で削除する必要があります。ClickOnce を使用してバージョン 1.1 をデプロイすると、その後の更新は正常に機能します。

ClickOnce を「含める」ものと考えないでください。展開の方法と考えてください。

または:

あなたが探していることは、標準の ClickOnce 展開では不可能であることを明確にする必要があります。ただし、初期設定ファイルを送信するとおっしゃいました。その場合、可能な回避策があるかもしれません:

  1. セットアップ ファイルのスクリプトを作成して、バージョン 1.0 のインストールを自動的に削除する
  2. セットアップ ファイルのスクリプトを作成して、ClickOnce インストールを開始します。

その後の更新では、ユーザーに「純粋な」ClickOnce セットアップ パッケージを指定するだけで、更新は正常に機能するはずです。

于 2009-06-25T18:26:15.653 に答える
2

この場合、「最も簡単な」解決策は、1.1 バージョンの ClickOnce 展開を使用することであり、アプリケーションの新しいバージョンの一部として、何らかの初回実行フラグを持つ既定の構成ファイルを用意することです。ユーザーが初めて実行し、最初の実行フラグを確認すると、以前のバージョンを探し、既存の構成設定をコピーしてから、以前のバージョンを自動的にアンインストールします。

あなたの側でいくつかのプログラミングが必要になりますが、以前の仕事で解決した解決策は、ユーティリティアプリケーションをアップグレードして、以前にはそれがなかった Clickonce を使用するようにすることです。

于 2009-06-25T18:32:24.940 に答える
2

私が知っている最善の方法は、次のようなインストール プログラムを送ることです。

  1. 現在のバージョンをアンインストールします
  2. Web 上にある ClickOnce アプリケーションを起動します。

これにより、妥当なアップグレード エクスペリエンスが得られ、そこからは ClickOnce が単独でアップグレードを処理できます。

于 2009-06-25T18:38:39.733 に答える