2016-03-29 22 views
3

私のクライアントでは、社内アプリケーションはすべてネットワーク共有上にあります。ユーザーはネットワーク共有から必要なアプリケーションへのショートカットを作成するので、誰もが最新のバージョンを使用できるように簡単にできます。VB.NETアプリケーション終了後にメッセージボックスを残す

これはかなりうまくいきますが、新しいバージョンをリリースするときにユーザーがアプリケーションを使用しているときに問題が発生することがよくあります。ほとんどのアプリケーションでは、サーバー上のすべてのファイルロックを強制的に削除し、新しいバージョンをリリースします。非常にエレガントな解決策ではありません。特に、このために別の部門の支援が必要なためです。

新しいアプリケーションでは、アプリケーションが断続的に最新のリリースであるかどうかを確認する、よりクリーンなソリューションを開発しました。そうでない場合は、ユーザにメッセージを表示し、最初の都合で、または3分以内にアプリケーションを終了するように要求します。 3分後、アプリケーションは終了し、すべて正常です。ただし、一部のユーザーはすぐにアプリケーションを再起動しようとします。アプリケーションは、このバージョンが現在サポートされていないことをユーザーに伝える簡単なMessageBoxを表示します。私の問題はこれです:このMessageBoxが見える間、私の実行可能ファイルはまだロックされています。

私は、次のソリューションのいずれかを探しています:現在のアセンブリが終了した後に残るメッセージボックスを表示コード

  • 内から現在のアセンブリファイル上のすべてのロックを解除

  • +1

    いいえ。これは、すべてのちょうど間違っています。適切なインストーラを作成し、ローカルにインストールされたアプリケーションのコピーを実行し、そのアプリケーションが自動的に更新されるようにします。あなたが間違ったやり方でやると、あなたは問題に終わります。頑固にあなたの道をハックしようとすると、間違ったやり方で解決することは解決策ではありません。ちょうどそれを正しい方法でやってください。 –

    +0

    これはあなたの質問に対する答えではなく、可能な代替案です。私たちのソフトウェアでは、ランチャーを書いています。 laucherは実際のアプリケーションを起動する前にバージョン管理をチェックします。必要に応じて更新が完了し、実際のアプリケーションが起動されます。うまくいく。 –

    +0

    @J ...これは最もクリーンな解決策だと分かっています。しかし、私はクライアントがこれらのことを実行する方法を制御できません。 –

    答えて

    3

    これは正確にです。.NET ClickOnceの展開は解決すべき課題です。ユーザーはショートカットをクリックすることができます。最新バージョンはアプリケーションの開始時にダウンロードされ、ユーザーがプロセスを開いたままにするとロックされるサーバー側の実行可能ファイルはありません。

    ClickOnce Deployment Overview

    HowTo:Publish a ClickOnce Application

    +0

    ありがとう!私は車輪を再発明しようとしていたようだ。私は、展開戦略[Webまたはネットワーク共有からアプリケーションを起動する](https://msdn.microsoft.com/en-us/library/71baz9ah(v = versus90).aspx#Anchor_2を使用します)を使用します)。 –

    関連する問題