【问题标题】:Failed to run script function from Custom Actions无法从自定义操作运行脚本功能
【发布时间】:2018-09-24 20:13:09
【问题描述】:

我实现了一个我自己的 installscript 文件,它允许安装程序注册 dll。我将此与自定义操作相结合,以实际运行我创建的函数。我不得不制作这个脚本,因为 dll 无法通过将属性设置为自注册来注册。所以我被困在如何通过自定义操作失败来解决这个问题,以便我可以测试我的脚本。 下面是我的脚本:

#include "Ifx.h"

export prototype RegisterComponents(HWND);

function RegisterComponents(hMSI)

STRING sRunStr;

begin

sRunStr = WINSYSDIR ^ "regsvr32.exe";

LongPathToQuote(sRunStr, TRUE);

//change the directory to target directory
ChangeDirectory(TARGETDIR);

//register dll
if(LaunchAppAndWait(sRunStr, "/s " + 
"C:\NCRUniEmulatorService\NCRUniEmulatorSO.dll", 
WAIT)) < 0) then
MessageBox("NCRUniEmulatorSO.dll", SEVERE);
else
endif;

end;

以下是我的自定义操作:

函数名:注册组件

返回处理:同步

脚本内执行:延迟执行

安装执行顺序:在 PublishProduct 之后

所有其他序列设置都设置为序列中不存在。

日志文件

InstallShield 14:17:18:调用脚本函数 RegisterComponents InstallShield 14:17:18:无法运行脚本功能,错误 0x80020006 InstallShield 14:17:18:CallScriptFunctionFromMsiCA() 结束, 结果 0x643 CustomAction RegisterComponents 返回实际错误 code 1603 但会因为继续标记而被翻译成success

【问题讨论】:

  • 您是否设法使用了 COM 提取?

标签: installshield installscript


【解决方案1】:

这是一个 MSI 项目吗? I would not use self-registration,而是在相关组件的属性页中的 Build 中启用 COM Extract:

如果此提取不起作用,则您可能存在无法加载文件的依赖项。例如缺少资源 dll 或类似的东西。 “COM Extract at Build”的提取过程将填充许多特定于 MSI 的 COM 表,这些表会为您处理所有 COM 注册详细信息(包括回滚支持)。

InstallShield 自助注册:此外,您可以在 Installshield 中为文件启用自助注册,而根本不通过自定义操作代码运行。我认为它在每个文件的属性页中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-17
    • 2010-09-11
    • 2011-02-05
    • 1970-01-01
    • 2014-10-22
    • 1970-01-01
    相关资源
    最近更新 更多