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;
                    }
                }
            }
        }
Example #2
0
        ///
        /// when engine plans action for a feature, set the requested future state of
        /// the package based on what the user requested
        ///
        private void SetFeaturePlannedState(Wix.PlanMsiFeatureEventArgs planMsiFeatureEventArgs)
        {
            var pkg = BundlePackages.First(p => p.Package == planMsiFeatureEventArgs.PackageId);

            if (pkg != null)
            {
                var feature = pkg.AllFeatures.First(feat => feat.Feature == planMsiFeatureEventArgs.FeatureId);
                if (feature != null)
                {
                    if (feature.RequestedState.HasValue)
                    {
                        planMsiFeatureEventArgs.State = feature.RequestedState.Value;
                    }
                    else if (this.PlannedAction == Wix.LaunchAction.Uninstall)
                    {
                        planMsiFeatureEventArgs.State = Wix.FeatureState.Absent;
                    }
                    else if (feature.CurrentInstallState == Wix.FeatureState.Local || (feature.Level > 0 && feature.Level <= this.InstallLevel))
                    {
                        planMsiFeatureEventArgs.State = Wix.FeatureState.Local;
                    }
                }
            }
        }