https://bugs.winehq.org/show_bug.cgi?id=30713
--- Comment #8 from Nikolay Sivov bunglehead@gmail.com --- (In reply to Anastasius Focht from comment #2)
MsiInstallProduct() is called at 32-bit client-side hence everything is redirected into syswow64 instead of system32.
What is needed here is a 64-bit msi server process that takes over the product install part from the 32-bit client side.
It sounds similar to services.exe server - we need 64bit msiserver on 64bit prefix and 32bit one for 32bit prefix, not a mix of both. And it looks like we'll need to move substantial part of msi.dll to it to make it work.
I know very little about msi format or installer behavior in general, how do they usually specify installation location (when you can't override it)? Because if it goes like */system32/* we'll need same manual manipulations to make it work as we need to start 32 bit service with 64bit server.