msi: Set concurrency model to multi-threaded for custom action threads.

Hans Leidekker hans at
Fri Mar 13 08:48:00 CDT 2009

A custom action in the office 2007 sp1 installer fails right after calling
CoInitializeEx(NULL, COINIT_MULTITHREADED). This is because our code calls
CoInitialize(NULL) first, which sets a different concurrency model, and a
subsequent call with a different model will return RPC_E_CHANGED_MODE.

Ergo, we should set the model to multi-threaded too.


diff --git a/dlls/msi/custom.c b/dlls/msi/custom.c
index 66a7ce6..ffac63f 100644
--- a/dlls/msi/custom.c
+++ b/dlls/msi/custom.c
@@ -695,7 +695,7 @@ static DWORD ACTION_CallDllFunction( const GUID *guid )
             TRACE("calling %s\n", debugstr_w( function ) );
             handle_msi_break( function );
-            CoInitialize(NULL);
+            CoInitializeEx(NULL, COINIT_MULTITHREADED);

More information about the wine-patches mailing list