Re: [PATCH 1/1] msi: MsiGetPropertyA return wrong length when called from a custom action.
"Mike McCormack" <mike(a)codeweavers.com> wrote:
This is a hack, however the correct way to achieve bug compatiblity is complicated.
MSI should run custom actions in a separate process and communicate with the main installer process via COM. This is quite a lot of work which needs to be done anyway, but this patch will make us bug compatible with Microsoft's implementation in the mean time.
Furthermore, writing a test case for this behavior requires adding a dll contain custom action code to the dlls/msi/tests directory. I can supply an MSVC project showing the problem.
See bug 5768 (http://bugs.winehq.org/show_bug.cgi?id=5768) for more details.
Does behaviour of MsiGetPropertyA and MsiGetPropertyW differ in that case? I'd be interested to have a look at the test case.
--- a/dlls/msi/custom.c +++ b/dlls/msi/custom.c @@ -439,6 +439,8 @@ static DWORD WINAPI ACTION_CallDllFunction(thread_struct *stuff) TRACE("calling function (%s, %s)\n", debugstr_w(stuff->source), debugstr_w(stuff->target));
+ TlsSetValue( tls_slot, (void*) 1 );
Shouldn't this be reset to 0 once a custom action has finished? -- Dmitry.
Dmitry Timoshkov wrote:
Does behaviour of MsiGetPropertyA and MsiGetPropertyW differ in that case? I'd be interested to have a look at the test case.
I've put the test case up here: http://mandoo.dyndns.org/msitest.zip
+ TlsSetValue( tls_slot, (void*) 1 );
Shouldn't this be reset to 0 once a custom action has finished?
The thread running the custom action terminates immediately after the custom action finishes, so there shouldn't be any need to reset the tls value. Mike
participants (2)
-
Dmitry Timoshkov -
Mike McCormack