WiX - передача параметров в CustomAction (DLL) - PullRequest
5 голосов
/ 28 апреля 2010

У меня есть 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)

Где именно я могу передать параметры?

1 Ответ

5 голосов
/ 28 апреля 2010

Вы не можете передавать параметры напрямую, потому что для того, чтобы это работало, ваша функция должна быть экспортирована с нужной площадью. Когда вы вызываете 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...