2011-10-17 11 views
1

自己更新アプリケーションをUACに準拠させるためのガイダンスを探しています。 私は、起動時にアップデートをチェックし、新しいバイナリを自動的にダウンロードし、新しいバイナリに置き換えるアプリケーションを持っています。 この問題は、Windows 7では、Program Filesフォルダに書き込むすべてのアプリケーションにAdmin UACの高度が必要なように見えることがあります。 アプリケーションマニフェストに、更新プログラムが動作するようにUACの仰角を自動的に要求するコードを追加しましたが、UACプロンプトが有効になっている場合、ユーザーにはAdminプロンプトが表示されるため、最適な解決策ではありません。 UACに準拠し、アプリケーションの自己更新プロパティを維持するための私のオプションは何ですか?基本的には自己更新アプリケーションとUAC最適実装

おかげで、

トム

+0

[Windowsアプリケーションを自動更新するには、どのような方法が最適ですか?](http://stackoverflow.com/questions/7395609/what-is-the-best-way-to-auto-update-a-) windows-application) –

答えて

2

、あなたがプログラムファイルにインストールする場合、あなたはUACプロンプトを表示する必要があります。

もちろん、インストールフォルダのアクセス制御設定(エクスプローラのプロパティダイアログのセキュリティページで設定したもの)を変更して書き込み可能にすることもできます。しかし、それはすべての既知のベストプラクティスに反するでしょう。私はそれを主張しないだろう。

代わりに、Chromeが実行してユーザーのプロファイルに基づいてインストールすることもできます。このアプローチには欠点があります。このようにすると、マシン上のすべてのユーザーがソフトウェアをインストールする必要があり、その後、各ユーザーは個別に更新する必要があります。あなたはまた、UACが提供する保護の一部を失います。

+0

これは唯一の方法ですか?特定の証明書などでアプリケーションに署名するオプションはありますか? – TJF

+0

署名するだけで、プロンプトの内容が変わります。 –

+0

インストールフォルダのアクセス制御を変更して書き込み可能にすることはできますが、これはすべての既知のベストプラクティスに違反します。私はそれを主張しないだろう。ユーザーは高度を更新する必要があるアプリケーションにかなり慣れています。 Firefoxは古典的な例です。 –

1

Davidによると、アップデートを管理するバックグラウンドサービスをインストールすることもできます。このサービスは、アプリケーションからの更新要求を受け取り、インストールディレクトリへのファイルの書き込みを管理します。ユーザーの観点からは、UACプロンプトなしで完全にシームレスになります(初期インストール時には1つを除く)。

1

アプリケーションを実行するために管理者権限を必要としないでください。したがって、アプリケーションマニフェストにはasInvokerレベルが含まれている必要があります。そうしないと、限られたユーザーしかアプリケーションを実行できなくなりますが、これはあなたが望むものではありません。

David Firefoxがこれを自動更新する方法です。実行には管理者特権は必要ありません。 Firefoxはバックグラウンドでアップデートをダウンロードし、ハードディスクに保存します。次回ユーザーがFirefoxを起動すると、更新プログラムのインストール準備が整い、新しいバージョンのインストーラーが起動します。インストーラを昇格させる必要があります。そのため、ユーザーはUACに昇格の確認が表示されます。アップデートが完了すると、Firefoxは再び起動します未昇華

難しいのは、アップデートが完了したときにFirefoxを非上昇状態にすることです。私は昇格されていないプロセスを昇格されたプロセスから開始するためにトリックを使用することはお勧めしません。 1つのプロセスを通常のユーザーセキュリティトークンで保持する必要があります。私はFirefoxがそれをどのように扱っているのかわかりませんが、もっとも簡単な方法は、アップデータを起動しないでください(asInvokerとしてください)。昇格したプロセスが完了すると、更新されたアプリケーションが開始されます。

0

Googleがこれをどのように行うのが本当に好きです。

Googleは、ローカルシステムとして動作するGoogleアップデートサービスを使用して、Chromeおよびその他の製品をアップデートします。 UACはインストール時に起動され、その後再び起動されません。アプリケーションは、AppDataを使用するという2つの問題を克服するProgram Filesにインストールされます。まず、多くの企業がAppDataから起動する実行ファイルをブロックします。さらに重要なのは、マシン上の複数のユーザーがそれぞれ、そのマシン上のAppDataに別々のインストールを行う必要があるということです。

新しいバージョンが利用可能になると、アップデータサービスは、ベースディレクトリ(たとえば、Program Files \ Google \ Chrome \ Application \ 45.0.2454.93、Program Files \ Google \ Chrome \ Application \ 45.0.2454.101)。 Chromeランチャーは、バージョンが最も高いフォルダからChromeアプリケーションを実行するだけです。

関連する問題