Модуль слияния, оставляющий файлы во время удаления - PullRequest
2 голосов
/ 22 августа 2009

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

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

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

Мы должны получить приемлемые результаты:

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

Любые мысли приветствуются!

Ответы [ 2 ]

1 голос
/ 24 августа 2009

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

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

1 голос
/ 22 августа 2009

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

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

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

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

...