I have MSI installer which installs product and this product has several widely used API dll's. These dll's may be loaded into processes that I cannot control during upgrade (for instance, I cannot ask user to close explorer.exe or svchost). So, during MSI upgrade these dll's are locked and cannot be upgraded without reboot. I need to make it upgradeable without reboot. These API dll's are very stable and it is acceptable to leave old copies working in old processes when new versions of these dll's will be loaded into new running processes. So, when we didn't use MSI then we just used standard trick - rename file, mark it to delete on reboot, write new file.
What is the best way how to do it in MSI? Should I create custom action which will do this standard trick? Or maybe MSI has some better way to do it?
Thank you!