Я работаю с управляемым загрузчиком. В моем пакете у меня есть один msi и один пакет exe (большой установщик самораспаковывающегося WinZip), который должен быть установлен до пакета msi. Пакет msi должен проверить, правильно ли был установлен exe-пакет, потому что если установка exe-пакета терпит неудачу или отменена пользователем, msi не следует приступать к установке.
Условия обнаружения оцениваются только в начале установки, а не во время или между установками пакетов. К сожалению, bootstrapper не обнаруживает, был ли exe-пакет поврежден или отменен, поскольку он возвращает 0 всякий раз, когда пользователь отменяет установку.
Вопрос: Существует ли какой-либо метод/трюк для переоценки условия установки после установки пакета exe и только до того, как пакет msi начнет установку, так что будет установлен пакет InstallCondition msi?
Кстати, я могу думать о двух решений:Wix Bundle переоценивает условия перед каждым пакетом
- Оценка обнаружения условий (опять писать) внутри MSI, но я хочу сообщить пользователю интерфейс загрузчика.
- Чтобы сделать что-то в моем методе bootstrapper, DetectPackageComplete(), но я так не думаю, что это было бы правильно.
Вот мои сегменты кода:
<Bundle
Name = "$(var.ProductName)"
Copyright = "$(var.CopyrightNote)"
Version = "$(var.FileVersion)"
Manufacturer = "$(var.Manufacturer)"
IconSourceFile = "$(var.IconFile)"
UpgradeCode = "$(var.UpdgradeCode)"
AboutUrl = "$(var.AboutUrl)"
Compressed = "yes"
Tag = "VA"
>
<util:RegistrySearchRef Id="PreReqRuntimeReg"/>
<Chain>
<RollbackBoundary Id="StartPoint" />
<PackageGroupRef Id = "Product_PreReq" />
<MsiPackage Id = "MainProduct"
DisplayName = "$(var.ProductName)"
DisplayInternalUI = "no"
Cache = "yes"
Visible = "no"
Compressed = "yes"
EnableFeatureSelection = "yes"
SourceFile = "$(var.MainProduct)"
Vital = "yes"
InstallCondition = "PreReqRuntimeVersion="8.2""
>
</Chain>
</Bundle>
<Fragment Id="Product_PreReqs">
<util:RegistrySearch Id="PreReqRuntimeReg"
Variable="PreReqRuntimeVersion"
Root="HKLM"
Key="SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\ThirdParty Compiler Runtime 2013"
Value="DisplayVersion"
Result="value"
Win64="yes"
/>
<PackageGroup Id="Product_PreReq">
<ExePackage Id="PreReqRuntime2013"
DisplayName="ThirdParty Compiler Runtime 2013"
Description="ThirdParty Compiler Runtime 2013"
Cache="no"
Compressed="yes"
PerMachine="yes"
Permanent="yes"
Vital="yes"
SourceFile="D:\Pre-Reqs\Pre-Req2013_win64_installer.exe"
Protocol ="none"
DetectCondition="PreReqRuntimeVersion="8.2""
InstallCondition="(NOT (PreReqRuntimeVersion="8.2"))"
/>
</PackageGroup>
</Fragment>