|1904 - Module  failed to register. HRESULT .|
The main reason self registration fails is that some prerequisite product is not yet installed. See the "SelfRegister" command for more details.
Its possible that your MSI is self registering more than one object and it may need to occur in a particular order. You could use "Dependency Walker" to check for this as it shows dependent DLLs etc.