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