During the PerfCounterManifest custom action the MsiExec.exe is always invoked from a 32-bit process regardless of the Win64 flag of the component.
This has been reported to the the mailing list before:
It came to my attention because the RegisterPerformManifest apparently failed for one Windows 8 64-bit user:
MSI (s) (14:BC) [07:31:02:573]: Executing op: ActionStart(Name=RegisterPerfmonManifest,,)
Action 7:31:02: RegisterPerfmonManifest.
MSI (s) (14:BC) [07:31:02:574]: Executing op: CustomActionSchedule(Action=RegisterPerfmonManifest,ActionType=3073,Source=BinaryData,Target=CAQuietExec,CustomActionData="lodctr.exe" /m:"C:\Program Files\myapp\test.man" "C:\Program Files\myapp")
MSI (s) (14:EC) [07:31:02:576]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI8057.tmp, Entrypoint: CAQuietExec
MSI (s) (14:50) [07:31:02:576]: Generating random cookie.
MSI (s) (14:50) [07:31:02:579]: Created Custom Action Server with PID 4288 (0x10C0).
MSI (s) (14:74) [07:31:02:597]: Running as a service.
MSI (s) (14:74) [07:31:02:599]: Hello, I'm your 32bit Elevated custom action server.
CAQuietExec: Error 0x80070216: Command line returned an error.
CAQuietExec: Error 0x80070216: CAQuietExec Failed
CustomAction RegisterPerfmonManifest returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 7:31:02: InstallFinalize. Return value 3.
As this seems to work for everybody else the reason for the failure might not actually be the custom action. However I believe it would be better to run the command from a 64-bit process when using a 64-bit msi with the Win64 component flag set to true.