installer – WiX – 将参数传递给CustomAction(DLL)
发布时间:2020-12-14 01:51:37 所属栏目:Windows 来源:网络整理
导读:我有一个旧的WiSE安装程序的DLL,我正在尝试使用WiX,所以我很确定DLL可以与基于MSI的安装程序一起使用. 这是我的定义: Binary Id="SetupDLL" SourceFile="../Tools/Setup.dll" /CustomAction Id="ReadConfigFiles" BinaryKey="SetupDLL" DllEntry="readConfi
我有一个旧的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) 我在哪里可以传递参数? 解决方法
您无法直接传递参数,因为为了使其工作,您的函数必须以恰当的足迹导出.当您在自定义操作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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |