我尝试从c ++ dll中的CustomActionData属性获取数据,但在延迟序列期间它总是为空。如果我在UI序列中执行的CA中使用完全相同的代码,那么一切都很好。
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 :(得分:1)
这个C ++代码有问题(我二十年没有做过c ++),或者更有可能你没有正确设置CustomActionData。
您需要在延迟自定义操作之前在紧邻上下文中安排自定义操作。它设置的属性是延迟CA的名称。
习惯名称:SetSomething属性:Something = Value:FOO(Not CustomActionData = FOO)
习惯名称:MsiGetProperty(......“CustomactionData”......);