MsiOpenDatabaseW throws access violation when executed within an msi custom action

Solution 1:

You can't use MsiOpenDatabase from a custom action:

Because MsiOpenDatabase initiates database access, it cannot be used with a running installation.