ClickOnce (.net2.0)のCheckForDetailedUpdateを使ったプログラムでの更新チェックについて
おそらくこんなに.net2.0ベースのClickOnceのパラメータをぐりぐり触っている人は他にいないんじゃないかと思いますが...
ClickOnceでアプリケーションの発行を行うが、但しプログラム的に更新チェックしClickOnceとしては更新チェックしない場合、下のようにした場合にはエラーが表示されます!
- アプリケーションのプロパティの「発行」タブで「アプリケーションの更新を確認する」チェックをはずす
- 「今すぐ発行」ボタンにてサーバにアップロードする
プログラム内では、
ApplicationDeployment.CurrentDeploymentのCheckForDetailedUpdate()メソッドにて求めた
System.Deployment.Application.UpdateCheckInfo のUpdateAvailableがtrueであればUpdate()を行う
何故エラーするかというと、プログラムでアップデートするためには、配置マニュフェストにdeploymentProviderが指定されてないといけない。通常「アプリケーションの更新を確認する」チェックが入っていた場合には自動でdeploymentProviderがセットされているが、チェックされてなかった場合deploymentProviderの項目自体がマニュフェストから削られてしまう!
正しく動作させるためには、「アプリケーションの更新を確認する」チェックを外す場合には、同一ダイアログ内にある「更新の場所」を必ず指定すること!
例)http://hogehoge/cvneo/publish.htm が発行URLである場合には、http://hogehoge/cvneo/ を更新の場所として指定する
また、CheckForDetailedUpdate(bool)メソッドは2.0SP1からしか使えなく、無印2.0の場合には引数なしのCheckForDetailedUpdate()メソッドを使わなければならない!