アプリケーションを更新できるように、ネットワーク共有からアプリケーションを実行するにはどうすればよいですか?

アプリケーションを更新できるように、ネットワーク共有からアプリケーションを実行するにはどうすればよいですか?

私たちは、ネットワーク共有に展開した社内デスクトップ アプリケーションを持っています。そのディレクトリには、各バージョンのサブディレクトリがあります (例: z:\Apps\ApplicationX\1.0、z:\Apps\ApplicationX\2.0、z:\Apps\ApplicationX\2.1)。

アプリケーションの最新バージョンを指すショートカットをユーザーのデスクトップに置きたいです。現在の解決策は、現在のバージョンを「z:\Apps\ApplicationX\Current」というディレクトリに置き、そこにある exe へのショートカットをユーザーのデスクトップに置くことです。

問題は、アプリケーションを実行しているときに、ファイルがロックされているため、アプリケーションを更新できないことです。

ショートカットを変更して、ファイルをローカルにコピーし、そこから実行するバッチ ファイルを指すようにしようとしましたが、私たち全員が Windows 7 を使用しており、UAC により、インストールされるはずの C: ドライブにファイルをコピーする際に問題が発生します。

実行ファイルをユーザーのホーム ドライブにコピーして、そこから実行することもできると思いますが、実行ファイルをユーザーのホーム ドライブに置くのは好ましくありません。また、ネットワーク上にアプリケーションの複数のコピーが存在することになり、これは好ましくありません。

また、ショートカットへのショートカットを作成して、そのショートカットを更新するだけでよいのではないかとも思いましたが、それも機能しません。

私の現在の解決策は、現在のバージョンを指す開始コマンドを含むバッチ ファイルと、そのバッチ ファイルへのショートカットを用意することです。

他に解決策を知っている人はいますか?

答え1

私が推奨する方法は、2 つのアプリケーションです。メイン アプリは既にお持ちのものです。2 つ目はランチャー/アップデータです。ランチャーへのショートカットを作成し、起動する実行ファイルのパスの設定 (暗号化された意味不明な文字列、xml、プレーン テキスト、ランチャーに直接ハードコードされたものなど) を確認してから起動します。メイン アプリが起動すると、ローダーは終了します。

新しいバージョンを入手するたびに、ランチャーの設定ファイルを更新すると、今後のプログラムの起動時に新しいバージョンが開きます。

これは「ブートローダー」スタイルのプロセスです。フルサイズのアプリを指す小さなアシスタントアプリを用意します。クライアントが小さなアプリを起動すると、適切なフルサイズのアプリに誘導されます。

ランチャーでフルサイズのアプリのハッシュ フィンガープリントまたは署名をチェックして、ランチャーから別のアプリにリンクしようとする人がいないことを確認すると、さらにポイントが上がります。

答え2

レガシー アプリケーションのようです。 最善策は、複雑にしすぎず、更新のためのダウンタイムをスケジュールすることです。

答え3

DanBig さんの意見に同意します。あなたの状況は単純で、大幅に変更するつもりがない限り (Ruscal さんが提案しているように、これは良いアイデアです)、ファイル ロックを解除して .exe ファイルを置き換える (おそらく夜間または週末)「停止」をスケジュールするだけです。

「最新バージョンのアプリケーションを指すショートカットをユーザーのデスクトップに置きたい」 - OP

デスクトップに表示するには、ショートカットを z:\Apps\ApplicationX\ に設定し、現在の EXE をそこに配置します。次に、必要に応じて、z:\Apps\ApplicationX\revisions のように過去のリビジョン/バージョンのサブフォルダーを作成します。この方法では、クライアント ショートカットは変更されず、更新時に既存の exe を rev# フォルダーに移動し、新しい/更新された .exe を z:\Apps\ApplicationX\ フォルダーに配置するだけです。

答え4

Linux 上で実行されている Samba サーバーを使用できます。アプリケーションを更新する必要がある場合は、「current」フォルダーの名前を変更し、「current」という名前の新しいフォルダーを作成します。共有は読み取り専用である必要があります。

Linux (Unix) では、ファイルの名前変更または削除が許可されており、ファイルを開いているプロセスは、ファイル記述子が閉じられるまで古いバージョンを使用できます。

関連情報