Почему иногда exe-файлы заблокированы окнами?

У нас есть собственное приложение Fattracs, которое используется 10-30 пользователями через Citrix. Все пользователи имеют собственные инстансы. Exe-файл находится на нескольких серверах с Windows 2003 R2, который сбалансирован нагрузкой Citrix. Когда приходит новая версия, exe-файлы должны быть изменены. Если было всего несколько пользователей, он использовал для изменения exe-файла на лету. Затем новые пользователи получают новые версии, а существующие пользователи должны перезапустить, чтобы получить его. Но у многих пользователей Windows может как-то заблокировать exe-файл. Затем мы должны выгнать всех пользователей до изменения.

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

3 ответа

Решение

Используйте команду "net file" на сервере, на котором размещен общий файл, чтобы узнать, какие пользователи открыли этот файл.

Используйте команду "net file /close" в том же окне, чтобы принудительно закрыть любой сеанс, возвращенный первой командой.

Тогда вы сможете обновить файл.

C:\Users\tf>net file /?
The syntax of this command is:

NET FILE
[id [/CLOSE]]

Либо используйте раздел "Общие ресурсы" в разделе "Управление компьютером", чтобы добиться того же.

Вы можете использовать ручку, чтобы найти, кто блокирует файлы. И даже снять замок. Увы, это небезопасная операция. Возможно, пользователь, который запускает приложение, будет динамически загружать DLL, которую вы только что заменили на несовместимую версию. Я не думаю, что это связано с общим ресурсом (утилита handle расскажет вам об этом), и я не знаю решения этой проблемы:-(.

Посмотрите, что делает GNU Emacs.

Когда он запускается, он ищет более новую версию; emacs-версия.exe где версия новее текущей версии. Затем они устанавливают emacs.exe а также emacs-версия.exe и только жалуйтесь, если последний не может быть установлен.

Для внутренних вещей, если у вас нет версий, просто подумайте о поиске main-1.exeи проваливая это main-2.exe и так далее, и просто создайте новый файл всякий раз, когда он установлен. Марка main.exe поиск версии с наибольшим номером.

Ваш установщик также может удалить старые main-N.exe файлы, если хотите.

Другие вопросы по тегам