msiexec.exe is not a command prompt program, so it runs asynchronously from the command prompt (using a WinMain() entry point). As such, you have to wait for its return code. [This is the same as any Windows program.]
So if you’d like to see the return code, you’ll have to wait for it. From the command prompt, it is done as follows:
start /wait "MSI Error level" msiexec /i "C:\Temp\xxx.msi"
REM Now to see that it worked!
net helpmsg %ERRORLEVEL%