Получение CustomActionData в отложенном настраиваемом действии
Я пытаюсь получить данные из свойства CustomActionData в C++ dll, но он всегда пуст во время отложенной последовательности. Если я использую точно такой же код в CA, выполняемом во время последовательности UI, все это прекрасно работает.
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 ответ
Либо что-то не так с этим кодом C++ (я не делал C++ за двадцать лет), или, скорее всего, вы неправильно установили CustomActionData.
Вам нужно, чтобы настраиваемое действие было запланировано в непосредственном контексте перед отложенным настраиваемым действием. Свойство, которое это устанавливает, является именем отложенного CA.
Имя привязки: SetSomething Свойство: Something = Значение: FOO (не CustomActionData = FOO)
Имя привязки: Something MsiGetProperty( ... "CustomactionData" ...);