Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

Already on GitHub? Sign in to your account

PreqBA should support multiple pre-req packages #4161

wixbot opened this Issue Oct 22, 2013 · 7 comments


None yet
2 participants

wixbot commented Oct 22, 2013

Currently only one package can be provided as "the" pre-req package for .NET (for managed BAs). That isn't sufficient for .NET on XP/2003 since they require two packages (WIC and CLR).

Originally opened by barnson


wixbot commented Oct 22, 2013

See http://wixtoolset.org/issues/edit/3738 for details.

Originally posted by barnson


wixbot commented Oct 23, 2013

We would like that too.

Originally posted by dev


wixbot commented May 3, 2014

Originally changed by rseanhall
AssignedTo set to shall


wixbot commented May 18, 2014

Originally changed by rseanhall
Release changed from v3.x to v3.9


wixbot commented May 22, 2014

Pull request wixtoolset/wix3#30 accepted.

Originally posted by rseanhall
Resolution set to fixed
Status changed from Open to Resolved


wixbot commented Oct 6, 2014

How exactly is this supposed to work?

I use the NetFx extension to install NetFx 4.52 and am trying to additionally install another required runtime.

The NetFx part works as intended.

<WixVariable Id="WixMbaPrereqPackageId" Value="NetFx452Redist" />
<WixVariable Id="WixMbaPrereqLicenseUrl" Value="redist\Netfx_eula452.rtf" />

If NetFx is installed by mbaprereq, the other runtime will also be installed.

The problem is, mbaprereq will not install the other runtime when NetFx is already present.

In my bundle I use a condition that correctly checks for a required runtime's install status:

<util:RegistrySearch Id="someruntime_check" Root="HKCR" Key="Installer\Products\blah" Value="ProductName" Variable="someruntime_installed" Result="exists" Win64="yes"/>

The runtime is declared like this:

<ExePackage SuppressSignatureVerification="yes" Id="SomeRuntime" Name="redist\SomeRuntime64.exe" SourceFile="..\redist\someRuntime64.exe" InstallCommand="/q /log" RepairCommand="/q /log" UninstallCommand="/x /log" Compressed="no" Permanent="yes" DetectCondition="someruntime_installed" PerMachine="yes" bal:PrereqSupportPackage="yes"/>

The custom BA creates a BootstrapperApplicationData.xml with this:

<MbaPrerequisiteSupportPackage PackageId="SomeRuntime" />

<WixPackageProperties Package="SomeRuntime" Vital="yes" DisplayName="SomeRuntimeInstaller" Description="Starts the installation of SomeRuntime" DownloadSize="12345" PackageSize="12345" InstalledSize="12345" PackageType="Exe" Permanent="yes" LogPathVariable="WixBundleLog_SomeRuntime" RollbackLogPathVariable="WixBundleRollbackLog_SomeRuntime" Compressed="no" DisplayInternalUI="no" Version="1.0.0" Cache="yes" />

<WixPayloadProperties Payload="SomeRuntime" Package="SomeRuntime" Name="redist\SomeRuntime64.exe" Size="12345" LayoutOnly="no" />

Log extract from case when NetFx is not present and both packages will install correctly:

[12AC:12A0][2014-10-06T17:07:58]i000: Loading prerequisite bootstrapper application because managed host could not be loaded, error: 0x80070490.
[12AC:12A0][2014-10-06T17:07:59]i100: Detect begin, 8 packages
[12AC:12A0][2014-10-06T17:07:59]i000: Registry key not found. Key = 'Installer\Products\blah'
[12AC:12A0][2014-10-06T17:07:59]i000: Setting numeric variable 'someruntime_installed' to value 0

[12AC:12A0][2014-10-06T17:07:59]i052: Condition 'NETFRAMEWORK45 >= 379893' evaluates to false.
[12AC:12A0][2014-10-06T17:07:59]i052: Condition 'someruntime_installed' evaluates to false.

[12AC:12A0][2014-10-06T17:07:59]i101: Detected package: NetFx452Redist, state: Absent, cached: None
[12AC:12A0][2014-10-06T17:07:59]i101: Detected package: SomeRuntime, state: Absent, cached: None

