Ошибка имени журнала CustomAction 0x8007007a в WiX

В настоящее время я работаю над пользовательским действием в DLL, которое я экспортирую для использования установщиком WiX, и недавно обнаружил следующую ошибку в журнале при запуске установщика:

<exported_name_cut_off>: Error 0x8007007a: Failed to copy CustomAction log name: <exported_name_NOT_cut_off>

Поскольку я относительно новичок в программировании для Windows и Wix, когда я заметил, что имя функции DLL было обрезано в сообщении об ошибке, я сразу подумал, что должно быть какое-то ограничение в 31 символ для имен экспортируемых функций в DLL, но, по-видимому, это не так. ; оказывается, это ограничение WiX, о котором я не знал.

Итак, у меня есть два вопроса здесь:

  1. Есть ли ограничение на длину экспортируемого или импортируемого имени функции в DLL? Я не мог найти упоминания об этом в справке MSDN. Если это уместно, я пишу код на C++ и использую Visual Studio 2010 в Windows 7 x64.

  2. Я нашел это, но, к сожалению, нет хорошего ответа, почему в WiX есть такой предел. Кто-нибудь знает, почему это ограничено таким образом? Это все еще имеет место в версиях WiX выше 3.5.2519 (версия, которую я использую)?


person Joe Bane    schedule 11.10.2012    source источник
comment
FYI Код ошибки указывает на проблему переполнения буфера, 0x8007007A ERROR_INSUFFICIENT_BUFFER Область данных, переданная системному вызову, слишком мала.   -  person Roman R.    schedule 12.10.2012
comment
Да, я видел это, когда искал код ошибки в Visual Studio. Это то, что разработчики WiX должны исправить, верно?   -  person Joe Bane    schedule 12.10.2012
comment
Я полагаю, что это нужно либо задокументировать, либо исправить, но сразу же, поскольку это переполнение буфера, возможно, что-то нужно сократить для обходного пути.   -  person Roman R.    schedule 12.10.2012
comment
На самом деле для этого есть открытая ошибка, которую я только что нашел: sourceforge.net/p/wix/bugs /2542   -  person Joe Bane    schedule 12.10.2012


Ответы (1)


Вы управляете именем, которое вы передаете WcaInitialize; это не обязательно должно быть имя фактической функции или пользовательского действия, поэтому вы можете сократить его, как хотите. Функции WcaLog* используют его в качестве префикса для регистрации, так что это не является жизненно важным; вы даже можете передать NULL, если хотите.

Ограничение по-прежнему существует в бета-версиях WiX v3.6 и v3.7.

person Bob Arnson    schedule 11.10.2012