Отмена регистрации COM DLL в проекте установки C # - PullRequest
1 голос
/ 14 мая 2010

Я застрял на этом некоторое время. Я постараюсь объяснить в простейших терминах и, насколько мне известно. Я буду соблюдать любую помощь.

У меня есть проект C #, который использует скомпилированную VB6 ActiveX DLL, которую я постоянно обновляю. Я компилирую проект установки, отправляю его клиенту, и они запускают установку. При создании обновленного проекта установки я бы увеличил «Версия» проекта установки, чтобы он не беспокоился о «Другая версия уже установлена».

То, что начало происходить после нескольких обновлений, я начал замечать, что DLL не будет обновлена ​​до новой версии в установщике. На клиентском компьютере была установлена ​​и зарегистрирована исходная DLL. Первый признак: метод не нашел исключений из клиентского кода C #.

Это не общая библиотека DLL, и она нужна только этому приложению.

Я заметил, что при удалении приложения (с помощью обычной процедуры) DLL также не удаляется из папки приложения, хотя я бы установил для свойства этого файла «Permanent» значение false. Регистрационные записи в реестре также поддерживаются.

Я обновляю в VS6.0 версию DLL (обычно увеличиваю номер сборки) перед ее сборкой. Затем в VS2008 я удаляю его из списка «Ссылки» и снова добавляю его на вкладке «Обзор», не перерегистрируя его на моем компьютере разработчика и не добавляя его на вкладке COM.

Я думал об этих вариантах.

  • Пользовательский шаг в проекте установки для regsvr32.exe / u «жестко закодированный путь моей dll» при удалении (некрасиво)
  • Каким-то образом выясните, как свойство Isolate может работать для меня без регистрации
  • Узнайте, как выполнить проект установки «Условия», который бы фактически проверял версию библиотеки и обновлял файл соответствующим образом при каждой установке)

Любая помощь будет невероятно желанной.

1 Ответ

0 голосов
/ 29 мая 2014

Из любопытства? Почему бы не попробовать использовать WiX? http://wixtoolset.org/

Он отлично подходит для сборки инсталляторов, и вы можете сделать это так же просто, как:

<File Id="guifreak3" Name="Guifreaks.NavigationBar.XmlSerializers.dll" Source="$(var.Plex.MobileHub.Client.Interface.TargetDir)Guifreaks.NavigationBar.XmlSerializers.dll"/>

Wix автоматически удалит DLL при удалении.

...