Any custom action that changes the system after installing InstallFinalize is, by definition, a design error . I would also be careful with user actions that show messages and check the system. They should not return error codes at least, or a complete rollback of the installation may occur - this is especially unsuccessful for the main upgrade scenarios (it may leave two versions of a registered product, but only one is installed).
Custom actions after InstallFinalize always fail in some contexts that you cannot predict โ often when a package is deployed through a deployment system such as SCCM (SMS) or similar. Typically, user actions after InstallFinalize are skipped or trigger unexpected rollbacks of the entire installation. They will also work without failures at startup without full administrator rights.
What registry operations do you perform? They should be easily implemented in other ways.
source share