Грешка в името на журнала 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
За информация Кодът за грешка показва проблем с препълване на буфера, 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