加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

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>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读