I have tried with TProcess, but msiexec.exe paramters show paramters error dialog to me.
...
MySQLInstallProcess.Parameters.Add(
'/i C:\Users\wuao\AppData\Local\Temp\MYSQL.msi /passive');
You must add parameters one by one, i.e.
...
MySQLInstallProcess.Parameters.Add('/i');
MySQLInstallProcess.Parameters.Add('C:\Users\wuao\AppData\Local\Temp\MYSQL.msi');
MySQLInstallProcess.Parameters.Add('/passive');
I am not 100% sure about what exactly a "parameter" is: Maybe the '/' must be omitted? And maybe the '/i' and 'C:\Users\...' must be merged to ...Parameters.Add('/i C:\Users\wuoa\AppData\Local\temp\MySQL.msi') -- but this is only a few combinations which you easily can sort out.
And there is also a deprecated syntax in which the entire command line is passed to parameter "Command line" instead of .Executeable and Parameters.Add, e.g.
MySQLInstallProcess.CommandLine := 'msiexec.exe /i C:\Users\wuao\AppData\Local\Temp\MYSQL.msi /passive';
As I said this is deprecated, but it is worth a try to see if TProcess is doing what you need.