Я использую проект установки и развертывания VS 2008 для развертывания смешанного управляемого/неуправляемого приложения. У меня возникли проблемы с регистрацией DLL смешанного режима, используя встроенное свойство регистрации («vsdraCOM», перечисленное значение свойства «Register».) В качестве обходного пути я добавил сборку пользовательской установки .NET (с классом, который происходит из System.Configuration.Install.Installer.) Я уверен, что этот класс запущен и несколько операций успешно устанавливаются и удаляются с помощью кода в этой сборке, включая выполнение точки входа Dll (Un) RegisterServer для нескольких сборок ,Принудительная установка GAC перед запуском .NET custom action?
Тем не менее, одна DLL не успешно регистрируется. Это единственная DLL, которая зависит от некоторых сторонних распространяемых сборок, которые хотят быть установлены в GAC. У меня есть те сборки, которые установлены в GAC благодаря встроенной поддержке этого в проектах установки и развертывания VS 2008, и я знаю, что это работает. Я подтвердил, что происходит то, что пользовательское действие выполняется до того, как установщик выполнит установку GAC.
Whew. Поэтому мой вопрос заключается в том, есть ли способ заставить установщика выполнить установку GAC перед выполнением пользовательского действия? Можно ли использовать свойство «Условие» для пользовательского действия? Если нет, то какая у меня лучшая альтернатива? Захват записей в реестре из библиотеки DLL и добавление их в настройки реестра установщика (не нравится это, потому что кто-то может добавить новые COM-серверы в класс в будущем)? Использование .NET-кода для установки сборки в GAC вручную (пока не знаете, как это сделать)?
Спасибо,
Dave
Спасибо, мы используем installshield, но это будет за несколько недель до того, как компьютер сборки снова запустится, и мне нужна надежная установка ASAP. Решение MSI API кажется многообещающим. FYI, я обнаружил, что System.EnterpriseServices.Internal.Publish.GACInstall() установит произвольную сборку в GAC, но это не идеально по ряду причин («Внутренний», небольшая проверка ошибок, не идеально подходит для отката/удалить семантику.) –