2017-12-14 22 views
0

C++ DLL의 CustomActionData 속성에서 데이터를 가져 오려고하지만 지연된 시퀀스 중에 항상 비어 있습니다. UI 시퀀스에서 실행 된 CA에서 정확히 동일한 코드를 사용하면 모든 코드가 훌륭하게 작동합니다.지연된 사용자 지정 동작으로 CustomActionData 가져 오기

 UINT iCASize = 0; 
     UINT uiStat = MsiGetProperty(hInstall, TEXT("CustomActionData"), TEXT(""), &iCASize); 
     if (uiStat == ERROR_MORE_DATA) 
     { 
      // this means there are data to read. Allocate array for all data and read it (+1 for null termination) 
      pCustData = new WCHAR[iCASize + 1]; 
      uiStat = MsiGetProperty(hInstall, TEXT("CustomActionData"), pCustData, &iCASize); 
     } 

무엇이 잘못 되었습니까?

답변

0

이 C++ 코드에 문제가 있거나 (20 년 동안 C++을 수행하지 못했습니다) 또는 CustomActionData를 올바르게 설정하지 않았을 가능성이 있습니다.

지연된 사용자 지정 동작 전에 직접 컨텍스트에서 예약 된 사용자 지정 동작이 필요합니다. 설정하는 속성은 지연된 CA의 이름입니다.

에서 CustomAction 이름 : SetSomething 재산권 : 뭔가 = 값 : FOO (안 CustomActionData = FOO)

에서 CustomAction 이름 : 뭔가 MsiGetProperty (... "CustomactionData ...");

+0

고마워요! CustomActionData에 데이터를 가져 오기 위해 [custom action name] 속성을 설정해야한다는 것을 알지 못했습니다. 이제 작동합니다! –

+0

당신이 그것을 말로 표현했거나 형식이 잘 잡히지 않았다는 것이 놀라 울 정도입니다. 미안 해요. 오전에 일찍 왔는데 아직 커피 마시지 않았어요. –