Назад | Перейти на главную страницу

Как заменить исполняемый файл win32, используемый многими пользователями в Windows Server 2008?

У меня есть приложение для внутренней интрасети в виде exe-файла (win32, написано на Delphi).

Я регулярно обновляю его новыми функциями и патчами.

Многие люди обращаются к одному и тому же exe (используя его с удаленным рабочим столом).

В Windows Server 2003 для замены файла мне просто потребовалось:

переименуйте старый файл, скопируйте новый файл.

Это невозможно в 2008 году, поскольку из-за того же кеширования новый файл не работает. Он работает, но возникают проблемы (вероятно, связанные с тем, как Delphi использует ресурсы exe). Единственный способ - закрыть все сеансы пользователей и заменить файл.

Не могли бы вы предложить метод, который работает? Если возможно, просто? Можно ли отключить это кеширование? Или любой другой трюк, который позволяет мне заменить файл (без изменения полного пути).

Запланируйте период обслуживания и замените файл, если с ним не работают пользователи. Тот факт, что Server 2003 позволял вам делать что-то неправильно, не означает, что 2008 год должен.

Часть, в которой вы это упоминаете:

Единственный способ - закрыть все сеансы пользователей и заменить файл.

это правильный способ сделать это.

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

Таким образом, если ярлыки конечного пользователя указывают на filename.exe, то это то, что вы назвали бы своей программе запуска, программа запуска может прочитать файл filename.versions, а затем выполнить filename.version.exe.

Я думаю, если вы используете компрессор UPX, вы сможете удалить исполняемый файл. После того, как .exe распаковывается в оперативной памяти.