2

ClickOnce機能を既存のアプリケーションに導入することは可能ですか?既存のアプリケーションをアップグレードしてClickOnceを追加する

シナリオは次のとおりです。バージョン1.0はすでにクライアントの敷地内にインストールされています。私は彼らにClickOnce機能を持つ1.1にアップグレードする新しいセットアップパッケージを送って、将来のアップグレードを "楽に"したいと思っています。

これを除いて、この種の問題の解決方法はありますか?

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

答えて

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セットアップパッケージをユーザーに指示するだけで、更新プログラムが正常に動作するはずです。

2

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

これはプログラミングを必要とするかもしれませんが、前回の仕事でこれを解決してユーティリティアプリケーションをアップグレードしてから、Clickonceを使用していなかったところで解決しました。

2

私が知っている最良の方法は、彼らに、インストールプログラム送信するために、次のようになります。

  1. は、現在のバージョン
  2. がウェブ上に存在するClickOnceアプリケーションを起動しアンインストールを。

これで、適切なアップグレードエクスペリエンスが得られ、そこから、ClickOnceが独自にアップグレードを処理できます。

4

クライアントの環境でClickOnceの配置を非常に徹底的にテストしてください。ここでは詳細を省略しますが、ClickOnceには多くの問題があります。私は3.5年前からClickOnceアプリケーションをサポートしており、マニフェストに関する多くの問題に直面しています。手動でサンドボックスストレージフォルダを削除して、アップデートが正しくインストールされなければならないなど - ClickOnceの問題をオンラインで検索すると、 MSDNフォーラムや他の場所ではほとんど問題がありません。多くのMSは開かれてから解決したいと考えていません。Visual  スタジオ  2005.

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

シナリオの複雑さにもよりますが、他の解決策を尋ねるので、私たちはこのような "ロール独自の"アプローチを使用して巻き上げました。

各リリースでは、必要に応じてアセンブリバージョンが増えます。

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

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

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

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

幸運のベスト。

+1

詳細な対応をありがとうございます。 ClickOnceは本当に価値があるよりもトラブルがあるように聞こえます...私はあなたの自宅のソリューションが好きです。 – pufferfish

関連する問題