Ответ 1
ProductCode определяет конкретный продукт. Он изменяется каждый раз, когда вы отправляете новый продукт замены. UpgradeCode определяет ряд продуктов, используя тот же UpgradeCode в обновленных продуктах, чьи версии, как ожидается, будут постоянно увеличиваться. По умолчанию новые версии продуктов заменяют более старые версии продуктов с крупным обновлением. Поскольку updateecode определяет серию продуктов, Windows будет искать продукты с одинаковым UpgradeCode, потому что идентичные UpgradeCodes означают взаимоисключающие продукты, используя их для замены старого продукта на новый. В WiX основное обновление выполняется с помощью элемента majorupgrade, который, по-видимому, вы используете, потому что вы получаете сообщение "более новая версия". Существует опция AllowDowngrade, если вы хотите "обновить" до более низкой версии.
Версии продуктов (например, версии файлов) - это не только полезная информация - они используются системой с пониманием того, что новые заменяют старые, и, как правило, плохо вернуться к более низким версиям, поэтому поведение по умолчанию запрещает понижение,
Этот script может помочь. Он использует API сценариев Windows Installer для перечисления всех установленных продуктов, отображающих версию, пользовательский сид, ProductCode и т.д.:
Option Explicit
Public installer, fullmsg, comp, prod, a, fso, pname, ploc, pid,contxt, sid, psorce, pcache, pvers
Set fso = CreateObject("Scripting.FileSystemObject")
Set a = fso.CreateTextFile("prodex.txt", True)
' Connect to Windows Installer object
Set installer = CreateObject("WindowsInstaller.Installer")
a.writeline ("Products")
'on error resume next
For Each prod In installer.ProductsEx("", "", 7)
pid = prod.ProductCode
contxt = prod.Context
sid=prod.usersid
pname = prod.InstallProperty("ProductName")
psorce = prod.InstallProperty("InstallSource")
ploc =prod.InstallProperty("InstallLocation")
pcache = prod.InstallProperty("LocalPackage")
pvers=prod.InstallProperty("VersionString")
a.writeline (pid & " " & pname & " " & pvers & " installed at <" & ploc & "> from " & psorce & " Context " & contxt & " Local " & pcache)
Next