gpt4 book ai didi

installation - WiX - 将参数传递给 CustomAction (DLL)

转载 作者:行者123 更新时间:2023-12-02 22:59:19 29 4
gpt4 key购买 nike

我从旧的 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>

关于installation - WiX - 将参数传递给 CustomAction (DLL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2732030/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com