WIX пользовательское действие C++

У меня есть основное пользовательское действие WIX:

        UINT __stdcall MyCustomAction(MSIHANDLE hInstaller)
        {   
            DWORD dwSize=0;
            MsiGetProperty(hInstaller, TEXT("MyProperty"), TEXT(""), &dwSize);
            return ERROR_SUCCESS;
        }

Добавленный к установщику:

   <CustomAction Id="CustomActionId" FileKey="CustomDll" DllEntry="MyCustomAction"/>
   <InstallExecuteSequence>
       <Custom Action="CustomActionId" Before="InstallFinalize" />
   </InstallExecuteSequence>

Проблема состоит в том, что, независимо от того, что я делаю, дескриптор hInstaller не допустим. Я установил действие для фиксации, задержал, изменил место в последовательности InstallExecute, hInstaller всегда не допустим.

Любая справка ценилась бы.Спасибо.

5
задан agf 29 September 2011 в 14:57
поделиться

1 ответ

Вам нужно экспортировать вызываемую функцию, чтобы MSI мог вызвать ее, используя недекорированное имя в стиле C

Замените свой код на этот

    extern "C" _declspec(dllexport) UINT __stdcall MyCustomAction(MSIHANDLE hInstall);

    extern "C" UINT __stdcall MyCustomAction(MSIHANDLE hInstall)
    {   
        DWORD dwSize=0;
        MsiGetProperty(hInstaller, TEXT("MyProperty"), TEXT(""), &dwSize);
        return ERROR_SUCCESS;
    }
7
ответ дан 13 December 2019 в 22:07
поделиться
Другие вопросы по тегам:

Похожие вопросы: