Зарегистрируйте COM Interop Dlls в WISE
Приложение, о котором я говорю, состоит из vb6 (80%) и C#, .Net Framework 4.0 (20%). Все новые компоненты создаются с помощью C#. С помощью Microsoft Interop Forms Toolkit 2.1 мы создаем пользовательские элементы управления COM, которые мы позже встраиваем в vb6. Для форм мы используем обычные классы для создания и открытия в vb6 (проект COM Visible). Для создания настроек мы используем мудрый.
Локально все работает нормально - проблемы возникают только тогда, когда мы устанавливаем приложение на компьютере, не являющемся разработчиком, с мудрой созданной настройкой
Мы добавили класс для открытия aC# Form в существующий проект инструментария взаимодействия. Он отлично работает на компьютере разработчика, а также, когда мы делаем новую установку на ПК (не dev-machine). Новый класс просто используется для открытия формы.
Но когда мы обновляем наше приложение до более новой версии, этот класс больше не работает. Мы должны удалить старую версию и установить новую версию, чтобы она снова заработала.
У кого-нибудь были подобные проблемы раньше?
Я благодарен за любой совет
1 ответ
Похоже, что это проблема установщика Windows и последовательности во время обновления. Разрешает ли ваше приложение установку параллельно (например, версии 1 и 2 могут быть установлены одновременно) или ваш установщик обновляет более ранние версии до последней версии? Вы можете попробовать войти в систему и просмотреть файл журнала, чтобы точно узнать, что происходит во время процесса установки / обновления.
Вы можете записать MSI- установку, вызвав Msiexec из командной строки.
Это может помочь лучше понять проблему и помочь вам сосредоточиться на устранении проблемы.
редактировать
Из того, что вы описали, кажется, что при новой установке установка работает как положено. При обновлении более ранних версий может показаться, что компоненты COM-взаимодействия не зарегистрированы должным образом. Это может указывать на то, что последовательность событий немного отличается от того, когда компоненты копируются на аппарат и регистрируются по сравнению с удалением существующего продукта. Хотя он не совсем идентичен, см. Этот вопрос и ответ для более подробной информации. Кроме того, ознакомьтесь с действием RemoveExistingProducts в установщике Windows для получения дополнительной информации.
Я хотел бы зарегистрировать установку, которая, как вы знаете, работает без проблем (например, на "чистой" машине), а затем зарегистрировать установку, которая, как вы знаете, не удастся (например, обновление), а затем сравнить два файла журнала, используя инструмент, чтобы увидеть, если выходные данные идентичен Если нет, то это дает вам ключ к пониманию того, где искать. Если они идентичны, возможно, пришло время обратиться к поставщику и выяснить, могут ли они помочь определить причину проблемы.