Я пытаюсь запустить некоторый неуправляемый код из C# ca в WIX. У меня есть обертка вокруг функции CryptProtectData, этот код отлично работает, если запускаться из командной строки администратора. Я назначил ca как отложенный, надеясь, что он будет работать во время поднятой сессии, но в этом контексте он не работает.Вызов API защиты данных изнутри CustomAction
Расписание выглядит следующим образом:
<CustomAction Id="SetCustomActionDataValue" Property="EncryptValues" Value="foo=bar;...;" />
<CustomAction Id="EncryptValues" BinaryKey="InstallerCustomAction.CA.dll" DllEntry="EncryptValues" Execute="deferred" Impersonate="no" HideTarget="no" Return="check" />
<InstallExecuteSequence>
<Custom Action="SetCustomActionDataValue" After="InstallFiles" />
<Custom Action="EncryptValues" After="SetCustomActionDataValue" />
</InstallExecuteSequence>
Что нужно сделать, чтобы что-то вроде этого, чтобы работать во время установки, предпочтительно после того, как файлы и записи реестра фиксируются в системе?
Проверьте последовательность выполнения в ORCA и запустите свой CA после последнего пользовательского действия перед InstallFinlize. InstallFinilize - это последнее customAction, которое выполняется как отложенное. – vinay
Это не помогло. Очевидно, что есть что-то в среде установщика Windows как на стадии немедленного, так и на отсрочке, которая предотвращает запуск кода DPAPI. Тот же код отлично работает при вызове из простого консольного приложения. – Ritmo2k