Я создал установщик (основной тип установки Windows) несколько недель назад (версия 1.0.0), который развертывает некоторые DLL, а также регистрирует один из них для com-interop (с vdsrpCOM). На самом деле это неважно. У меня также есть вспомогательный класс, который выполняет некоторые функции onBeforeInstall и onAfterInstall с помощью настраиваемых действий (извлечение ZIP-библиотеки в определенном месте).Обновление MSI Обновление с Com interop
Теперь пришло время обновить мой продукт и, более конкретно, мою зарегистрированную DLL. Итак, я изменил файл и версию сборки всех DLL, которые должны обновиться и отметить установщик RemovePreviousVersions = true. Конечно, помимо обновления файлов и ассемблерных версий моих проектов, я также обновляю версию моего установщика (до 1.1.1).
При установке этой новой версии каждая DLL, имеющая новую версию файла, получает красивую перезапись, а те, у которых нет измененной файловой системы, не являются (конечно, MSI - это умный, «если вещь не изменилось, почему я должен его заменить?? ...)
Единственная ошибка, с которой я сталкиваюсь сейчас, заключается в том, что моя зарегистрированная со списком dll не зарегистрирована очень хорошо. Я также замечаю, что в ole-view моя dll все еще зарегистрирована, но в некоторых разделах кода в разделе «Регистрирование» отсутствуют некоторые строки кода: MyNamespace.MyClass = MyNamespace.MyClass CLSID = {bla-bla-bla-bla -bla}
Устранение неполадок и устранение неполадок. Но, конечно, я не хочу unistall и reinststall, потому что это то, что MSI должен заботиться.
Итак, я думал, так как у меня есть installerHelper, который запускается на onBeforeInstall с помощью настраиваемого действия, почему бы мне просто не проверить, установлена ли версия, и если да, удалите ее.
Теперь единственная константа между версиями в UpgradeCode. И там, где начинается мой вопрос: Как я могу получить код обновления с моим вспомогательным классом, проверьте предыдущие версии с одинаковым кодом обновления, UnInstall те в методе onBeforeInstall?
Или, может быть, лучше, как я могу гарантировать, что регистрация com-register хорошо обрабатывается при обновлении? (возможно, даже проще, но я уверен, что Идея может заставить полностью unistall/переустановить)
ahm, для регистрации моего .net com-доступного класса, я просто отмечаю основной вывод этого проекта для регистрации как vsdrpCOM. – KenGey
«vsdrpCOM» не является термином установщика Windows. Это термин проекта развертывания Visual Studio. Этот тип проекта был настолько ужасен, что MSFT удалил его из VS2012. Я бы предложил использовать другой инструмент, чтобы получить лучшие результаты. –
Хм, хорошо. Я буду искать другие инструменты. По большей части я на самом деле не разочарован проектом VS Deployment, хотя .. – KenGey