I'm installing a WiX standard bootstrapper to install several packages in a Chain. The bootstrapper shows up in the list of installed Apps & Features. I can use the entry to uninstall our software on most systems, but on others, nothing visibly happens after confirming that I want to allow modifications to the system.
When comparing to another PC (both Win 10, different editions) where the uninstall process starts properly, I find that the command lines of the launched process install.exe differ, see this Process Explorer screenshot for the functioning case and this screenshow of the disfunctional case. The latter case shows no installer window, and install.exe doesn't load a few DLLs it otherwise would, such as CoreMessaging.dll, CoreUIComponents.dll, explorerframe.dll, etc.
So for some reason, the executable is copied from its location in the package cache to the Windows temp folder. If I open the command shell and navigate to the temp location, I can launch install.exe /uninstall just fine.
Why does the system copy the installer to the temp folder? How can I debug this - I cannot find anything in the system event log, and the bootstrapper log ends after a few lines, when the log file location has been reported.
Thank you very much for your help!
Regards, Holger
Edit 1:
Given that the execution from either the package cache of from the Windows temp folder is irrelevant for this issue, I have attached a debugger, using the debugging symbols of burn. In the problematic case, the main thread is stuck in UiCreateMessageWindow in the line 63:
// Wait for either the thread to be initialized or the window to exit / fail prematurely.
::WaitForMultipleObjects(countof(rgWaitHandles), rgWaitHandles, FALSE, INFINITE);
Edit 2:
This is the call stack of the thread that the WaitForMultipleObjects call waits for:
ntdll.dll!_NtAlpcSendWaitReceivePort@32() Unknown
rpcrt4.dll!LRPC_BASE_CCALL::SendReceive() Unknown
rpcrt4.dll!NdrClientCall2() Unknown
rpcrt4.dll!_NdrClientCall4() Unknown
combase.dll!CRpcResolver::ServerRegisterOXID(const tagOXID_INFO & oxidInfo, unsigned __int64 * poxid, unsigned long * pcOidsToAllocate, unsigned __int64 * arNewOidList) Line 1109 C++
combase.dll!OXIDEntry::RegisterOXIDAndOIDs(unsigned long * pcOids, unsigned __int64 * pOids) Line 1598 C++
combase.dll!OXIDEntry::AllocOIDs(unsigned long * pcOidsAlloc, unsigned __int64 * pOidsAlloc, unsigned long cOidsReturn, unsigned __int64 * pOidsReturn) Line 1639 C++
combase.dll!CComApartment::CallTheResolver() Line 862 C++
combase.dll!CComApartment::InitRemoting() Line 1141 C++
combase.dll!InitChannelIfNecessary() Line 1492 C++
combase.dll!CGIPTable::RegisterInterfaceInGlobalHlp(IUnknown * pUnk, const _GUID & riid, unsigned long mshlflags, unsigned long * pdwCookie) Line 798 C++
combase.dll!CGIPTable::RegisterInterfaceInGlobal(IUnknown * pUnk, const _GUID & riid, unsigned long * pdwCookie) Line 759 C++
propsys.dll!CApartmentLocalObject::_RegisterInterfaceInGIT() Unknown
propsys.dll!CApartmentLocalObject::_SetApartmentObject(struct IUnknown *) Unknown
propsys.dll!CApartmentLocalObject::SetApartmentObject(struct IUnknown *) Unknown
propsys.dll!PSCoerceToCanonicalValue() Unknown
windows.storage.dll!AssocCoerceKinds() Unknown
windows.storage.dll!_AssocGetKindsForExtension@12() Unknown
windows.storage.dll!CFileAssocList::InitializeWithExtension(unsigned short const *) Unknown
windows.storage.dll!AssocCreateListForFile() Unknown
windows.storage.dll!AssocCreateForFile() Unknown
windows.storage.dll!CFileSysItemString::_EnsureAssocArray() Unknown
windows.storage.dll!CFSFolder::_GetNormalDisplayName() Unknown
windows.storage.dll!CFSFolder::GetDisplayNameOf() Unknown
shell32.dll!_DisplayNameOfW@20() Unknown
shell32.dll!_GetFileInfoSections() Unknown
shell32.dll!SHGetFileInfoW() Unknown
shell32.dll!_SHGetFileInfoWStub@20() Unknown
comdlg32.dll!_GetFileTitleX@12() Unknown
comdlg32.dll!_GetFileTitleW@12() Unknown
tiptsf.dll!CImmersiveFocusTracker::_IsWinJSApp(void) Unknown
tiptsf.dll!CImmersiveFocusTracker::CImmersiveFocusTracker(void) Unknown
tiptsf.dll!`dynamic initializer for 'CImmersiveFocusTracker::s_theTracker''() Unknown
msvcrt.dll!__initterm() Unknown
tiptsf.dll!__CRT_INIT@12() Unknown
tiptsf.dll!__DllMainCRTStartup() Unknown
ntdll.dll!_LdrxCallInitRoutine@16() Unknown
ntdll.dll!LdrpCallInitRoutine() Unknown
ntdll.dll!LdrpInitializeNode() Unknown
ntdll.dll!LdrpInitializeGraphRecurse() Unknown
ntdll.dll!LdrpPrepareModuleForExecution() Unknown
ntdll.dll!LdrpLoadDllInternal() Unknown
ntdll.dll!LdrpLoadDll() Unknown
ntdll.dll!LdrLoadDll() Unknown
KernelBase.dll!LoadLibraryExW() Unknown
user32.dll!__ClientLoadLibrary() Unknown
ntdll.dll!_KiUserCallbackDispatcher@12() Unknown
user32.dll!CreateWindowInternal() Unknown
user32.dll!_CreateWindowExW@48() Unknown
install.exe!ThreadProc(void * pvContext) Line 138 C++
kernel32.dll!@BaseThreadInitThunk@12() Unknown
ntdll.dll!__RtlUserThreadStart() Unknown
ntdll.dll!__RtlUserThreadStart@8() Unknown