コード例 #1
0
ファイル: PackageManager.cs プロジェクト: pchaozhong/FlexNet
        private static InstallResult ExecuteContentTypes(IEnumerable <IManifest> manifests, StepVisitor visitor, out int warnings, out int errors)
        {
            warnings = 0;
            errors   = 0;
            int warn;

            if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnBeforeInstallContentTypes(default(bool))), visitor.IsProbing, out warn))
            {
                return(ReturnWithErrorResult());
            }
            warnings += warn;

            var batchContentTypeInstallStep = AggregateContentTypeInstallSteps(manifests);

            if (batchContentTypeInstallStep != null)
            {
                //---- Initialize
                try
                {
                    batchContentTypeInstallStep.Initialize();
                }
                catch (Exception e)
                {
                    Logger.LogException(e, "INITIALIZING ERROR");
                    return(ReturnWithErrorResult());
                }

                //---- Install
                try
                {
                    StepResult result = visitor.DoIt(batchContentTypeInstallStep);
                    if (result.Kind == StepResultKind.Warning)
                    {
                        warnings++;
                    }
                    if (result.Kind == StepResultKind.Error)
                    {
                        return(ReturnWithErrorResult());
                    }
                }
                catch (Exception e)
                {
                    Logger.LogException(e);
                    return(ReturnWithErrorResult());
                }
            }

            if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnAfterInstallContentTypes(default(bool))), visitor.IsProbing, out warn))
            {
                return(ReturnWithErrorResult());
            }
            warnings += warn;

            return(new InstallResult {
                Successful = true, NeedRestart = false
            });
        }
コード例 #2
0
ファイル: PackageManager.cs プロジェクト: pchaozhong/FlexNet
        private static bool ExecuteStepFamily(IEnumerable <InstallStep> steps, StepVisitor visitor, out bool needRestart, out int warnings)
        {
            warnings    = 0;
            needRestart = false;

            //-- initialize steps
            try
            {
                foreach (var step in steps)
                {
                    step.Initialize();
                }
            }
            catch (Exception e)
            {
                Logger.LogException(e, "INITIALIZING ERROR");
                return(false);
            }

            //-- excute steps
            foreach (var step in steps)
            {
                try
                {
                    StepResult result = visitor.DoIt(step);
                    needRestart = result.NeedRestart;
                    if (result.Kind == StepResultKind.Error)
                    {
                        return(false);
                    }
                    if (result.Kind == StepResultKind.Warning)
                    {
                        warnings++;
                    }
                }
                catch (Exception e)
                {
                    Logger.LogException(e);
                    return(false);
                }
            }
            return(true);
        }
コード例 #3
0
ファイル: PackageManager.cs プロジェクト: pchaozhong/FlexNet
        private static InstallResult ExecuteContents(IEnumerable <IManifest> manifests, StepVisitor visitor, out int warnings, out int errors)
        {
            warnings = 0;
            int warn;

            errors = 0;

            if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnBeforeInstallContents(default(bool))), visitor.IsProbing, out warn))
            {
                return(ReturnWithErrorResult());
            }
            warnings += warn;

            var contentSteps = new List <ContentInstallStep>();

            foreach (var manifest in manifests)
            {
                contentSteps.AddRange(GetContentSteps(manifest));
            }

            //---- Initialize  contents
            try
            {
                foreach (var step in contentSteps)
                {
                    step.Initialize();
                }
            }
            catch (Exception e)
            {
                Logger.LogException(e, "INITIALIZING ERROR");
                return(ReturnWithErrorResult());
            }

            //---- Install contents
            contentSteps.Sort();
            var postponedContents = new List <ContentInstallStep>();

            foreach (var step in contentSteps)
            {
                try
                {
                    StepResult result = visitor.DoIt(step);
                    if (result.Kind == StepResultKind.Warning)
                    {
                        warnings++;
                    }
                    if (result.Kind == StepResultKind.Error)
                    {
                        return(ReturnWithErrorResult());
                    }
                    if (result.NeedSetReferencePhase)
                    {
                        postponedContents.Add(step);
                    }
                }
                catch (Exception e)
                {
                    Logger.LogException(e);
                    return(ReturnWithErrorResult());
                }
            }
            foreach (var step in postponedContents)
            {
                try
                {
                    StepResult result = step.SetReferences();
                    if (result.Kind == StepResultKind.Warning)
                    {
                        warnings++;
                    }
                    if (result.Kind == StepResultKind.Error)
                    {
                        errors++;
                    }
                }
                catch (Exception e)
                {
                    Logger.LogException(e);
                    return(ReturnWithErrorResult());
                }
            }

            if (!CustomInstallStep.Invoke(GetMethod <CustomInstallStep>(x => x.OnAfterInstallContents(default(bool))), visitor.IsProbing, out warn))
            {
                return(ReturnWithErrorResult());
            }
            warnings += warn;

            return(new InstallResult {
                Successful = true, NeedRestart = false
            });
        }