С несколькими пользователями, использующими одно и то же приложение Windows из общего сетевого файла; на что я должен обратить внимание?

В настоящее время мы развертываем одно из наших приложений на ПК каждого отдельного пользователя. Тем не менее, все наши пользователи имеют доступ к одной и той же интрасети. Мне интересно, что мешает нам просто поместить двоичные файлы в общий сетевой файл и позволить нескольким пользователям запустить его оттуда. Поэтому мой вопрос: есть ли какие-либо проблемы с несколькими пользователями, обращающимися к тем же exe / dll? И есть ли какие-либо готы с приложениями, запущенными из общей папки?

Некоторые детали, которые могут иметь значение:

  1. По сути, я хочу уйти от обновления ПК каждого человека (100+), когда выходит новая версия нашего приложения (что происходит довольно часто)

  2. Мы по-прежнему будем запускать начальную настройку, чтобы получить информацию (данные, записи реестра и т. Д.) На ПК каждого пользователя

  3. Основное приложение написано в Delphi, некоторые dll используют .NET v4

  4. Я получил некоторую информацию здесь, в .NET-приложениях, поэтому не нужно повторять, что

Я делаю то же самое для своего приложения. Вы должны позаботиться о следующем:

  • Обеспечьте простой способ обновления вашего приложения. Если все версии имеют одно и то же имя исполняемого файла, вы можете заставить всех пользователей покинуть приложение, прежде чем его можно будет обновить. Если вы включаете имя версии в имя исполняемого файла, размещение новой версии в общем файле – это просто копирование файла и, возможно, настройка командного файла, чтобы новая версия была выполнена в следующий раз.
  • Свяжите приложение с флагом / SWAPRUN: NET. Это гарантирует, что приложение загрузится полностью в память при запуске. Если вы не используете этот флаг, а сетевое соединение удаляется при выполнении пользователем приложения, приложение может потерпеть крах, если пользователь выполнит часть приложения, которое он ранее не выполнял (поскольку он не был загружен из сети все же).

Я думаю, что другой подход состоял бы в том, чтобы поддерживать обновленную версию исполняемых программ и DLL на сервере, а клиенты ПК выполняют программу (или .bat), которая будет сравнивать версии (или измененную дату), и если они другой, он скопирует файл на локальный ПК и выполнит его.

Я работал в одной компании, которая использовала файл .bat для этого, и где я действительно работаю, мы делаем это с использованием .exe-файла (который редко обновляется).

Это уменьшит сетевые издержки, вызванные копированием исполняемых файлов каждый раз, когда пользователь выполняет приложение.

Примечание: Извините, если мой английский звучит странно … Английский не мой родной язык, поэтому, возможно, некоторые фразы могут звучать странно.

Я понимаю, что это старо, но добавить к предложению @Augusto. Поскольку вы используете Delphi, вы можете легко создать самообновляющееся настольное приложение с помощью элемента управления TWebUpdateWizard с сайта tmssoftware.com. Его можно легко настроить, чтобы вытащить его обновления из локальной сети вместо Интернета, и он может обновлять другие файлы в дополнение к .exe во время обработки (например, .ini или .dll).