Я использую XP Неограниченный чтобы пользователи могли использовать удаленный рабочий стол на компьютере с Windows 7.
Пользователи запускают на удаленном рабочем столе собственное приложение win32 exe (созданное с помощью Delphi).
Когда мне нужно обновить exe-файл и все пользователи выходят из системы с удаленного рабочего стола, все работает нормально, но когда мне нужно обновить exe-файл «вживую», когда некоторые пользователи его используют, у меня плохое поведение:
как-то кешируется exe, и у меня есть ошибки нарушения доступа.
Для замены live я переименовываю старый exe и копирую новый в папку.
Эта проблема вам о чем-то говорит? Может быть проблема, с которой я столкнулся, связана с тем, что я использую не серверную ОС (Windows 7 вместо win 2k8)? Не могли бы вы предложить решение или объяснить мне проблему.
Спасибо.
Краткий ответ: НЕ МЕНЯЙТЕ ФАЙЛЫ, КОТОРЫЕ ИСПОЛЬЗУЮТСЯ ИЛИ ЗАПУСКАЮТСЯ В АКТИВНОЙ ПАМЯТИ.
Если файл открыт и используется, вы собирается иметь проблемы. Извлекать файл из-под операционной системы / приложения, пока есть открытые дескрипторы файлов, - большой запрет. Я удивлен, что это даже позволит вам переименовать файл.
Это не обязательно кеширование, у вас есть активные приложения, которые не предполагают, что файлы будут изменены без уведомления.
Вот почему часто Windows вынуждает вас перезагружаться для получения определенных обновлений, многие программы обновления программного обеспечения вынуждают вас закрыть браузер или другие «связанные» программы (на ум приходит Java), чтобы завершить обновление, или другие программы обновления «перезапускают» программу, которую они обновление (например, установщики Adobe).