В настоящее время у меня есть решение C #, которое содержит библиотеку классов, установщик и проекты установки. Проект установки генерирует MSI для установки моей библиотеки классов (dll), зарегистрированной vsdrfCOM, на которую ссылается после установки стороннее приложение на клиенте конечных пользователей. У меня нет никакого контроля над сторонним приложением. Все это работает, как и ожидалось, и на мою библиотеку классов ссылаются без проблем, и ее можно установить / переустановить через развернутый MSI.
К сожалению, проблема, которую я пытаюсь решить, заключается в том, как применять обновления к библиотеке классов (dll), не ожидая, что конечный пользователь удалит через MSI, загрузит новый MSI и запустит его. Также есть папки / файлы пользовательских состояний, которые я бы хотел сохранить. По сути, просто переписать библиотеку классов (dll). Первоначально я снимал для инициализации библиотеки, поиска удаленного местоположения, проверки версии и загрузки новой библиотеки DLL, если это необходимо. Затем сообщите пользователю, что ему нужно перезапустить стороннее приложение.
Простая загрузка новой dll и создание паролей поверх старой не похоже на работу, даже если поддерживаются CLSID, так как кажется, что реестру что-то не нравится. Вдохновленный проектом автообновления, расположенным здесь, http://www.codeproject.com/KB/vb/Auto_Update_Revisited.aspx
ClickOnce не работает с библиотеками классов, если к нему не привязано приложение Forms / Console.
- Не уверен, что новый MSI можно загрузить и запустить поверх старого пассивно, без перезаписи файлов состояния пользователя, упомянутых выше.
Итак, есть ли способ обновить dll, которая была установлена с MSI при указанных выше условиях?
Спасибо.