A custom managed bootstrapper is now used to install MediaPortal 2 and dependencies using the Wix Burn engine. The project is a fully managed WPF application that can be found in the source under MediaPortal\Setup\MP2BootstrapperApp.
Adding or editing packages to install
The packages to install are included in the Wix bootstrapper bundle at MediaPortal\Setup\Bootstrapper\Bundle.wxs, typically these packages are the main MediaPortal 2 Setup MSI and required dependencies, e.g. VC redistributables.
An appropriate DetectCondition should be specified, this is used to determine whether the package is already present on the target machine. Typically only the DetectCondition is needed (and not InstallCondition) to ensure that installation functions correctly, i.e. the package is not downloaded and installed again if the DetectCondition evaluates to true. This condition is used both by the underlying Burn engine and the custom bootstrapper to determine the current and future state of the package during an install. For packages that should only be installed under certain conditions, e.g. 64 bit packages should not be installed on 32 bit machines, an additional InstallCondtion should be specified to check that specific condition. The InstallCondition should not be used to prevent installation when the current version is up to date or newer, use the DetectCondition for that.
The below is an example package defintion.
Note that the DetectCondition is evaluated based on the currently installed version number, found in this case by a ProductSearch, and a separate InstallCondition is used to only install the package on 64 bit versions of Windows.
The custom bootstrapper will display the currently installed version of any packages on its overview screen before starting an installation, it determines this based on the value of the version variables set in the bundle referenced above. It expects the variable to be named [Package Id]_Version. When adding new packages ensure that the version variable follows this naming convention. In the above example the package id is VC2019_x64 and the associated version variable is named VC2019_x64_Version. Failure to do this will not cause any negative effects during installation but will cause the custom bootstrapper to not show the previously installed version number for the package.
The custom bootstrapper will try to only install the packages required for the MediaPortal 2 features that are selected for installation. Most of the packages included in the bundle are only required by the MP2 Server and will not be installed for a Client only installation. When adding a new package to the bundle, it will always be installed by default. To prevent its installation when only certain features are being installed you will need to modify the _excludedPackages map in MediaPortal\Setup\MP2BootstrapperApp\ActionPlans\PlanContext.cs to exclude the package for each feature where it is not required. The below shows the current definition of the packages not required for each feature.
This page has no comments.