У нас есть исполняемый файл .Net 4.0 (MyProg.exe) и связанные библиотеки, которые развернуты в общей сетевой папке с помощью XCopy. MyProg.exe и его dll все неподписаны.
Они установлены на общем сетевом ресурсе, поэтому несколько пользователей могут использовать одну и ту же версию программы и упростить ее обновление. Это работало хорошо для многих наших клиентов уже много лет.
Для недавнего клиента папка на виртуальной машине Windows Server 2012 является общей сетевой папкой. Пользователи запускают программу с другого терминального сервера (Windows Server 2012).
Когда мы обновили MyProg.exe (до версии 2.0 с 1.0), сервер терминалов не запускает новый исполняемый файл, пока он не будет перезапущен. Он продолжает загружать версию 1.0, даже если этот exe больше не доступен. Кажется, что работает кешированная версия MyProg.exe V1.0.
- Шаги, которые я попробовал:
- Закройте все экземпляры программы
- Скопируйте новый MyProg.exe в папку и перезапишите файлы (обновленная версия exe с 1.0 до 2.0)
- Проверьте версию 2.0 файла MyProg.exe на странице « Свойства» >> «Сведения» как на файловом сервере, так и на сервере терминалов.
- Убедитесь, что MyProg.exe V2.0 запускается при запуске с файлового сервера с использованием файла ярлыка (цель: \\Server\MyProg\MyProg.exe)
- Запустите тот же файл ярлыка (цель: \\Server\MyProg\MyProg.exe) с сервера терминалов, и MyProg.exe V1.0 запустится
- Переименуйте \\Server\MyProg в \\Server\ MyProg1 и убедитесь, что терминальный сервер не может запустить ярлык, поскольку эта папка больше не существует.
- Создайте новый файл ярлыка (Traget: \\Server\MyProg1\MyProg.exe) и убедитесь, что MyProg.exe V2.0 работает на клиенте
- Переименуйте папку \\Server\MyProg1 обратно в \\Server\MyProg, и при запуске исходного файла ярлыка продолжается загрузка MyProg.exe V1.0 до перезапуска сервера терминалов.
- Я проверил, что автономные файлы отключены на терминальном сервере
- Я подтвердил, что не могу перезаписать исполняемый файл MyProg.exe, когда программа работает на сервере терминалов.
Что еще можно проверить, чтобы выяснить причину, по которой исполняется более старая версия исполняемого файла, даже если этот файл больше не существует?