Since msvcmaker doesn't support msvc4.0, I'm trying to install msvc6.0 under wine. (Yeah, I know, I should run it under windows, but I'm stubborn.)
Interestingly, the setup program puts itself in the background. This means you have to be careful to check with ps that you don't have old wines laying around from the last run, and when logging, you have to make sure all wine processes have exited, else your log file isn't complete yet.
Unfortunately, setup fails fairly early.
When emulating win9x, it fails before presenting a dialog box -- with a page fault reading from a file handle returned from CreateFile. It looks like it's doing an assembly string search on the Windows file structure pointed to by the handle! I wonder why. Maybe it was an easy way to prevent people from running under Wine :-) We may have to hack wine to make handles be valid pointers; I wonder what magic bytes setup is looking for there.
When emulating winnt or winxp, it gets a bit further, but dies with a null pointer access. Oddly enough, adding --debugmsg +relay lets it proceed. It insists on installing Microsoft VM for Java, then tries to reboot. Restarting wine d:setup (this time without --debugmsg) continues properly for a while, but eventually crashes.
Whenever it crashes in winnt/xp, it leaves one or more windowless wcmd's running the following script:
:Repeat del "E:\vs60wiz.exe" if exist "E:\vs60wiz.exe" goto Repeat del "C:\WINDOWS\DEL4056.BAT"
in a loop, chewing up huge amounts of CPU time.