Я пытаюсь получить данные из свойства 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);
}
У кого-нибудь из вас есть идея, что может быть не так?
Либо что-то не так с этим кодом C ++ (я не делал c ++ за двадцать лет), или, скорее всего, вы неправильно установили CustomActionData.
Вам нужно, чтобы настраиваемое действие было запланировано в непосредственном контексте перед отложенным настраиваемым действием. Свойство, которое это устанавливает, является именем отложенного CA.
Имя привязки: SetSomething Свойство: Something = Значение: FOO (не CustomActionData = FOO)
Имя привязки: Something MsiGetProperty (… «CustomactionData» …);
Других решений пока нет …