Изменение языков отображения на турецкий приводит к ошибкам "80070002" в COM Interop - PullRequest
1 голос
/ 02 декабря 2011

Я в полном замешательстве, поэтому то, что я ищу, это спекуляция.Или, может быть, кто-то на самом деле знает, что происходит.

У меня есть программа, написанная на VB6, в которой каждый шрифт элемента пользовательского интерфейса установлен на "MS Sans Serif, 7 point", чтобы создать английский / турецкий язык.локализация.Локализованные строки скомпилированы в EXE-файл VB6, и существует специальный код для горячего переключения между языками.

Программа обращается через COM к сборке .NET DLL, которая содержит спутниковую сборку "tr" сэто, так что это тоже в миксе.

С чистой тестовой системой, установленной с языком дисплея (НЕ настройкой не-unicode, другой, более общий) на "английский", программа работает без проблем,

Когда установлено турецкое значение, система .NET Interop возвращает «Ошибка времени выполнения -2147024894 (80070002)» - Ошибка автоматизации - Система не может найти указанный файл. "как только (оказывается) .NET DLL вызывается.(РЕДАКТИРОВАТЬ: Это может быть не .NET DLL. Я открыл инцидент с Microsoft для получения дополнительной информации из глубокой трассировки.)

Поскольку это тест чистой системы, не было установлено никаких диагностических инструментов, но трассировка с Sysinternals ProcMon не смогла показать мне что-то, что я мог бы распознать.

Возникает вопрос: это правильный инструмент для отслеживания моей неясной маленькой ошибки «файл не найден»?Есть ли лучшие инструменты?Что я должен искать?

Но, по сути, кто-нибудь знает, что изменится при изменении языка дисплея, что может привести к сбою EXE VB6 или Interop DLL?

(РЕДАКТИРОВАТЬ) - я проверил это на пяти разных языках отображения;только турецкий терпит неудачу.

Ответы [ 2 ]

0 голосов
/ 02 июня 2012

Я не могу объяснить источник этой ошибки. Вместо этого после удаления директивы AMUS из установщика ошибка больше не возникает после установки. В соответствии с кратким изложением проблемы Microsoft после того, как я провел некоторое тестирование и больше не мог его воспроизвести:

Теория: что-то не так с вашим установочным пакетом (MSI упаковано с помощью InstallShield). Вы использовали «REINSTALL = AMUS» установить параметр, который является опасным параметром, поскольку он позволяет «Файл понижений». Более новые файлы могут быть перезаписаны более старыми версиями. Вероятно, был перезаписан файл с неправильной версией, и это не удалось загрузить, поскольку зависимость была для более новой версии.

Итак ... Я отмечу это как ответ с этим ответом и добавлю ключ установщика Windows к вопросу. Держитесь подальше от «AMUS» при вызове установщика Windows ...

0 голосов
/ 09 декабря 2011

Бьюсь об заклад, у вас есть я (я) там!

Я не знаю, как вы загружаете свои библиотеки DLL, или если вы изменили только нить пользовательского интерфейса или культуру рабочих потоков на турецкий, так что я могу немного отключиться, НО ...

Перепроверьте, какие файлы загружаются, какие пути, какие строки важны и т. Д. Если в них есть i, I и вы используете операции с регистром (для понижения, для верха), то все пойдет не так с турецким языком.

У нас была похожая проблема с нашим приложением .net, и было бы сложно исправить и обойти, используя определенную культуру для некоторых вещей, но вы не можете доверять верхнему или нижнему и турецкому языку!

удачи.

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