1

对于我的第一个导出脚本,我使用了 KCEC 示例和APIRefExport.chm文档,通过将示例代码替换为我自己的代码来创建我的项目。

我想从头开始创建一个干净的导出脚本。

我创建了一个新的类库项目并将其命名为EmptyExportScript(占位符)。目标框架是.Net 4。平台目标是x86,输出路径是.....\Program Files (x86)\Kofax\CaptureSS\ServLib\Bin\. 调试时我想启动管理模块,所以我设置了这个路径.......\Program Files (x86)\Kofax\CaptureSS\ServLib\Bin\

选中“使程序集 COM-Visible”选项,我将Kofax.ReleaseLib.Interop.dll添加到引用中。

对于KfxReleaseScript.cs,我添加了此代码

[ClassInterface(ClassInterfaceType.None)]
[ProgId("KFXTS.EmptyExportScript.KfxReleaseScript")]
public class KfxReleaseScript
{
    public ReleaseData documentData;

    // public KfxReturnValue OpenScript()

    // public KfxReturnValue ReleaseDoc()

    // public KfxReturnValue CloseScript()
}

对于KfxReleaseScriptSetup.cs,我添加了此代码

[ClassInterface(ClassInterfaceType.None)]
[ProgId("KFXTS.EmptyExportScript.KfxReleaseScriptSetup")]
public class KfxReleaseScriptSetup
{
    public ReleaseSetupData setupData;

    // public KfxReturnValue OpenScript()

    // public KfxReturnValue CloseScript()

    // public KfxReturnValue RunUI()

    // public KfxReturnValue ActionEvent(KfxActionValue actionID, string data1, string data2)
}

最后,我Form在运行 UI 时向项目添加了一个。

为了注册,我添加了EmptyExportScript.inf这个内容

[Scripts]
Empty Export

[Empty Export]
SetupModule=EmptyExportScript.dll
SetupProgID=KFXTS.EmptyExportScript.KfxReleaseScriptSetup
SetupVersion=10.2
ReleaseModule=EmptyExportScript.dll
ReleaseProgID=KFXTS.EmptyExportScript.KfxReleaseScript
ReleaseVersion=10.2
SupportsNonImageFiles=True
SupportsKofaxPDF=True
RemainLoaded=True
SupportsOriginalFileName=False

在构建项目时,将 .dll 和 .inf 文件放入 kofax bin 目录中。

我认识到其他脚本也有一个 .pdb 和 .dll.config 文件。

我如何得到它们?

尝试安装自定义脚本时,我可以将其添加到脚本安装管理器中,但无法安装。没有要安装的东西,所以我想我缺少 .pdb 和 .dll.config 文件。

还缺少什么吗?

感谢帮助 :)

4

2 回答 2

1

Kofax 不需要pdb文件,但如果您想调试连接器并将其附加到 release.exe 进程,它们会很方便(在此处了解有关它们的更多信息)。

我不建议将输出路径本身更改为Capture\Bin,而是创建一个构建后事件:

构建后事件

例如,以下行将所有需要的文件复制到文件夹下的单独文件CaptureSS\Bin夹中:

xcopy "$(TargetDir)*" "C:\Program Files (x86)\Kofax\CaptureSS\ServLib\Bin\SmartCAP\kec\SmartCAP.KEC.Template\" /Y /S

有一个dll.config文件是可能的,但很少见。我宁愿建议将特定于流程的数据存储在相应批次类定义的自定义存储字符串对象中(这具有额外的好处,您可以将定义与批次类一起导入/导出,并且您可以显示并拥有它以设置形式更改它)。说了这么多,回到您最初的问题 - 无法安装连接器。

COM 可见性

该程序集需要是 COM 可见的,但您提到它是。为了完整起见,这就是您需要做的事情。请注意,GUID 必须是唯一的(仅当您复制现有解决方案时才相关):

COM 可见程序集

如果您在另一台机器上安装连接器,您需要先使用 regasm.exe 注册它 - 这是一个示例:

"C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe" SampleExport.dll /codebase /tlb:SampleExport.tlb

程序ID

然后,您的 .inf 文件需要包含精确的 ProgID:

[Scripts]
SampleExport

[SampleExport]
SetupModule=SampleExport.dll
SetupProgID=SampleExport.Setup
SetupVersion=11.0
ReleaseModule=SampleExport.dll
ReleaseProgID=SampleExport
ReleaseVersion=11.0
SupportsNonImageFiles=True
SupportsKofaxPDF=True

ReleaseScript.csReleaseSetupScript.cs文件都需要正确的属性,例如:

[ProgId("SampleExport")]
public class ReleaseScript

如果仍然无法正常工作,请向我们提供详细的错误消息(可在 CaptureSV\Logs 中找到)。

于 2019-01-21T19:03:32.227 回答
0

我不得不在没有 BOM 的情况下将文件格式从UTF-8更改为UTF-8 。

这对我有用。

于 2019-01-23T14:18:48.883 回答