9

Delphi アプリケーションの起動に使用されるスタブ C# exe なしで、ClickOnce を使用してネイティブ Delphi アプリケーションを展開することは可能ですか?

同じ質問が、VB6、C++、およびその他のネイティブ Windows アプリケーションにも当てはまります。

4

3 に答える 3

8

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

ちなみに、Delphi の場合、サードパーティのヘルプを使用できます。

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

更新しました:

私の実装では:

MyApp.EXE は 3 つの異なるモードで実行されます

  1. 引数なしの MyApp.EXE。通常、これによりアプリケーションが起動します。

    1.1 最初に行うことは、サーバーで自身のファイル時間を検証することです。

    1.2 更新が必要な場合は、更新されたファイルを「MyApp-YYYY-MM-DD-HH-MM-SS.exe」という名前のファイルにダウンロードします。

    1.3 次に、コマンド引数で「MyApp-YYYY-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 --「ファイル名」を更新します。

    2.1 成功するまで 100 ミリ秒ごとに自分自身を「FILENAME」にコピーしてみてください。

    2.2 成功したら「FILENAME」を呼び出す

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

    2.4 終了

  3. MyApp.EXE --「ファイル名」を削除

    3.1 成功するまで、ファイル「FILENAME」を 500ms ごとに削除してみてください。

    3.2 終了

私はすでにこのスキームを自分のアプリケーションに 7 年間使用しており、うまく機能しています。ステップには多くのプロセスが含まれるため、問題が発生したときにデバッグするのは非常に困難な場合があります。トラブルシューティングを簡単にするために、多くのトレース ログを作成することをお勧めします。

幸運を

于 2009-07-19T01:35:06.913 に答える
3

いいえ、アプリへのエントリ ポイントはマネージド コードである必要があります。

これは、ClickOnce の主な権威の 1 人であり、ClickOnce を使用したSmart Client Deploymentの著者である Brian Noyes によるブログ投稿からのものです。

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

受け入れられている回避策は、メインの exe を起動するマネージド コード スタブ exe のようです。

于 2008-09-30T16:07:26.953 に答える
1

これがスタブなしで達成できるかどうかは 100% 確信が持てませんが、この記事はいくつかの洞察を提供するかもしれません:

方法: マネージ アセンブリ内の COM コンポーネントを使用したアンマネージ アプリの ClickOnce 配置

于 2008-09-09T11:58:41.583 に答える