自己更新アプリケーション-哲学


15

これは哲学的な質問です。

架空のデスクトップアプリケーション、および自動更新(Webサイトへの移動、更新の確認、更新のダウンロード、インストールを強制するのではなく)を提供したいという要望がある場合、どちらが「ベストプラクティス」アプローチですか。

  1. 同様のiTunes、それは新しいバージョンとプロンプトの新しいバージョンをダウンロードするユーザーがいるかどうかを確認します。その場合、フルバージョンをインストールするフルインストール実行可能ファイル(この場合はWindowsインストーラーファイル(.msi))をダウンロードします(以前のバージョンへのアップグレードだけでなく、複数のバージョンが存在する場合は管理が多すぎます) 。つまり、バージョン10.1.1であるとしましょう。フレッシュインストールでもアップグレードでも、同じファイルを使用します。ダウンロード後、アプリケーションを閉じてインストールファイルを自分で実行するようにユーザーに指示します。

  2. 他のバージョンと同様に、新しいバージョンをチェックしてユーザーにダウンロードを促しますが、実行可能ファイルをダウンロードしてユーザーに実行を促す代わりに、実際に実行します-開いているプログラムをシャットダウンし、取得しますファイルをインストールするために必要なセキュリティ。

#2の問題:プログラムは他のプログラム(OutlookおよびExcel)を開くことができるため、プログラムを終了することに関する多くの問題、またはユーザーが何かの途中にいた場合はどうなりますか。また、セキュリティに関しては、インストールするためにローカル管理者のアクセス権が必要ですが、それを持っていない場合はどうなりますか?Windowsの以降のバージョンでは、ユーザーのセキュリティを単に上書きすることはできません。

#1の問題:一部の人々は、これは非常に困難であり、エンドユーザーにとって多大な労力があると考えています。

プロジェクトで80〜120時間を節約でき、実装と保守がより簡単になるため、#1を使用することを強くお勧めします。ただし、あらゆる面で強く感じる人がいます。

このようなことのベストプラクティスは何ですか?


それが哲学的かどうかは定かではありませんが、彼女は私の解決策を探しているようです。

それで、ここでデザイン/建築の質問をするのは大丈夫ですか?

私の質問は、なぜ#2ではプログラムをシャットダウンして再起動する必要があるのですか?セキュリティ更新プログラムの場合は理解できますが、通常のユーザーは少なくとも1日に1回はプログラムを閉じて再度開くので、バックグラウンドでインストールして、ユーザーがメモリ内の古いバージョンを使用してプログラムを実行できるようにします。 、再起動するときにインストールされた新しいバージョンを使用します。大騒ぎも面倒もありません。
マイクS

@Mike S:Windowsでは実行できません(実行中の実行可能ファイルは上書きできません)。Linuxでも特に良い考えではありません(別のインスタンスを開くと、古いコードを実行して新しいコードを実行することになります) -IPCが発生している場合、それはさらに悪いです)
ディーンハーディング

経験から:更新を確認する場合、毎日午前0時または午後3時にプログラムで実行しないでください。それは理にかなっているように見えますが、あなたはあなた自身のサーバーのDDOSを終了します。最大3600秒のランダム性を追加するだけです。そうではありませんという緊急の。
–MSalters

回答:


20

個人的には、Google Chromeのアプローチが好きです。ランチャーを含むベースディレクトリ、およびソフトウェアのインストール済みバージョンごとのサブディレクトリ。ランチャーは最高のバージョン番号を探し、それを使用して、必要に応じて古いバージョンを削除します。アップデータタスクは、新しいディレクトリをダウンロードして作成するために頻繁に実行されます。新しいバージョンがインストールされると、実行中のアプリケーションは新しいバージョンを使用するために再起動を要求します。


4
Googleの良い行動を指摘してくれた+1。対照的に、Adobe Acrobat Readerは2日ごとにインストールが必要と思われるいくつかの緊急パッチを作成し、作業中に継続的に妨害します。
インゴ

私もこのアプローチが好きです。欠点は、昇格を必要としないユーザーごとのインストールでのみ機能することです。昇格のプロンプトが表示されたら、更新を実行するのにさらに2、3回クリックする必要があるかどうかは問題ではありません(もう静かではありません)。

@Cosmin%appdata%を使用したくない場合は、%ProgramData%を使用してダウンロードしたファイルを保存できます。より哲学的に正しい方法は、アーカイブをそこに保存し、次にプログラムが実行されるときにインストールするように昇格することです。
ベーコンビット

この答えが大好きで、私はそれをバックポケットに入れています(今のところ、「Itunes」スタイルのダウンロードは、コスト削減の理由で幅広い魅力を見出しています。)
シャノンデイビス

3

不要なスタートアップエントリを作成して、Adobe Flash Player(すべてを追跡するのは難しく、チェックを無効にする方法がわかりません...)やiTunesのようなアップデートをチェックしないでください。ユーザーをいらいらさせます(とにかくオタクです)。より良いオプションは、Firefoxのようにアプリケーションの起動時に更新をチェックすることです。

シンプルで邪魔にならない「アップデートをインストールしますか?」ウィンドウはユーザーを困らせません。ユーザーが他のことをしている間にバックグラウンドで更新し、アプリケーションを自動的に起動します。

必ずオプションを含めるようにしてください:

