Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.221.250.212] |
|
Сообщ.
#1
,
|
|
|
Есть проект. Для него сделан инсталятор с помощью WiX технологии.
Но случилось так, что пришлось проект пересобрать, при этом версию не меняем. При установке на компьютере, где была установлена предыдущая сборка, сообщается о том, что данная программа уже установлена и требуется сначала ее удалить. Как можно избежать этого и сделать так, чтобы новая сборка устанавливалась поверх старой? |
Сообщ.
#2
,
|
|
|
Хм... Порылся на форуме, вроде нужно для каждой сборки новый Product Id назначать? В этом случае будет minor upgrade, правильно?
|
Сообщ.
#3
,
|
|
|
minor upgrade - это когда только версия изменяется.
Измени версию и ProductCode, пересобери и наслаждайся major upgrade'ом |
Сообщ.
#4
,
|
|
|
С изменением только ProductCode прокатило.
А версию менять нельзя, так как изменения при пересборке были минимальными. Не увеличивать же из-за этого версию продукта. |
Сообщ.
#5
,
|
|
|
Это версия MSI пакета.
К продукту эта версия имеет весьма опосредованное отношение. |
Сообщ.
#6
,
|
|
|
Что-то не работает minor upgrade. Меняю версию, но не меняю ProductCode, но при попытке установить новую версию, вылетает сообщение "Другая версия этого продукта уже установлена. Установка этой версии не может быть продолжена. Бла-бла-бла...".
<?define ProductCode="172E0937-20C9-44e9-8D8D-826460E57836"?> <?define UpgradeCode="2BB5470E-D81A-4898-8EC5-C2D3455582FC"?> <?define ProductVersion="1.0.3"?> <Product Id="$(var.ProductCode)" Name="!(loc.ProductName)" Language="1049" Version="$(var.ProductVersion)" Manufacturer="!(loc.Manufacturer)" UpgradeCode="$(var.UpgradeCode)"> <Package Description="!(loc.ProductName)" Comments="!(loc.ProductName)" Manufacturer="!(loc.Manufacturer)" InstallerVersion="200" Compressed="yes" /> <!-- Upgrade section --> <Upgrade Id="$(var.UpgradeCode)"> <UpgradeVersion Minimum="1.0.0" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" /> </Upgrade> <!-- /Upgrade section --> ...... <InstallExecuteSequence> <RemoveExistingProducts After="InstallInitialize"/> </InstallExecuteSequence> |
Сообщ.
#7
,
|
|
|
Цитата AZote @ Что-то не работает minor upgrade. Минор апгрейд надо запускать с параметрами: msiexec /i mymsi.msi REINSTALL=ALL REINSTALLMODE=vomus |
Сообщ.
#8
,
|
|
|
Делаю Major Upgrade...
<Upgrade Id="$(var.UpgradeCode)"> <UpgradeVersion Minimum="0.0.0" IncludeMinimum="yes" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" /> </Upgrade> <InstallExecuteSequence> <RemoveExistingProducts After="InstallInitialize"/> <Custom Action="RegServer" After="InstallFinalize">Not Installed</Custom> <Custom Action="UnRegServer" Before="RemoveFiles">Installed</Custom> </InstallExecuteSequence> Увеличиваю версию, меняю продукт код. Все нормально, устанавливается новая версия, а старая удаляется... Но! Когда после установки новой версии, устанавливаю старую, то она тихо и спокойно ставится поверх новой, хотя по идее не должна вообще устанавливаться... Что нужно добавить в код или изменить? |
Сообщ.
#9
,
|
|
|
смотри что и почему пишется в проперти OLDERVERSIONBEINGUPGRADED.
|