gpt4 book ai didi

c++ - WiX c++::在延迟 ca 中使用 dll 条目的正确方法

转载 作者:太空宇宙 更新时间:2023-11-04 12:09:05 25 4
gpt4 key购买 nike

我有一个包含 2 个不同 .cpp 的项目。MyProj 由 MyCPP1 和 MyCPP2 组成MyCPP1 包含使用 wix 从 msi 执行的不同功能。

extern "C" __declspec(dllexport) UINT __stdcall MyCAFunction(MSIHANDLE hInstall)
{
TCHAR name[MAX_PATH] = {0};
DWORD nameLen = MAX_PATH;
TCHAR keydir[MAX_PATH] = {0};
DWORD keydirLen = MAX_PATH;

MsiGetProperty (hInstall, L"Val1", name, &nameLen);
MsiGetProperty (hInstall, L"Val2", keydir, &keydirLen);
}

wix 代码是:

<CustomAction Id="MyCA.Props" Return="check" Property="MyCA" value="Val1=[LogonUser];Val2=[INSTALLDIR]"/>
<CustomAction Id="MyCA" Return="check" Execute="deferred" BinaryKey="Binary1" DllEntry="_MyCAFunction@4" HideTarget="no" />
<Binary Id="Binary1" SourceFile="$(var.ConfDir)MyProj.dll" />

嗯...所以我有一个错误:

Error 1723: A DLL required for this install to complete could not be run.

我需要挖什么路?

我对 CA 类型有一些想法...例如带有 FileKey 引用的 CA 的基本类型是 17。但我的 CA 类型是 1041(Orca 帮助)。会不会是我的问题?

我检查了不同类型 CA 的版本。它只是 CA 参数的原因(只是删除 Execute="deferred"将类型从 1041 更改为 17(标准类型)。解决这个问题的最后一件事是 dll。我今天会看到它......有什么建议吗?

尝试了构建 dll 的不同方法。仅适用于由 C++ Wix Custom Action Project 的示例项目构建的 dll。我比较了 3 或 4 个不同的项目。通过 Prop ,通过链接,通过外部依赖......找不到问题......帮助我......

最佳答案

检查从您的 DLL 导出的函数的名称。

为此,运行 dumpbin带有 /exports 标志的 DLL 上的实用程序。

关于c++ - WiX c++::在延迟 ca 中使用 dll 条目的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10601280/

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