wixtoolset / issues

WiX Toolset Issues Tracker
http://wixtoolset.org/
129 stars 24 forks source link

PreqBA should support multiple pre-req packages #4161

Closed wixbot closed 8 years ago

wixbot commented 11 years ago

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 11 years ago

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

Originally posted by barnson

wixbot commented 11 years ago

We would like that too.

Originally posted by dev

wixbot commented 10 years ago

Originally changed by rseanhall AssignedTo set to shall

wixbot commented 10 years ago

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

wixbot commented 10 years ago

Pull request https://github.com/wixtoolset/wix3/pull/30 accepted.

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

wixbot commented 10 years ago

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: 4.4.0.0
[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 10 years ago

Please use wix-users for discussion.

Originally posted by barnson Status changed from Untriaged to Resolved