WiX - Передающие параметры к CustomAction (DLL)

У меня есть DLL из старого установщика WiSE, что я пытаюсь получить работу в WiX, таким образом, я вполне уверен работы DLL с основанными на MSI установщиками.

Вот мое определение:

<Binary Id="SetupDLL" SourceFile="../Tools/Setup.dll" />
<CustomAction Id="ReadConfigFiles" BinaryKey="SetupDLL" DllEntry="readConfigFiles" />

и использование:

<Publish Dialog="InstallDirDlg" Control="Next" Event="DoAction" Value="ReadConfigFiles" Order="3">1</Publish>

Моя функция C++ похожа на это:

extern "C" UINT __stdcall ReadConfigFiles(MSIHANDLE hInstall, CHAR * szDirectory)

Куда точно я могу передать в параметрах?

5
задан glenneroo 28 April 2010 в 18:20
поделиться

1 ответ

Вы не можете передавать параметры напрямую, потому что для того, чтобы это работало, ваша функция должна быть экспортирована с точно правильным размером. Когда вы вызываете readConfigFiles в своей dll с настраиваемым действием, он должен иметь следующий размер:

extern "C" UINT __stdcall readConfigFiles(MSIHANDLE hInstaller);

Вы можете использовать параметр hInstaller для чтения свойств из MSI. Используйте MsiGetProperty () :

HRESULT GetProperty(MSIHANDLE hInstaller, LPCWSTR property, LPWSTR value, DWORD cch_value) {
    UINT err = MsiGetProperty(hInstaller, property, value, &cch_value);
    return (err == ERROR_SUCCESS ? S_OK : E_FAIL);
}

Затем просто убедитесь, что вы установили свойство в своем файле .wxs:

<Property Id="YOUR-PROPERTY-NAME">your-property-value</Property>
5
ответ дан 14 December 2019 в 19:06
поделиться
Другие вопросы по тегам:

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