Executing after "InstallFiles" as deferred should get you the permissions you need and guarantee the file is there.
<InstallExecuteSequence>
<Custom Action="LaunchFile" After="InstallFiles" Impersonate="no" Execute="deferred">NOT Installed</Custom>
</InstallExecuteSequence>