Пакет My WiX Burn (v3.8.611.0) по ошибке (?) НЕ устанавливает его PrereqPackage .NET Framework 3.5 SP1, когда в системе установлен .NET 3.5. Вместо этого он запускает приложение Managed Bootstrapper (которому в моем случае требуется как минимум .NET 3.5 SP1).
NetFx35 SP1 ExePackage устанавливается правильно, если установлена предыдущая версия NetFx или ее нет (проверено с 3.0 SP2, 2.0 SP2 и без .NET Framework вообще). Но это не так, если я устанавливаю поверх NetFx 3.5.
<Bundle>
...
<WixVariable Id="WixMbaPrereqPackageId" Value="Netfx35SP1" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="NetfxLicense.rtf" />
...
</Bundle>
<Fragment>
<PackageGroup Id="Netfx35SP1PackageGroup">
<ExePackage Id="Netfx35SP1"
DisplayName=".NET Framework 3.5 SP1"
Cache="no"
Compressed="no"
PerMachine="yes"
Permanent="yes"
Vital="yes"
InstallCommand="/q /norestart"
SourceFile="$(var.NetFx35SetupFileName)"
DownloadUrl="$(var.NetFx35Setup)"
DetectCondition="1 > 2"
InstallCondition="2 > 1" />
</PackageGroup>
</Fragment>
Обратите внимание: DetectCondition = 1 ›2 и InstallCondition = 2› 1.
Я тестировал XP Pro x64 (SP2), XP Pro x86 (SP3) и Vista HP x86 (SP2), каждый по крайней мере один раз с установленными NetFx 3.0 и NetFx 3.5. У меня было одинаковое поведение со всеми тестами.
Я что-то упускаю? Это ошибка?
Чтобы уточнить: я не получаю сообщения об ошибке. В лог-файлах ничего подозрительного не говорится. Но мое приложение Managed Bootstrapper аварийно завершает работу из-за отсутствия .NET Framework 3.5 SP1.
В файле журнала говорится:
Записать v3.8.611.0, Windows v5.2 (сборка 3790: пакет обновления 2), путь: Z: \ temp_install \ Setup.exe, cmdline: ''
Установка строковой переменной 'WixBundleLog' на значение 'C: \ DOCUME ~ 1 \ ADMINI ~ 1 \ LOCALS ~ 1 \ Temp \ 20130823152241.log'
Установка строковой переменной WixBundleOriginalSource на значение Z: \ temp_install \ Setup.exe
Условие '((VersionNT ›= v5.1) AND (ServicePackLevel› = 3)) OR ((VersionNT ›= v5.2) AND (ServicePackLevel› = 2)) OR (VersionNT ›= v6.0)' оценивается как истинное .
Установка строковой переменной WixBundleName в значение MyBundle
Загрузка приложения управляемого загрузчика.
Создание потока BA для асинхронного запуска.
Обнаружить начало, 5 пакетов
Установка строковой переменной Netfx35Version на значение 3.5.21022.08
Условие «1› 2 »оценивается как ложное.
Обнаруженный пакет: Netfx35SP1, состояние: Отсутствует, кэшировано: Нет
Обнаружение завершено, результат: 0x0