【问题标题】:Installshield use a custom dll from another custom dllInstallshield 使用来自另一个自定义 dll 的自定义 dll
【发布时间】:2012-05-11 08:43:54
【问题描述】:

我正在重构一个旧的 installshield 应用程序,我需要执行一个从自定义 dll 调用函数的操作。不幸的是,此操作执行的功能取决于另一个自定义 dll。所以我的问题是:“是否有可能让自定义 dll 依赖于另一个自定义 dll,如果可以,如何?”

当我尝试运行安装程序时,它崩溃并出现错误“安装程序在完成之前被中断...”然后我将第二个自定义 dll 复制到我添加到 PATH 的文件夹中,一切正常。当然,我不能指望我的客户手动完成。

我正在使用 Installshield 2008,但我相信我的问题的答案对于所有版本都是相同的。

编辑:也许我的问题不够清楚,我将举个例子: 假设我有一个具有函数的.dll:

UINT __stdcall
PerformAction(MSIHANDLE hInstall)    // IN
{
  ...
  help();
  ...
}

help() 在 b.dll 中定义。现在,当我创建一个新操作时,我将它的 dll 设置为 a.dll,并将其函数名称设置为 PerformAction,但无法表明这取决于 b.dll 当我将 b.dll 复制到包含在 PATH 中的文件夹时,安装程​​序可以正常工作,但如果我不这样做,它会失败。

【问题讨论】:

    标签: dll installation installshield


    【解决方案1】:

    这里最简单的 InstallShield 方法是使用支持文件来代替或补充二进制表条目。 Windows Installer 只会为自定义操作提取单个 DLL,但如果您引用 SUPPORTDIR 中的文件,它可以使用多个。

    【讨论】:

    • 你如何告诉 install shield 使用来自 SUPPORTDIR 的文件?你能举出我描述的例子吗
    • InstallShield 会将文件解压缩到 SUPPORTDIR 并设置与目录路径同名的属性(使用 MsiGetProperty)。从那里您可以使用 LoadLibrary() 将您的 DLL 加载到内存中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-25
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多