2010-05-14 5 views
1

Я застрял на этом некоторое время. Я попробую объяснить в самых простых выражениях и, насколько мне известно. Я буду соблюдать любую помощь.Незарегистрированная COM-библиотека с проектом установки C#

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

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

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

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

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

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

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

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

+0

Почему вы используете для создания программы установки? ClickOnce? InstallShield? Специальная программа настройки? –

+0

Это не большой продукт, и я хотел бы получить некоторый опыт в нем. Я также считаю, что то, что я пытаюсь сделать, является основным. Я буду искать продукт в будущем, но пока это мой выбор. Я ценю ваш комментарий. –

+0

Я попытался установить свойство ссылки на «Изолированный», а свойство Register в проекте установки - registerRelativePath (что-то похожее). Я получаю предупреждение при создании проекта установки, но, похоже, не регистрирует DLL и работает. Однако не удалять его при удалении. –

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^