http://bugs.winehq.org/show_bug.cgi?id=12222
Darragh Bailey felix@compsoc.nuigalway.ie changed:
What |Removed |Added ---------------------------------------------------------------------------- CC| |felix@compsoc.nuigalway.ie
--- Comment #6 from Darragh Bailey felix@compsoc.nuigalway.ie 2008-04-09 16:55:51 ---
My testing of bug 9628 suggests that its exactly the same. In both cases lpApplicationName is set to the path to msiexec, and lpCommandline includes an extra space at the start which is then followed by "/i".
From my testing of CommandLineToArgvW on windows, it appears that it treats
this as a special case. One or more spaces at the start of lpCommandline (CreateProcess), produces an argv[0] of "". This is also independent of the following argument.
From my reading of the msdn, the correct behaviour for developers using
CreateProcess and not setting lpApplicationName to NULL, is to duplicate the exe name at the start of lpCommandline.
CommandLineToArgvW behaves in exactly the same fashion in wine, mimicking this odd behaviour.
The problem occurs because in wine msiexec has its own implementation "process_args" which does not observe this quirky behaviour.
Using CommandLineToArgvW in msiexec will fix this, but breaks the xlviewer installer since it does not reconstruct the argv correctly for msiexec to be able to use the arguments. See bug 9628 for the broken argv input.
So unless CommandLineToArgvW has a bug in the case of the xlviewer installer, msiexec will need to either modify process_args to take a space as the first character on the command line as a special case, same as CommandLineToArgvW, or use CommandLineToArgvW and modify the returned argv to correctly put together any broken path arguments.