【问题标题】:kofax export script project setupkofax 导出脚本项目设置
【发布时间】:2019-01-21 16:09:23
【问题描述】:

对于我的第一个导出脚本,我使用了 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)
}

最后我在运行 UI 时在项目中添加了Form

为了注册,我添加了带有此内容的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 文件。

还有什么遗漏吗?

感谢您的帮助:)

【问题讨论】:

    标签: kofax


    【解决方案1】:

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

    我不建议将输出路径本身更改为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 必须是唯一的(仅当您复制现有解决方案时才相关):

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

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

    ProgIds

    然后,您的 .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 中找到)。

    【讨论】:

      【解决方案2】:

      我不得不将文件格式从 UTF-8 更改为 UTF-8 without BOM

      这对我有用。

      【讨论】:

        猜你喜欢
        • 2023-03-29
        • 1970-01-01
        • 1970-01-01
        • 2013-10-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-07-15
        • 1970-01-01
        相关资源
        最近更新 更多