Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.188.216.249] |
|
Сообщ.
#1
,
|
|
|
Доброго времени суток.
Столкнулся с проблемой следующего характера. Имеется компонент который кладется при установке в GAC. Описано так. <Component Id='MyComponent.dll' Guid='{ЗДЕСЬ-GUID}' Directory='MyProgram'> <File Id='MyComponent.dll' Name='MyComponent.dll' DiskId='1' Source='files/MyComponent.dll' KeyPath='yes' Assembly='.net' AssemblyManifest='MyComponent.dll'/> </Component> ... <MajorUpgrade Schedule="afterInstallInitialize" DowngradeErrorMessage="!(loc.USTR_OLDVERSIONEXIST)"/> Выпускаем новую версию продукта. Версия проблемного файла увеличивается, Assembly Version остается старой. При установке на Windows 7 все замечательно, сначала удаляется старый дистрибутив (afterInstallInitialize) удаляет за собой файлы, потом ставится новый дистрибутив устанавливая и регистрируя новую версию в GAC. А вот на Windows XP происходит интересное, при установке старая версия из GAC удаляется а вот новая не ставится (версия Windows Installer 4.5). Если дистрибутив запустить повторно и сказать "восстановить" то тогда новая версия устанавливается. Манипуляции на каком этапе вызывать RemoveExistingProduct (Schedule="afterInstallInitialize") успеха не дали. Нахожусь в ступоре. |
Сообщ.
#2
,
|
|
|
Во победил
Оказывается у Light.exe есть ключик -fv, который добавляет в таблицу MsiAssemblyName помимо Assembly Version еще и fileVersion, которая начинает участвовать в принятии решения заменять ГАКовский файл или нет. |