21

ClickOnceアプリケーションを更新した後、ユーザーが実行すると、新しいバージョンをインストールするかどうか尋ねられます。ClickOnceアプリケーションがスキップして更新プログラムを要求する(スキップが選択されていると失敗する)

私は高度に管理された環境で作業しています。アップデートが利用可能な場合、それをインストールする必要があります(古いバージョンでは、データベースとの下位互換性が保証されていません)。

もう1つの選択肢は、スキップが押された場合に実行に失敗することです(これも問題ありません)。

古いバージョンのアプリケーションを実行しないようにするには、何らかの方法が必要です。

答えて

39

この記事はあなたの質問に答えます。私は記事のすべてが知る価値があるので、答えを投稿するのではなく、記事を指し示しています。

http://www.sayedhashimi.com/CategoryView,category,ClickOnce.aspx

次の記事から関連の抜粋です:ClickOnceのアップデートに ClickOnceの自動更新での大きなセールスポイントの

一つの強制

。 のうち、 に関するよくある質問は、「ユーザーに の更新を強制するにはどうすればよいですか?

ユーザーに更新を強制する に関して知るための3つのものがあります

1)は、アプリケーションがオンライン アプリケーションである場合、ユーザーは常に 最新バージョンを実行します。オンライン アプリケーションは毎回ダウンロードされます。 アプリケーションにアクセスします。したがって、オンラインアプリケーションで を使用すると、デフォルトで 強制更新が行われます。

2)アプリケーションがインストールさ アプリケーションがある場合は、MinimumRequiredVersion 属性を使用して ことで更新を強制することができます。 Visual Studioを使用して アプリケーションを公開する場合は、 ダイアログから がこのプロパティを設定できます。

3)に注意する最後の事はあなたのアプリケーションがインストール アプリケーションである あればということである(そして、あなたが MinimumRequiredVersion属性を設定していない) ClickOnceの場合にのみ 「利用可能なアップデート」ダイアログをユーザーに促すメッセージが表示されます ユーザーが スタートメニューのショートカットからアプリケーションを起動します。つまり、 アプリケーションがインストール済みの アプリケーションで、ユーザーがURLから アプリケーションを起動すると、ClickOnce が強制的に更新されます。


私はまた別の良い記事を見つけた:

ClickOnce: Bringing Ease and Reliability to Smart Client Deployment

+1

素晴らしい回答!どうもありがとう。 – Vaccano

+0

答えをいただきありがとうございます、非常に助かりました! :) sayedhashimi.comリンクが壊れているだけのメモです。 – deadlydog

+1

私は、方法2を使用しているときにMinimumRequiredVersion属性を自動的に更新するプロセスを文書化しました。http://geekswithblogs.net/deadlydog/archive/2012/08/15/force-clickonce-applications-to-automatically-update-without- prompting-user.aspx – deadlydog

2

それは、アプリケーションがアップデートをチェックする必要があり、アプリケーションがユーザーにプロンプ​​トを表示せずに更新を開始したをオフにして、私を働きました2つのバージョンの後。あなたが最小バージョンフィールドを設定する必要があり、クライアント上の更新を強制するには

Enter image description here

+3

これは、Clickonce APIを使用してコード内の更新を処理する場合にのみ機能します。http://msdn.microsoft.com/en-us/library/ms404263.aspx –

+1

はい私のコードはProgram.csの更新を処理しています。アセンブリに新しいバージョンがある場合 – PUG

0

はあなたが展開している現在のバージョンに等しく、これはオプションの「スキップ」whiout更新を強制します。

4

これは私にとってうまく機能しました。

<UpdateRequired>true</UpdateRequired> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 

ApplicationVersionは、プロジェクトファイルに1.0.0.*のような値を持つことはできませんし、それが仕事に自動更新のためのビルド時にインクリメントする必要があること:プロジェクトファイルに次の行を追加します。

system.ApplicationVersion = %build.number% 

あなたはまた、インクリメントするMSBuildのを取得することができます:

インクリメントするチームシティーを、使用している場合は、バージョン番号は、システムプロパティ、次のプロジェクトのビルドの設定ページに移動し、設定しますバージョンは次のようになります。

<UpdateRequired>true</UpdateRequired> 
<BuildNumber>$([System.DateTime]::Now.ToString(yyyyMMdd))</BuildNumber> 
<RevisionNumber>$([System.DateTime]::Now.ToString(mmss))</RevisionNumber> 
<ApplicationVersion>1.0.$(BuildNumber).$(RevisionNumber)</ApplicationVersion> 
<MinimumRequiredVersion>$(ApplicationVersion)</MinimumRequiredVersion> 
1

David's answerに加えて、AutoUpdateProjectsMinimumRequiredClickOnceVersion nuget packageをプロジェクトにインストールするだけです。プロジェクトの更新を確認し、必要最小限のバージョンを使用するように設定したら、必要最小限のバージョンが常に現在のバージョンと一致するようにします(つまり、ユーザーは常に最新のバージョンに更新する必要があります)。

関連する問題