2008-09-09 23 views

答えて

6

個人的には、自分のアプリケーションのタイムスタンプがサーバーと同期していないときに自己更新プロセスを開始するための独自のメカニズムを構築します。あまりにも難しいことではありませんが、単純な作業ではありません。私の実装では

を::UPDATED

http://www.tmssoftware.com/site/wupdate.asp

:ところで

は、デルファイのためには、いくつかのサードパーティの助けを使用することができます

MYAPP.EXEは、3種類のモードで実行されます

  1. MyApp.EXEなし任意の議論。これは通常、アプリケーションを起動します。

    1.1最初に行うことは、サーバーでファイルタイムを検証することです。

    1.2のアップデートが必要な場合は、それはそれは「MyAppの-YYYY-を呼び出す "のMyApp-YYYY-MM-DD-HH-MM-SS.EXE" という名前のファイルに

    1.3を更新されたファイルをダウンロードしますがMM-DD-HH-MM-SS.exe "コマンド引数付き

    MyApp-YYYY-MM-DD-HH-MM-SS.exe --update MyApp.EXE 
    

    1.4このアプリケーションを終了してください。必要な更新がない場合は

    1.5は、アプリケーションが1.1

  2. MYAPP.EXE --update "FILENAME" から正常に起動します。

    2.1成功するまで100msごとに "FILENAME"に自分自身をコピーしてみてください。

    2。2成功時に「FILENAME」を呼び出します。

    2.3「FILNAME --delete MyApp-YYYY-MM-DD-HH-MM-SS.exe」を呼び出して削除します。

    2.4は

  3. MYAPP.EXE --delete "FILENAME"

    3.1を終了し、成功するまで、ファイル "FILENAME" を削除500msごとを試してみてください。私はすでに7年間の自分のアプリケーションのためにこの方式を使用してきた

3.2

は終了し、それがうまく動作します。ステップには多くのプロセスが含まれているため、問題が発生したときにデバッグするのは非常に苦しいことがあります。簡単なトラブルシューティングを可能にするために、多くのトレースログを作成することをお勧めします。

幸運

+0

それはまさに私がやったことです。 – Branko

+0

私はいくつかupvote気にしません;) – Sake

1

私はこれがスタブすることなく達成することができるならば、100%わからないんだけど、この記事では、いくつかの洞察を提供することができる:いいえ、あなたのアプリケーションへのエントリポイントは、コードを管理する必要

How To: ClickOnce deployment for unmanaged app with COM component in managed assembly

+0

マニフェストを管理対象アセンブリであるCOMコンポーネントの方に向けることができる環境に固有のようです。 100%の管理されていないソリューションは、この小さなハックで作業する余地はありません。 –

3

これは、ClickOnceの主な著者の1人で、Smart Client Deployment with ClickOnceの著者であるBrian Noyesによるblog postからのものです。

アプリケーションが本当にレガシー(つまりVB6、MFC、ATLなど)の場合(アンマネージコード実行可能ファイルの場合)、いいえ、ClickOnceによって実行可能ファイルとしてデプロイすることはできません。

許容される回避策は、メインのexeファイルを起動するマネージコードスタブexeファイルのようです。

関連する問題