2012-02-26 3 views
4

私はWindowsアプリケーションの自動自動更新を有効にする方法を探しています。更新プロセスは、変更されたファイルのみがダウンロードされ、置き換えられるようにする必要があります。だから、私は自分のアプリケーションにそれを統合する予定です。実行中の実行可能ファイル(またはそのフォルダ)の名前を変更する/移動することが可能であるという事実を考慮して、アプリケーションを使用して自分自身を更新することは可能ですか?実行中の実行可能ファイルの名前の変更/移動は危険ですか?別のアップデータプログラムを使用してアプリケーション自体を更新することの利点は何ですか?別のプログラムを使用せずにWindowsアプリケーションを自動アップデートする

ありがとうございます。

+0

ユーザーはしばしば「サイレント自動アップデート」したくないと彼らは理由の許可/権限/ UACのとにかく一般的に可能ではありません。新しい更新計画が必要です。 –

+1

アプリケーションは、常にフルアクセス権を持つローカルアプリケーションデータ(サイレント自動更新をサポートするため)にインストールされます。 – simha

答えて

0

Windowsオペレーティングシステムでは、実行中のアプリケーションを上書きすることはできません。それを行うには別のアプリケーションが必要です。私が持っているプロセスの1つは、ダウンローダーアプリケーションのダウンロードファイルを持っていることですが、使用している場合は拡張子.updateが与えられています。

私のアプリケーションは、起動時に、その拡張子を持つファイルをフォルダとサブフォルダ内で探します。 1つが見つかると、それはパッチャーアプリケーションを起動し、自身を終了させます。 patcherは、プログラムファイルが空きになるのを待ってから.updateファイルをアプリケーションファイルの先頭に移動し、アプリケーションを再起動します。

アップデートがあってもユーザーが気付かないと、起動に2秒余分にかかる。

さらに: 別のアップデータプログラムの利点は、モジュール性とクリーンさです。アップデーターソフトウェアを再利用することができ、そのコードはおそらくアプリケーションの処理の中核ではありません。あなたがそれを動作させている間、あなたのアプリケーションのインタラクティビティに影響を与えるマルチスレッドにしない限り、プラスです。あなたは私に言わせれば、私はプログラマの多くは(静的ビルドで)展開にモノリシックなアプローチのために行く見てきました

は、しかし、モジュール性はまだ主要な利点があります。

+2

の変更、使用中、私は上の任意の潜在的な影響はないと思うしながら、ほとんどの場合、アプリケーションが更新できない/実行中の実行ファイルが動作しない場合があります削除/交換が、それはXPで仕事をして移動/名前の変更、VistaおよびWindows 7 – simha

+0

アプリケーションの対話性が問題になりがちです。 –

1

アプリケーションを更新することの主な欠点は、すべての非同期I/Oが完了したこと、すべてのユーザーインターフェイス要素が閉じられたこと、すべてのアクティビティが停止したことなど、データをディスクにフラッシュします。通常、別個のアップデータを使用すると、アップデートプロセスが妨害される(または干渉されることはありません)何も起こっていないことを確認できるように、アップデートプロセスが終了する前にアプリケーションプロセスが終了します。

別個のビルドを避けたいのであれば、新しいコンテンツをダウンロードした後に自分自身のコピーを作成するようにアプリケーションを設計できます(または、アップデータコンポーネント自体が更新されている場合は、自身の新しいバージョンの)を一時的な場所に保存し、このコピーを更新モードで起動します。起動時にアップデーターのインスタンスであるか正規のインスタンスであるかを決定するアプリケーションは、設計が容易で上記の問題はありません。

関連する問題