Модуль слияния оставляет файлы во время удаления

У нас есть Visual Studio 2008, установка и развертывание, проект установки, который устанавливает минимальные файлы и выполняет некоторые настраиваемые действия. У нас также есть несколько проектов модулей слияния, которые развертывает проект установки. У каждого модуля слияния есть папка с возможностью перенастройки модуля с уникальными подпапками, в которые устанавливаются различные компоненты.

Проблема, с которой мы сталкиваемся, заключается в том, что во время удаления проекта установки файлы, которые были развернуты проектом установки, полностью удаляются с жесткого диска; но файлы, развернутые модулями слияния, не удаляются вообще.

Кроме того, если после удаления файлы, которые были развернуты модулем слияния, все еще существуют на жестком диске, повторная установка проекта установки не перезаписывает файлы, развернутые модулем слияния.

У нас есть приемлемые результаты:

1) Сделайте так, чтобы развернутые файлы модуля слияния удалялись во время удаления 2) Разрешить перезапись файлов, развернутых модулем слияния, во время новой установки

Любые мысли будут оценены!


person danlash    schedule 21.08.2009    source источник


Ответы (2)


Возможно, это не тот ответ, на который вы надеялись, но эта мысль может вам помочь ...

Вопрос: Вы действительно должны использовать модули слияния? Идея МСМ прекрасна, но на практике они работают не так хорошо, как вам хотелось бы.

Вместо этого встраивание полных MSI-файлов часто бывает чище, потому что (а) они могут успешно установить и зафиксировать до начала установки вашего приложения, (б) они сохранят контроль над собственным управлением версиями (так что вы можете попросить их обновить файлы в следующей версии), (c) вы можете удалить их (и все их файлы) в процессе удаления и т. д. Для библиотек Microsoft, которые они предоставляют как MSMS, всегда есть версия распространяемого пакета MSI, которую вы можете использовать вместо этого.

Или вы сами сделали модули слияния для этого приложения? В этом случае они будут лучше в качестве компонентов в вашем MSI, поскольку они будут следовать тому же процессу установки и удаления, что и остальная часть. И если у вас есть несколько приложений, которые используют один и тот же компонент (-ы), вы можете дать им одинаковые идентификаторы компонентов, и они в конечном итоге станут общими (например, когда у вас есть 2 приложения с установленным общим компонентом и вы удаляете одно из них, общие компоненты останется, пока установлено другое приложение).

person ewall    schedule 21.08.2009
comment
правда, использование связанных MSI-файлов - хорошее решение ... мы просто очень много вложили в модули слияния на данный момент. в худшем случае мы, вероятно, воспользуемся этим методом. - person danlash; 25.08.2009

Раньше я сталкивался с подобной проблемой, а именно из-за проблемных записей в разделе реестра [HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls]. Посмотрите, перечислены ли там какие-либо файлы в вашем модуле слияния после удаления, счетчик ссылок может быть отключен, и поэтому установщик Windows считает, что файлы должны оставаться, потому что они используются другим приложением.

Обычно это вызвано изменением состояния «Общий» компонента между сборками установки или использованием MSIZAP (также известного как Windows Installer Cleanup), который не регулирует счетчики ссылок при очистке пакета.

person saschabeaumont    schedule 23.08.2009
comment
я проверил реестр. ни один из наших файлов там не указан. Я также проверил наши модули слияния, и ни один из наших файлов не помечен как общий или устаревший. спасибо за предложение. - person danlash; 25.08.2009