2017-12-14 36 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にデータを取得するために[カスタムアクション名]プロパティを設定しなければならないことは分かりませんでした。今それは動作します! –

+0

それは私がそれが言いたい/フォーマットされたことがいかに悪いかでそれを得たことは驚くべきことです。申し訳ありません、それは午前中に非常に早かったし、私はまだコーヒーを飲んでいませんでした。 –

関連する問題