I have a program product which additionally installs Shell Extension to Windows Explorer. It made in C# and uses .NET Framework v4.0. Shell extension are installing by Inno Setup during installation by using regasm.exe. Everything works fine until I want to install updated version of application. The problem is I can’t update shell extension dll because it loaded into explorer’s memory. Before installing Inno Setup shows me following message
It says installer needs to terminate Windows Explorer because it uses files which should be updated by installer. It terminates explorer process but doesn’t launch him again. That’s my first issue.
Actually I don’t want to force user shutdown explorer. But I don’t know how to unload managed shell dll from explorer’s memory. If uninstall it by regasm.exe dll still remains in memory. In fact I can’t even find place where this checking occurs because I received already made installation sources.
Files-In-Use (IssProc.dll) add-in for Inno Setup doesn’t help because as soon I terminate windows explorer by this add-in, explorer immediately restarts.
How could I solve this issue? How could I update shell extension dll with better user experience? And maybe someone could give me a hint where’s that code which checks for files in use is placed?
O and BTW I'm using Windows 7 x64.
Wizard.pas
, theTWizardForm.QueryRestartManager
function. – TLama