ClickOnce で展開されたプログラムがインストールまたは更新された回数を数える最良の方法は何ですか? また、誰がそれをインストールまたは更新しているのか (たとえば、地理的に)何らかの方法で追跡することは可能ですか?
5 に答える
ClickOnce には、使用できる API があります。アプリケーションの起動時にApplicationDeployment.IsFirstRunの値を確認し、そこで必要なことを行います。
私の ClickOnce アプリケーションにはログインが必要なので、登録と IP アドレスからプログラムを使用しているユーザーを簡単に特定できます。
もう 1 つの方法は、サーバー ログでパッケージのヒットを確認することです。実行ごとに更新をチェックするように設定している場合、毎回 .application にヒットし、変更がある場合はパッケージにヒットします。
ClickOnceデプロイメントの管理に関するMSDNに関する情報があります
ClickOnceを企業で使用するための一般的な要件の1つは、どのユーザーがどのアプリケーションを起動またはインストールしたかを追跡する必要があることです。この例は、ユーザーが最近起動したアプリケーションの特定のバージョンを照会することです。この種の追跡は、ネットワーク上に分散された潜在的に多数のクライアントマシンを監視する必要性を回避するために、展開サーバーで実行する必要がある可能性があります。ClickOnceランタイムは、カスタム起動イベント追跡ソリューションをプラグインするためのフックを公開しないため、クライアント側での追跡には、カスタムソフトウェアの開発とインストールも必要になります。
サーバー側からどのユーザーがどのアプリケーションをインストールまたは起動したかを追跡するには、ユーザーのIDを認証し、ファイルのダウンロード要求を検出して傍受する必要があります。これらのことを行うあなたの能力は、多くの要因の影響を受けます。
重要な要素の1つは、使用されるネットワークプロトコルです。ClickOnceは、HTTP(およびHTTPS)またはネットワークファイル共有(UNCパス)をサポートします。サーバー上のインバウンドファイルリクエストを簡単にインターセプトできるため、HTTPは最も柔軟性があります。Windowsファイル監査とイベントログを使用してある程度の追跡を行うことはできますが、これらのオプションを設定するのは困難です。
おそらくこれを行う最良の方法は、Webサーバー上のロギングツールを使用することです。.applicationなどへのダウンロードをログに記録します(または、.applicationが自動更新チェックのためにサポートされる可能性があるため、実際のdll / exeファイル)。
おそらくhttpモジュールを介してですが、Webサーバーのログツールで十分です。IPからおおよその場所を推測できます(ただし、独自のプロバイダーを見つける必要があります)。
ただし、ClickOnceは受動的であり、余分なコードを挿入する方法はありません。おそらく最初の実行でいくつかのコードを実行することができますが...
リクエスタの IP アドレスをログに記録する Web サービスをホストします。アプリケーションの起動時に Web サービスを呼び出します。場所は IP アドレスに関連付けられており、おそらくそこから把握できます。:)