2017-03-24 10 views
4

私は今3日間良い解決策を探していましたが、これまで何も見つかりませんでした。私の状況は次のとおりです。C++が自動的に新しいバージョンに更新されます

クライアントにはアプリケーションがインストールされています(C++、コンソールアプリケーション)。起動時のアプリケーションは、サーバとのバージョン番号をチェックして戻ったり、最新のものであるか、新しいバージョンをダウンロードする必要があります。

それが新しいバージョンをダウンロードする必要がある場合、私は名前にカールで新しいスクリプトをダウンロードしたいと言う:はApplication2.exe

はしかし、私はそれが古いApplication.exeを交換したいですは、新しいバージョンのダウンロードをトリガーしました。

私の解決策は次のとおりです。Application.exeApplication2.exeをダウンロードしてください。ダウンロードすると、Updater.exeが5秒間スリープします。これらの5秒以内に(または何が最良のスイートタイムで)。これら5秒以内に、Application.exeはシャットダウンに時間を持っており、5秒後にUpdater.exeApplication2.exeApplication.exeを置き換えます。

更新が完了し、クライアントに最新バージョンがインストールされました。

システムロックファイルなどに関してこの解決策は可能ですか?

+1

私はそれ以外の方法でやります。アップデートをチェックし、アップデートを適用し、(更新された)アプリケーションを実行する小さなプログラムを用意してください。唯一問題となるのは、「小さなプログラム」を更新する必要がある場合ですが、その必要はほとんどありません(その目的は特殊化されているため、更新の必要性を引き起こすバグがなく、 )。 – Peter

+0

また、別のプロセスを起動して現在のプログラムを終了することもできます。プログラムが好きなように実行できます。 – OMGtechy

+0

@Peter、ヘッドアップのおかげで、それは確かにいい解決策だと私はそれについて考えます –

答えて

5

良いニュースは、Windows(実行ファイルとDLL)で開いているファイルの名前を変更できます。ロックにより、ファイルの名前を変更するのではなく、ファイルを削除できなくなります。

  1. それは
  2. を実行している間に、新しいApplication.exe
  3. を実行しますApplication.exe
  4. にダウンロードしたプログラムを書くApplication_old.exeに、現在実行中のプログラムの名前を変更し、古いものを閉じます。
  5. 新しい実行プログラムを使用して古いバージョンを削除します。

この方法では、更新後に自動再起動します。私はいつもこれをやっています。

+0

うわー、私はこれを知りませんでした...どうすれば他のプログラムでWindows上でこれを行うと、プログラムが使用中であるというエラーメッセージが表示されますか?それはあなたのソリューションが同じプログラム内で作られたからですか? –

+1

@TVAvanHesterenこれは、Microsoft Word文書などの文書でのみ発生します。開いている間は名前を変更できません。しかし、実行ファイルとDLLの名前は変更できます。 –

+0

ああ、あなたは特に.exeと.dllファイルについて述べたことは言及していませんでした。ありがとう、私はこれを考えるだろう! –

関連する問題