[12AC:12A0][2014-10-06T17:09:09]i201: Planned package: NetFx452Redist, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: None, cache: Yes, uncache: No, dependency: None
[12AC:12A0][2014-10-06T17:09:09]i201: Planned package: SomeRuntime, state: Absent, default requested: Present, ba requested: Present, execute: Install, rollback: None, cache: Yes, uncache: No, dependency: None[12AC:12A0][2014-10-06T17:09:09]i300: Apply begin
[0548:067C][2014-10-06T17:09:09]i360: Creating a system restore point.
[0548:067C][2014-10-06T17:09:09]w363: Could not create system restore point, error: 0x80070422. Continuing...
[0548:067C][2014-10-06T17:09:09]i000: Caching bundle from: 'C:\Users\testuser\AppData\Local\Temp\{573afafc-4167-4eb3-be82-47e4fecbd345}\.be\Installer.exe' to: 'C:\ProgramData\Package Cache\{573afafc-4167-4eb3-be82-47e4fecbd345}\Installer.exe'
[0548:067C][2014-10-06T17:09:09]i320: Registering bundle dependency provider: {613B798B-2CEE-40CF-800B-93908489AD0B}, version:
[12AC:1274][2014-10-06T17:09:09]i338: Acquiring package: NetFx452Redist, payload: NetFx452Redist, copy from: C:\Users\testuser\Desktop\debug\redist\NDP452-KB2901907-x86-x64-AllOS-ENU.exe
[12AC:1274][2014-10-06T17:09:09]i000: Setting string variable 'WixBundleLastUsedSource' to value 'C:\Users\testuser\Desktop\debug\'
[0548:08D8][2014-10-06T17:09:30]i305: Verified acquired payload: NetFx452Redist at path: C:\ProgramData\Package Cache\.unverified\NetFx452Redist, moving to: C:\ProgramData\Package Cache\89F86F9522DC7A8A965FACCE839ABB790A285A63\redist\NDP452-KB2901907-x86-x64-AllOS-ENU.exe.
[12AC:1274][2014-10-06T17:09:30]i338: Acquiring package: SomeRuntime, payload: SomeRuntime, copy from: C:\Users\testuser\Desktop\debug\redist\SomeRuntime64.exe
[0548:08D8][2014-10-06T17:09:31]i305: Verified acquired payload: SomeRuntime at path: C:\ProgramData\Package Cache\.unverified\SomeRuntime, moving to: C:\ProgramData\Package Cache\503115FA2E651D3CEF6F7403585E53AF344CCD3E\redist\SomeRuntime64.exe.
[0548:067C][2014-10-06T17:09:31]i301: Applying execute package: NetFx452Redist, action: Install, path: C:\ProgramData\Package Cache\89F86F9522DC7A8A965FACCE839ABB790A285A63\redist\NDP452-KB2901907-x86-x64-AllOS-ENU.exe, arguments: '"C:\ProgramData\Package Cache\89F86F9522DC7A8A965FACCE839ABB790A285A63\redist\NDP452-KB2901907-x86-x64-AllOS-ENU.exe" /q /norestart /ChainingPackage "Testoftware" /log "C:\Users\testuser\AppData\Local\Temp\Testsoftware_20141006170758_0_NetFx452Redist.log.html"'
[12AC:12A0][2014-10-06T17:13:53]i319: Applied execute package: NetFx452Redist, result: 0x0, restart: None
[0548:067C][2014-10-06T17:13:53]i301: Applying execute package: SomeRuntime, action: Install, path: C:\ProgramData\Package Cache\503115FA2E651D3CEF6F7403585E53AF344CCD3E\redist\SomeRuntime64.exe, arguments: '"C:\ProgramData\Package Cache\503115FA2E651D3CEF6F7403585E53AF344CCD3E\redist\SomeRuntime64.exe" /q /log'
[12AC:12A0][2014-10-06T17:14:35]i319: Applied execute package: SomeRuntime, result: 0x0, restart: None
[12AC:12A0][2014-10-06T17:14:35]i399: Apply complete, result: 0x0, restart: None, ba requested restart:  No
[12AC:12A0][2014-10-06T17:14:35]i500: Shutting down, exit code: 0x0
[12AC:12A0][2014-10-06T17:14:35]i000: The prerequisites were successfully installed. The bootstrapper application will be reloaded.
[12AC:12A0][2014-10-06T17:14:35]i006: Bootstrapper application requested to be reloaded.
[12AC:12A0][2014-10-06T17:14:35]i000: Loading managed bootstrapper application.
[12AC:12A0][2014-10-06T17:14:35]i000: Creating BA thread to run asynchronously.

Am I interpreting this correctly that the mbaprereq will only ever start if the Burn engine for some reason fails to actually load the custom BA.dll?

Originally posted by js69
Status changed from Resolved to Untriaged


wixbot commented Oct 6, 2014

Please use wix-users for discussion.

Originally posted by barnson
Status changed from Untriaged to Resolved

@wixbot wixbot added this to the v3.9 milestone Dec 20, 2015

@wixbot wixbot closed this Dec 20, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment