我从旧的WiSE安装程序获得了一个DLL,我正试图在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)
我可以在哪里传递参数?
答案 0 :(得分:5)
您无法直接传递参数,因为要使其工作,您的功能必须以恰当的足迹导出。当您在自定义操作dll中调用readConfigFiles
时,它应该有这样的足迹:
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>