【发布时间】: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