Отмена регистрации COM-dll в проекте установки C#

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

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

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

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

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

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

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

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

Любая помощь будет невероятно приветствоваться.


person lb.    schedule 14.05.2010    source источник
comment
Почему вы используете для создания программы установки? НажмитеОдин раз? Установить щит? Индивидуальная программа установки?   -  person BlueRaja - Danny Pflughoeft    schedule 14.05.2010
comment
Это не большой продукт, и я также хотел бы получить некоторый опыт в этом. Я также считаю, что то, что я пытаюсь сделать, является основным. Я буду искать продукт в будущем, но пока это мой выбор. Я ценю ваш комментарий.   -  person lb.    schedule 14.05.2010
comment
Я попытался установить для свойства ссылки значение «Изолированный», а свойство «Регистрация» в проекте установки — как registerRelativePath (что-то похожее). Я получаю предупреждение при создании проекта установки, но, похоже, DLL не регистрируется и работает. Тем не менее, не удалит его при удалении.   -  person lb.    schedule 14.05.2010


Ответы (1)


Из любопытства? Почему бы не попробовать использовать 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 при ее удалении.

person Aelphaeis    schedule 29.05.2014