![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Добрый день.
Есть dll, которые в данный момент могут быть загружены каким-нить процессом. и есть новые версии этих dll. какой командой можно попросить винду заменить одни другими, так чтобы если dll загружены процессом функция замены отработала по завершению процесса? нашел нечто похожее: MoveFileTransacted и флаг MOVEFILE_DELAY_UNTIL_REBOOT (http://msdn.microsoft.com/en-us/library/aa365241%28v=VS.85%29.aspx) но хотелось бы не ждать ребута системы, а дождаться только завершения процессов, возможно? |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
Не уверен, что получится, но попробовать можно:
Переименуйте (через MoveFile) текущую dll, затем скопируйте новую dll |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
xvr, поподробней можно? не до конца понимаю мысль.
Это сообщение отредактировал(а) 17dufa - 6.5.2010, 12:47 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
попробовал - работающий exe удалось сдвинуть. соответственно его изначальное место освободилось для новой версии.
под какими версиями винды этот трюк отработает? у мя 7 стоит, мои тесты мало адекватны)))) |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 40 Всего: 223 |
||||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
от коллег поступили сведения, что может не сработать. оставлю этот вариант на заметке и буду писать exe который WaitForSingleObject ждет завершения процесса и потом выполняет копирование. благо обновлять пока собираемся только один exe.
|
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
выгрузить эти dll посредством завершения программы, заменить файлы и снова запустить приложение с новыми dll
-------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Dem_max, не айс - работает се пользователь никого не трогает, вдруг бац, программка закрывается) плюс не отрабатывается ситуация нескольких запущенных процессов с одного exe файла.
сделал так - запускается exe, который ждет пока в системе не исчезнут процессы с заданным именем. после этого копирует файлы из одной директории в другую. Это сообщение отредактировал(а) 17dufa - 11.5.2010, 11:17 |
|||
|
||||
| GoldFinch |
|
|||
![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2141 Регистрация: 30.11.2008 Репутация: 2 Всего: 26 |
17dufa, делайте обновление не сразу же когда появились длл, а при следующем запуске программы,
т.е. при запуске проверяйте надо ли делать обновление, если надо - заменяйте длл и перезапускайте программу. процесс который чего-то ждет могут прибить, или у пользователя может отрубиться свет |
|||
|
||||
| Dem_max |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1780 Регистрация: 12.4.2007 Репутация: 16 Всего: 39 |
Я же не говорил прибить программу, а корректно закрыть, послав ей сообщение. -------------------- Американские программисты долго не могли понять, почему русские при зависании Windоws всё время повторяют "Твой зайка написал" ("Yоur bunnу wrоte") |
|||
|
||||
| 17dufa |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 324 Регистрация: 2.3.2006 Репутация: нет Всего: 5 |
Dem_max, спасибо за участие. тема закрыта.
|
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |