Я застрял на этом некоторое время. Я постараюсь объяснить в самых простых терминах и в меру своих знаний. Я приму любую помощь.
У меня есть проект C#, в котором используется скомпилированная VB6 DLL ActiveX, которую я постоянно обновляю. Я компилирую проект установки, отправляю его клиенту, и он запускает установку. При создании обновленного проекта установки я бы увеличил «Версия» проекта установки, чтобы он не беспокоился о том, что «Другая версия уже установлена».
То, что начало происходить после нескольких обновлений, я начал замечать, что DLL не будет обновляться до новой версии в установщике. На клиентском компьютере была установлена и зарегистрирована исходная библиотека DLL. Первый симптом: метод не нашел исключений из клиентского кода C#.
Это не общая DLL, и она нужна только этому приложению.
Я заметил, что при удалении приложения (посредством обычной процедуры) DLL также не удаляется из папки приложения, хотя я бы установил для свойства этого файла «Постоянный» значение false. Также ведутся регистрационные записи в реестре.
Я обновляю в VS6.0 версию DLL (обычно увеличиваю номер сборки) перед ее сборкой. Затем в VS2008 я удаляю его из ссылок и снова добавляю на вкладке «Обзор», не перерегистрируя его на моем компьютере-разработчике и добавляя его с вкладки COM.
Я думал об этих вариантах.
- Пользовательский шаг в проекте установки для regsvr32.exe /u «жестко запрограммированный путь к моей dll» при удалении (уродливый)
- Как-то узнать, как свойство «Изолировать» может работать для меня без регистрации
- Узнайте, как выполнить установочный проект «Условия», который бы фактически проверял версию библиотеки и обновлял файл соответствующим образом при каждой установке)
Любая помощь будет невероятно приветствоваться.