/// /// when engine plans action for a package, set the requested future state of /// the package based on what the user requested /// private void SetPackagePlannedState(Wix.PlanPackageBeginEventArgs planPackageBeginEventArgs) { var pkgId = planPackageBeginEventArgs.PackageId; var pkg = BundlePackages.FirstOrDefault(p => p.Package == pkgId); if (pkg != null) { if (pkg.RequestedInstallState.HasValue) { //override default value set by bootstrapper engine planPackageBeginEventArgs.State = pkg.RequestedInstallState.Value; } else if (pkg.CurrentInstallState == Wix.PackageState.Present) { if (this.PlannedAction == Wix.LaunchAction.Uninstall) { planPackageBeginEventArgs.State = Wix.RequestState.Absent; } else if (this.PlannedAction == Wix.LaunchAction.Repair) { planPackageBeginEventArgs.State = Wix.RequestState.Repair; } else { planPackageBeginEventArgs.State = Wix.RequestState.Present; } } } }