ClickOnceをブラウザ経由せずに実行する。(C#)

C#

IEのみ対応のWebアプリをChromium対応にした際、ClickOnce実行時の確認ダイアログ等が出現してしまう問題があります。ユーザがクリックすればいいだけではありますが、IEではそもそも出ないダイアログですので非表示にしたかったため、簡単に調査しました。

結論から言うと、おそらくブラウザ単独では無理ですね。
EdgeにはClickOnceに関するフラグがあったりするのですが、それらを有効にしてもダイアログの出現は抑制できません。ダイアログを出さずにバックグランドで実行したい!ってニュアンスでググってもできるという記事はヒットせず、前述のフラグ等も弄繰り回してみても解決には至りませんでした。

で、発想を変えてブラウザ外でClickOnceを実行してしまえば、そもそもブラウザが出すダイアログを回避できるのでは?という方向で攻めることにしました。

Process.Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " + Url);

Client端末内でアプリを事前に仕込んでおく必要はありますが、上記のDLLを呼び出すことでClickOnceを実行できます。

またdfshim.dllにはClickOnceを実行するようのそのものずばりな
LaunchApplicationというコマンドもあるようですので、こちらを使ってもよいと思います。

ClickOnce Unmanaged API Reference - Visual Studio 2015
Launching a ClickOnce application from another ClickOnce application
MygoalistoactuallyachievelaunchingmyClickOnceapplicationinoneclick(ortwoIguess).Theapplicationhassomeprerequisiteswhichneedtobeinstalled.Thenormalwayofensuringt...
C#
スポンサーリンク
Once and Only

コメント

  1. […] 「ClickOnceをブラウザ経由せずに実行する。(C#)」 […]