Я использую WiX для создания установщика с несколькими экземплярами. MSI, который я создаю, правильно устанавливает экземпляр по умолчанию, но терпит неудачу, когда я пытаюсь установить экземпляр преобразования.
Пытаясь изолировать проблему, я обнаружил, что проблема, по-видимому, связана с взаимодействием между тегом MajorUpgrade и использованием переменной связывания FileVersion для атрибута версии продукта.
Мой тестовый код выглядит так:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*"
Name="TestArea"
Language="1033"
Version="!(bind.FileVersion.ExeFile)"
Manufacturer="Company"
UpgradeCode="1C0E8BC6-6BD8-4A9D-9A36-14A898E4391B">
<Package InstallerVersion="200" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A more recent version is already installed." />
<MediaTemplate />
<Property Id="INSTANCEID" Value="Default" Secure="yes" />
<InstanceTransforms Property="INSTANCEID">
<Instance Id="Install2" ProductCode="*" UpgradeCode="38C61306-2B32-4475-A889-716BCBF196CA" ProductName="Instance 2" />
</InstanceTransforms>
<UIRef Id="WixUI_InstallDir" />
<UIRef Id="WixUI_ErrorProgressText" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLDIR" />
<Feature Id="ProductFeature" Title="TestArea" Level="1" ConfigurableDirectory='INSTALLDIR'>
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="TestArea" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLDIR">
<Component Id="ProductComponent">
<File Id="ExeFile" KeyPath="yes" Source="C:\MyFolder\MyFile.exe" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
Когда я бегу msiexec /i TestInstall.msi
, экземпляр по умолчанию установлен правильно.
Когда я бегу msiexec /i TestInstall.msi MSINEWINSTANCE=1 TRANSFORMS=":Install2"
, Я получаю сообщение:
Программа установки обнаружила непредвиденную ошибку при установке этого пакета. Это может указывать на проблему с этим пакетом. Код ошибки 2229.
Если я запускаю подробный журнал, ошибка отображается как «Не удалось загрузить таблицу« Обновление »в SQL-запросе»:
Action: FindRelatedProducts. Searching for related applications
Action start: FindRelatedProducts.
Transforming table Upgrade.
Note: 1: 2251 2: 3: Upgrade
Note: 1: 2229 2: 3: Upgrade 4: SELECT `UpgradeCode`,`VersionMin`,`VersionMax`,`Language`,`Attributes`,`ActionProperty` FROM `Upgrade`
DEBUG: Error 2229: Database: . Could not load table 'Upgrade' in SQL query: SELECT `UpgradeCode`,`VersionMin`,`VersionMax`,`Language`,`Attributes`,`ActionProperty` FROM `Upgrade`
Однако, если я удалю тег MajorUpgrade, второй экземпляр также будет установлен правильно.
Кроме того, если я заменю Version=”!(bind.FileVersion.ExeFile)” жестко заданным значением, например Version=”3.3.3.3″, второй экземпляр также будет установлен правильно.
Что вызывает эту ошибку? Что мне следует сделать, чтобы установить преобразование экземпляра, поскольку я хочу сохранить как связыватель MajorUpgrade, так и связыватель версии, которые кажутся конфликтующими?
Mazda6 (GL): код ошибки DTC P2229:00 [двигатель SKYACTIV-G 2.5T]

Про код ошибки DTC P2229:00 автомобилей Mazda6 (GL) с двигателем SKYACTIV-G 2.5T, выпущенных в период 2018-2020 гг.
Владельцев автомобилей Mazda6 (GL) с двигателем SKYACTIV-G 2.5T, выпущенных в период 2018-2020 гг., может беспокоить зажигание индикатора неисправности двигателя «CHECK ENGINE» с кодом ошибкии DTC P2229:00, сохраненным в памяти блока управления PCM.
• P2229:00 (высокий входной сигнал цепи датчика BARO)
Эта проблема, чаще всего, возникнет на автомобилях, на детали моторного отсека которых нанесен воск при продажной подготовке. Воск, нанесенный в моторном отсеке для более привлекательного вида силового агрегата, может проникнуть в отверстие, расположенное в нижней части блока PCM, что может привести к скоплению пыли и засорению воздушного фильтра. Это вентиляционное отверстие на самом деле является фильтром для датчика давления BARO в PCM. Когда PCM нагревается, внутреннее давление воздуха может повышаться из-за забитого фильтра, что приводит к появлению DTC P2229:00.
Чтобы устранить эту проблему, форма кронштейна PCM была изменена, что позволило не закрывать вентиляционное отверстие и устранить зазор между ним и корпусом PCM, который может способствовать остаточному жидкому парафину закрывать отверстие.
Владельцы, испытывающие описанные выше неудобства, должны отремонтировать свой автомобиль, используя следующую процедуру ремонта.
1. Проверьте наличие проблемы, при этом: если вентиляционное отверстие реально забито, очистить фильтр невозможно. Не пытайтесь разобрать РСМ. (Так утверждает Мазда в Bulletin No.: 01-008/20: https://static.nhtsa.gov/odi/tsbs/2020/MC-10176966-0001.pdf).
2. Подключите модульную диагностическую систему Mazda (M-MDS) к автомобилю и выполните идентификацию автомобиля.
3. Снимите PCM с кронштейнами с автомобиля в соответствии с инструкцией на портале MGSS. Визуально проверьте, является ли зазор между PCM и нижним кронштейном недостаточным и/или вентиляционное отверстие выглядит грязным. Если нет, то может быть иная причина появления DTC P2229:00. Следуйте карте диагностики по коду DTC.
4. Установите новый PCM с модифицированным нижним кронштейном в порядке, обратном снятию.
5. Выполните настройку PCM и программирование системы иммобилайзера в соответствии с инструкциями MGSS.
6. Проверьте выполнение ремонта.
Цены на запчасти, в том числе модифицированные, а также работы по устранению ошибки DTC P2229:00 автомобилей Mazda6 (GL) с двигателем SKYACTIV-G 2.5T в Ниппон Сервис вы можете уточнить у наших специалистов по телефону: +7(495) 001-05-21.