System.Runtime.InteropServices.COMException: '[24] KdoLib: Неизвестная ошибка.' - PullRequest
1 голос
/ 29 апреля 2019

Я создал форму установки для своего пользовательского модуля. При запуске модуля администрирования я могу установить некоторые настройки для времени выполнения пользовательского модуля, используя batchClass.get_CustomStorageString("key"); (получить значение по ключу) и batchClass.set_CustomStorageString("key", "value"); (установить значение по ключу). Находясь в модуле администрирования, я могу получить доступ к данным хранилища при нескольких запусках, поэтому все в порядке.

При запуске пакетного менеджера во время выполнения пользовательский модуль пытается получить доступ к данным с помощью того же ключа и выдает эту ошибку

System.Runtime.InteropServices.COMException: '[24] KdoLib: Неизвестно Ошибка ".

Само сообщение об ошибке не дает информации о том, что пошло не так. Форма установки имеет дело с партией типа IBatchClass, а среда выполнения имеет дело с типом IBatch. Таким образом, среда выполнения использует batch.get_CustomStorageString("key");. Это неправильный способ доступа к данным?

1 Ответ

1 голос
/ 03 мая 2019

Кажется, я решил это самостоятельно. Во время выполнения я должен извлечь данные настройки. Это возвращает мне пакетные классы, и они возвращают мне текущий пакетный класс. Сам пакетный класс содержит пользовательские строки хранения для доступа.

Код будет

    private const string BATCH_CLASSES = "BatchClasses";
    private const string BATCH_CLASS = "BatchClass";
    private const string BATCH_CLASS_CUSTOM_STORAGE_STRINGS = "BatchClassCustomStorageStrings";
    private const string BATCH_CLASS_CUSTOM_STORAGE_STRING = "BatchClassCustomStorageString";

    public void ProcessBatch(IBatch batch)
    {
        IACDataElement setupElement = batch.ExtractSetupACDataElement(0);
        IACDataElementCollection batchClasses = setupElement.FindChildElementByName(BATCH_CLASSES).FindChildElementsByName(BATCH_CLASS);
        IACDataElement batchClass = batchClasses[1]; // Kofax starts at 1 // always take the first item because there is only one?
        IACDataElement customStorageStrings = batchClass.FindChildElementByName(BATCH_CLASS_CUSTOM_STORAGE_STRINGS);

        IACDataElement customStorageItem = customStorageStrings.FindChildElementByAttribute(BATCH_CLASS_CUSTOM_STORAGE_STRING, "Name", "-- myKey --");
        string customStorageItemValue = customStorageItem["Value"];
    }

Я нашел пример кода на

... \ CaptureSV \ Source \ Образцы проектов \ Workflow \ WFSample

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...