Я устанавливаю стандартный загрузчик WiX для установки нескольких пакетов в цепочку.Загрузчик отображается в списке установленных приложений и функций.Я могу использовать эту запись для удаления нашего программного обеспечения на большинстве систем, но на других ничего не происходит после подтверждения того, что я хочу разрешить изменения в системе.
При сравнении с другим ПК (оба Win 10, разные редакции).) где процесс удаления запускается правильно, я обнаружил, что командные строки запущенного процесса install.exe различаются, см. этот снимок экрана Process Explorer для работающего случая и этот снимок экрана неисправного случая .В последнем случае окно установки не отображается, и install.exe не загружает несколько DLL-библиотек, которые в противном случае были бы загружены, например CoreMessaging.dll, CoreUIComponents.dll, explorerframe.dll и т. Д.
Так что по какой-то причинеисполняемый файл копируется из его местоположения в кэше пакетов во временную папку Windows.Если я открою командную оболочку и перейду во временную папку, я смогу нормально запустить install.exe / uninstall.
Почему система копирует установщик во временную папку?Как я могу отладить это - я не могу найти ничего в системном журнале событий, и журнал загрузчика заканчивается через несколько строк, когда сообщается о местоположении файла журнала.
Большое спасибо за вашу помощь!
С уважением, Хольгер
Редактировать 1:
Учитывая, что выполнение из кэша пакетов из временной папки Windows не имеет значения для этой проблемы,Я прикрепил отладчик, используя отладочные символы записи.В проблемном случае основной поток застревает в UiCreateMessageWindow в строке 63:
// Wait for either the thread to be initialized or the window to exit / fail prematurely.
::WaitForMultipleObjects(countof(rgWaitHandles), rgWaitHandles, FALSE, INFINITE);
Edit 2:
Это стек вызовов потока, которыйвызов WaitForMultipleObjects ожидает:
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