Я автоматически генерирую файл WiX для моего установщика на основе каталога (он предназначен для веб-приложения) и содержит ссылки на следующие 3 .Net сборки:
- Migrator.dll
- Migrator.Framework.dll
- Migrator.Providers.dll
А вот сгенерированные фрагменты WiX:
<Fragment>
<DirectoryRef Id="bin">
<Component Id="bin.Migrator.dll" Guid="*">
<File Id="bin.Migrator.dll" Name="Migrator.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.dll" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="bin">
<Component Id="bin.Migrator.Framework.dll" Guid="*">
<File Id="bin.Migrator.Framework.dll" Name="Migrator.Framework.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.Framework.dll" />
</Component>
</DirectoryRef>
</Fragment>
<Fragment>
<DirectoryRef Id="bin">
<Component Id="bin.Migrator.Providers.dll" Guid="*">
<File Id="bin.Migrator.Providers.dll" Name="Migrator.Providers.dll" KeyPath="yes" Source="..\WebApplication\bin\Migrator.Providers.dll" />
</Component>
</DirectoryRef>
</Fragment>
Мы использовалита же самая базовая структура установщика в течение года или около того, но недавно мы обновили библиотеки Migrator.Net до новой внутренней сборки, в которой номера версий и атрибуты заголовка / описания сборки изменились с (выгружены из Orca)
- bin.Migrator.dll bin.Migrator.dll Migrator.dll 16384 3.0.1317.0 0 512 78
- bin.Migrator.Framework.dll bin.Migrator.Framework.dll pi0mozkr.dll | Мигратор.Framework.dll 20992 3.0.1317.0 0 512 79
- bin.Migrator.Providers.dll bin.Migrator.Providers.dll jq05waoy.dll | Migrator.Providers.dll 73216 3.0.1317.0 0 512 82
До, после обновления библиотек:
- bin.Migrator.dll bin.Migrator.dll Migrator.dll 16384 3.2.0.1 0 512 55
- bin.Migrator.Framework.dll bin.Migrator.Framework.dll pi0mozkr.dll | Migrator.Framework.dll 28160 3.2.0.1 0 512 56
- bin.Migrator.Providers.dll bin.Migrator.Providers.dll jq05waoy.dll | Migrator.Providers.dll 79872 3.2.0.1 0 512 57
Хотя младшая версия выше, ревизия теперь 1 вместо 1317.
С тех пор мы обнаружили, что при обновлении до новой версии эти 3 файла не копируются(поэтому процесс обновления удаляет старые файлы, но не устанавливает новые файлы).
Может ли это быть связано с изменением номера версии сборок и, если да, есть ли способ переопределить это поведение (мы просто хотим удалить все, а затем скопировать все заново, независимо от версии).
Интересно, что если вы установите, затем повторно запустите установщик и выполните «восстановление», которое действительно скопирует новые файлы - я полагаюэто потому что если файла больше нет, поэтому логика проверки версии файла не применяется?
Любые советы как о том, как это работает, так и о том, как избежать возникшей у нас проблемы с обновлением, будут весьма полезны.