У нас есть решение с проектами, которое выгружает основной вывод в GAC.Мы должны сделать это, потому что наше программное обеспечение является плагином для другого приложения, которое может быть установлено где угодно и в котором может быть установлено несколько версий одновременно.
У нас проблемы с обновлением и удалением из нашего MSI. Проблема, с которой мы сталкиваемся, затрагивает нас с обеих сторон параметра RemovePreviousVersions.
Когда RemovePreviousVersions = False, пользователь должен удалить приложение вручную.Это было бы хорошо для нас, если деинсталлятор действительно будет работать должным образом.Однако удаление приводит к тому, что библиотеки DLL остаются в GAC, а установка следующей версии установщика не перезаписывает библиотеки DLL в GAC, поскольку их номера версий совпадают.
Когда RemovePreviousVersions = True, установка более поздней версии MSI поверх уже установленного приложения не перезаписывает библиотеки DLL в GAC, предположительно, потому что версии DLL совпадают ИЛИ, потому что удаление не делает 'т работа.Я не уверен, что знаю достаточно, чтобы понять, в чем причина.
Все, что мы хотим сделать, - это либо иметь возможность правильно выполнить деинсталляцию, либо обновить должным образом RemovePreviousVersions иустановить новую версию без вмешательства.Я не вижу причин, чтобы изменить все мои версии DLL.Мы не слишком заботимся о версиях, кроме того, чтобы знать, какая версия общего приложения включена, и мы можем сделать это с помощью установки версии проекта установки, и все.
FWIW, мы не можемиспользуйте WIX, потому что существуют ограничения для некоторых сторонних многокомпонентных библиотек DLL, которые нам нужно использовать, которые не могут быть легко добавлены в GAC с помощью WIX, но отлично работают с помощью проекта установки VS.
РЕДАКТИРОВАТЬ: Кстати, удаление файлов из GAC вручную через представление Explorer или с помощью gacutil.exe / u работает отлично.Однако я не думаю, что мне следует добавлять вызов gacutil в мой проект установки.Я чувствую, что это должно сделать это для меня.Тем не менее, я мог бы уделить слишком большое внимание проекту .NET Setup.