Example #1
0
        ///
        /// 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;
                    }
                }
            }
        }