更新の確認先:

  • ログオン(オタクを困らせたい場合)
  • アプリケーションの起動(デフォルトではオン
  • 数週間ごと(デフォルトではオフ

または似たようなもの。


努力する価値がある場合、私はそれを行くと言うでしょう。それはあなたの決断です。


2

「ClickOnce」設定が必要だと思います。

http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

ClickOnceは、最小限のユーザー操作でインストールおよび実行できる自己更新型のWindowsベースのアプリケーションを作成できる展開テクノロジです。ClickOnce展開は、展開における3つの主要な問題を克服します。

アプリケーションの更新の難しさ。Microsoft Windowsインストーラーの展開では、アプリケーションが更新されるたびに、ユーザーはアプリケーション全体を再インストールする必要があります。ClickOnce展開では、更新を自動的に提供できます。変更されたアプリケーションの部分のみがダウンロードされ、更新された完全なアプリケーションが新しいside-by-sideフォルダーから再インストールされます。

ユーザーのコンピューターへの影響。Windowsインストーラーの展開では、アプリケーションは多くの場合、共有コンポーネントに依存しており、バージョン管理の競合が発生する可能性があります。ClickOnce展開では、各アプリケーションは自己完結型であり、他のアプリケーションに干渉することはできません。

セキュリティ許可。Windowsインストーラーの展開には管理者権限が必要であり、制限されたユーザーインストールのみが許可されます。ClickOnceの展開により、管理者以外のユーザーがインストールして、アプリケーションに必要なコードアクセスセキュリティのアクセス許可のみを付与できます。


これは、1回のクリックとMSI(結論の多くは不正確または不完全)の長所と短所の問題ではなく、自動更新ソリューションのベストプラクティスの問題です。
クリストファーの画家

とにかくこの情報を高く評価しており、開発者と共有して、オプションとして考えているかどうかを確認します。おそらく、更新プロセスを自分で開発する必要があると考えたのでしょう。

クリストファー、MSで取り上げてください。MSDNから直接入手できます。それも本当に役立つコメントです。

展開テクノロジにコーディングするとき、MSDNに投稿した誰かがそれを間違えても驚かない。このことを本当に理解している専門家はほとんどいません。
クリストファーの画家

2

私は個人的にSparkleフレームワークに似たことをするアプリケーションに感謝するようになりました。私はそれがMacのものだけだと思いますが、本質的には次のことを行います(私の頭の上から-私は動作を調整できると思います)。

  1. 更新の確認(通常はアプリケーションの起動時)
  2. ある場合は、適切にフォーマットされた変更ログを備えた別のウィンドウが表示されます
  3. ユーザーは、そのバージョンをスキップ、インストール、または後で通知することを選択できます
  4. 彼がアプリケーションをインストールすることに決めた場合、変更ログの下にプログレスバーが表示されます
  5. ダウンロード後、ユーザーはアプリケーションを終了してすぐにインストールするか、アプリケーションを終了した後にインストールするかを決定できます。

.msiについて話していることを考えると、この特定のフレームワークは実際には適用できませんが、この場合は、車輪を再発明するよりも、既存のソリューションを使用したいです。


1

ユーザーを本当に知っている必要があると思います。彼らが精通しているか、または最新の状態を維持することに強い関心を持っている場合、#1が機能します。

ユーザーの怠を決して過小評価しないでください。サポートされなくなったためにプログラムが機能しなくなると、後でヘルプデスクへの問い合わせが殺到するからです。

時期は開発(#2)またはサポート(#1)のいずれかです。


1

これはどうですか?

  • アプリケーションの起動時に、新しいバージョンを確認し、(オプションでユーザーに確認した後)ダウンロードします。
  • ダウンロードが完了したら、アプリケーションを再インストールして再起動できるボタンをユーザーに提供します(更新が重要でない限りダイアログを使用しないでください)。
  • アプリケーションのシャットダウン時に(オプションでユーザーに確認した後)インストーラーを開始します。ユーザーがこの時点でインストールを拒否した場合(おそらく急いでいる)、アプリケーションが起動する前に次回実行してください。

ユーザーを煩わせる必要も、何も閉じる必要もありません...


1

なぜ中間にないのですか?

ダウンロードした更新プログラムをインストールするためのプロンプトを終了した後、ダウンロードのプロンプトを表示します(または「自動的にダウンロード」オプションを作成します)(.msiを実行します)。このようにして、#2のマイナス面(ユーザーの作業の途中で閉じる)を無効にし、さらに1クリックのコストで快適さを保ちます。

閉じると更新をインストールする?」ユーザーが最初に低下すると、ダイアログが容易にアクセスできる(ただし、迷惑ではない)でなければなりません。「<プログラム名>を起動しますか?」.msiの最後にあるチェックボックスは、ほとんど作業をせずに#2のようになります

@ security
現代のWindowsのプログラムは、管理者権限を必要とするアクションを実行する許可を要求できます(ユーザーは管理者のパスワードを入力し、許可を与えるかどうかを「はい/いいえ」を選択するプロンプトが表示されます)


1

Pawnshop Managementデスクトップアプリを使用する124のPawnshopがあります。新しいアップデートがあるたびに、アップデートとその詳細について知らせるメールを彼らにブロードキャストします。それから彼らは私のウェブサイトにログインすることでそれをFTPするオプションがあります。また、更新をロールバックするオプションもあります。私のウェブサイトは、質屋がインストールされた各バージョンも追跡します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.