Unless I'm misunderstanding something, this isn't too complicated.
1) Deferred custom actions run with elevation under the system account and should be able to get to the program files folder.
2) In the deferred custom action use CustomActionData to pass the [INSTALLFOLDER] property into the deferred custom action code, which is the way that deferred CAs get access to properties without the session handle.
This might be relevant:
How to pass CustomActionData to a CustomAction using WiX?
http://sajojacob.com/2008/02/customactiondata-in-wix-with-deferred-custom-actions/