У меня есть программный продукт, который дополнительно устанавливает расширение оболочки для проводника Windows. Он сделан на C # и использует .NET Framework v4.0. Расширение оболочки устанавливается программой Inno Setup во время установки с помощью regasm.exe. Все работает нормально, пока я не захочу установить обновленную версию приложения. Проблема в том, что я не могу обновить dll расширения оболочки, потому что она загружена в память проводника. Перед установкой Inno Setup показывает мне следующее сообщение
В нем говорится, что установщику необходимо завершить работу проводника Windows, поскольку он использует файлы, которые должны быть обновлены установщиком. Он завершает процесс проводника, но не запускает его снова. Это моя первая проблема.
На самом деле я не хочу принудительно закрывать проводник пользователя. Но я не знаю, как выгрузить управляемую dll оболочки из памяти проводника. Если удалить его с помощью regasm.exe, dll все равно останется в памяти. На самом деле я даже не могу найти место, где происходит эта проверка, потому что я получил уже готовые исходники установки.
Надстройка Files-In-Use (IssProc.dll) для Inno Setup не помогает, потому что как только я завершаю работу с проводником Windows с помощью этой надстройки, проводник немедленно перезагружается.
Как я мог решить эту проблему? Как я могу обновить dll расширения оболочки для лучшего взаимодействия с пользователем? И, может быть, кто-нибудь подскажет, где находится тот код, который проверяет используемые файлы?
O и BTW Я использую Windows 7 x64.
Wizard.pas
, функцияTWizardForm.QueryRestartManager
. - person TLama   schedule 21.07.2012