在延迟的自定义操作中获取CustomActionData

时间:2017-12-14 10:40:35

标签: c++ windows-installer custom-action

我尝试从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);
        }

你们中的任何一个人都知道可能出现什么问题?

1 个答案:

答案 0 :(得分:1)

这个C ++代码有问题(我二十年没有做过c ++),或者更有可能你没有正确设置CustomActionData。

您需要在延迟自定义操作之前在紧邻上下文中安排自定义操作。它设置的属性是延迟CA的名称。

习惯名称:SetSomething属性:Something = Value:FOO(Not CustomActionData = FOO)

习惯名称:MsiGetProperty(......“CustomactionData”......);