When installing an application and calling ngen, the custom action ngen fails. The reason for this seems to be the CA scheduler's use of the MsiAssembly table to determine whether the assembly to be ngen'ed is installing into the GAC. The scheduler is examining
File_Manifest to determine the assembly's installation status into the GAC; however, MSDN states that the determination is made by the
File_Application column. When no manifest is specified for non-gac'ed assemblies, the scheduler incorrectly thinks that the assembly is being installed into the GAC, thus causing the ngen to ultimately fail.
Workarounds seem to be to ensure an application base is specified in the NativeImage element, or to ensure that a manifest is specified for assemblies not in the GAC.