2014-07-17 5 views
3

로컬 컴퓨터에서 파일을 탐색하는 데 사용되는 C++ Wix 사용자 지정 동작이 있습니다. Windows Server 2003 및 Windows 7 (내 컴퓨터)에서 설치 프로그램을 실행하면 예상대로 작동합니다. 그러나 Windows Server 2008에서 설치 관리자를 실행하면 사용자 지정 작업이 실패합니다.사용자 지정 작업 디버깅

MsiBreak 환경 변수를 성공적으로 설정하고 원격 디버깅을 사용하여 디버거를 연결할 수 있습니다. 이렇게하면 사용자 지정 작업이 예상대로 작동합니다. 디버거가 연결되지 않은 상태에서 다시 시도하면 파일 열기 대화 상자가 표시되지 않고 사용자 지정 작업 스레드가 충돌합니다 (아래의 충돌 정보). 공통 파일 대화 상자와 공통 항목 대화 상자를 사용하는 사용자 지정 작업을 시도했으며 두 작업 모두 동일한 결과를 얻었습니다.

다른 모든 맞춤 동작이 완벽하게 작동합니다. 아무도 내가 어떻게 진행해야하는지에 대한 아이디어가 있습니까?

감사합니다. 프로젝트의 속성 페이지에서

Problem signature: Problem Event Name: APPCRASH Application Name: MsiExec.exe Application Version: 5.0.7601.17514 Application Timestamp: 4ce792c4 Fault Module Name: KERNELBASE.dll Fault Module Version: 6.1.7601.18409 Fault Module Timestamp: 53159a86 Exception Code: 80000003 Exception Offset: 00013226 OS Version: 6.1.7601.2.1.0.272.7 Locale ID: 1033 Additional Information 1: 0a9e Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 Additional Information 3: 0a9e Additional Information 4: 0a9e372d3b4ad19135b953a78882e789

+0

당신은에 대해 뭔가 말을해야 무엇 "사용자 지정 작업이 실패합니다."실제로 의미합니다. 추락입니까? 대화 상자를 표시하지 않으셨습니까? – PhilDW

+1

80000003이 stackoverflow입니다. – leppie

+0

내가 실제로 의미하는 바는 당신의 코드에서 어디에서 실패 했는가이다. 이것이 스레딩 문제 일 수 있기 때문에 묻습니다. 코드가 STA가 아니면 Windows 및 메시지와 관련된 모든 것이 실패 할 수 있으며 Windows는 UI가 필요할 수도 있으므로 STA를 얻을 수 있기 때문에 디버그 모드에서 작동합니다. 또한이 내용은 OS에 의존하며 MTA이기 때문에 실행 순서에서 신뢰할 수 없습니다. 예를 들어 충돌이 UI 창에 대한 메시지와 관련이있는 경우 비 STA 환경에서 문제가 발생할 수 있습니다. 그러나 CA가 어디에서 불려지는지, 연기되었는지 여부, 충돌시 코드가 무엇을하는지에 대해서는 말하지 않습니다. – PhilDW

답변

0

점검 스레딩 설정이 무엇인지 확인합니다. Visual Studio를 사용할 수 없기 때문에 정확히 어디 있는지 확실하지 않지만 온라인에서 사진을 발견했습니다. 비슷한 것을 찾으십시오.

은 또한 거기에있는 샘플 프로젝트의 일부를 살펴 있습니다 : 그리고 분명히 모든 구성 (디버그/릴리즈 및 x86 및 x64) 설정 http://www.codeproject.com/Articles/1747/MSI-Custom-Action-DLL

enter image description here