Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно
MKN MKN вне форума

Ветеран


Сообщения: 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