в пакете boot bootprapper wix: как определить, присутствует ли ms vcredist 2013 x86 или нет?
Я делаю чек на Upgrade Id
/UpgradeCode
этого конкретного пакета, но комплект всегда устанавливает его заново, даже если он уже установлен.обнаруживает наличие vcredist 2013 x86 - с помощью UpgradeCode
...
<Bundle>
...
<Chain>
<!-- redist packages -->
<PackageGroupRef Id="redist"/>
...
</Chain>
</Bundle>
<Fragment>
<PackageGroup Id="redist">
<PackageGroupRef Id="redist_vc120" />
...
</PackageGroup>
</Fragment>
<Fragment>
<!-- vcredist 2013 x86 -->
<?define vcredist2013minversion="12.0.21005"?>
<Upgrade Id="B59F5BF1-67C8-3802-8E59-2CE551A39FC5">
<UpgradeVersion Minimum="$(var.vcredist2013minversion)" Property="VCREDIST2013INSTALLED" OnlyDetect="yes" IncludeMinimum="yes" />
</Upgrade>
<PackageGroup Id="redist_vc120">
<ExePackage Id="vc120" Cache="yes" PerMachine="yes" Permanent="yes" Vital="yes" Compressed="yes"
Name="redist\VC120_Runtime\vcredist_x86.exe"
InstallCommand="/quiet /norestart"
InstallCondition="Not VCREDIST2013INSTALLED"
/>
</PackageGroup>
</Fragment>
...
Есть ли что-то неправильное с InstallCondition
?
или мне нужно добавить DetectCondition
?
в файле журнала гласит:
Detected related package: {13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}, scope: PerMachine, version: 12.0.21005.0, language: 0 operation: MajorUpgrade
Detected package: vc120, state: Absent, cached: None
Condition 'Not VCREDIST2013INSTALLED' evaluates to true.
Planned package: vc120, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: None, cache: Yes, uncache: No, dependency: None
Applying execute package: vc120, action: Install, path: <path and command line>...
Applied execute package: vc120, result: 0x0, restart: None
, но и извлекать InstallCondition
и заменить его следующим DetectCondition
не получилось:
<PackageGroup Id="redist_vc120">
<ExePackage Id="vc120" Cache="yes" PerMachine="yes" Permanent="yes" Vital="yes" Compressed="yes"
Name="redist\VC120_Runtime\vcredist_x86.exe"
InstallCommand="/quiet /norestart"
DetectCondition="VCREDIST2013INSTALLED"
/>
</PackageGroup>
-
редактировать:
просто для объяснения: я пытаюсь подойти с UpgradeCode
, потому что я не хочу проверять для конкретного установочного пакета, но для minimum version
.
Где вы получили эти коды обновления? Я хочу получить коды обновления для x64 и не знаю, где искать.Благодаря –
Вышеуказанные коды не совпадают, что я нашел 'VCRedist 2015/2017 x86 - C146EF48-4D31-3C3D-A2C5-1E91AF8A0A9B' ' VCRedist 2015/2017 x64 - F899BAD3-98ED-308E-A905-56B5338963FF' vcredist - это пакет, имеет основную установку и расширенную установку msi, задаваясь вопросом, действительно ли над id являются дочерними установками? Использование кодов, обозначенных в 2015 году, в тех же кодах, также разработанных для 2017 года https://gist.github.com/nathancorvussolis/6852ba282647aeb0c5c00e742e28eb48 –