Ветеран
Сообщения: 2371
Благодарности: 562
|
Профиль
|
Отправить PM
| Цитировать
Давно интересует такой вопрос - каким образом удалять/устанавливать файлы (в частности DLL) "занятые" ShellExtension не перезагружая explorer ( или подобное ПО, типа TotalCommander и т.п. )?
К примеру, установили ПО из собственного NSIS инсталлятора , в котором при участии какой то DLL , в контекстное меню добавились какие то пункты. Если удалять это ПО, при запущенном explorer_e , то как только процесс доходит до удаления этой DLL - получаем предупреждение, что файл(ы) уже используется.
Ессно, если закрыть explorer, то удаление произойдёт нормально. Но это совершенно не интересно.
В то же время штатный анинсталлер этого ПО, спокойно удаляет эти же файлы при запущенном explorer_e ! Как это он делает ?
Возможно ли решить такую задачу в NSIS ?
Есть предположение, что используется функция System::Call 'Ole32::CoFreeUnusedLibraries() v'
|
Последний раз редактировалось MKN, 26-09-2014 в 17:36.
Отправлено: 17:27, 26-09-2014
| #1310
|