Exemple #1
0
        private int InternalRun(Options options, CancellationToken cancellationToken)
        {
            //检查输出文件夹
            if (CheckOutputFolder(options, _Log, out var logFilePath) == false)
            {
                return(10);
            }

            //分析源文件
            if (CheckInputFile(options, _Log) == false)
            {
                return(20);
            }

            //构造任务配置
            var setting = new ExportSetting();

            setting.InputPath       = options.InputFilePath;
            setting.OutputPath      = options.OutputFolderPath;
            setting.DefaultFontName = Properties.Settings.Default.DefaultFontName;
            setting.FontPath        = new List <string>
            {
                App.GetFontFolderPath()
            };

            setting.Features = new List <FeatureType>();
            if (options.Features != null)
            {
                foreach (var item in options.Features)
                {
                    if (Enum.TryParse(item, true, out FeatureType featureType))
                    {
                        setting.Features.Add(featureType);
                    }
                }
            }

            setting.Oem = LicenseConfig.GetOemInfo(App.GetHomePath());

            //执行转换过程
            bool isSuccess;
            var  errorCode = 40; //40 一般性失败, 110: 授权无效

            try
            {
                #region 清除目标文件夹的授权失效标记文件
                {
                    try
                    {
                        var licenseInvalidFlagFilePath = Path.Combine(setting.OutputPath, LICENSE_INVALID_FLAG_FILE_NAME);
                        if (File.Exists(licenseInvalidFlagFilePath))
                        {
                            File.Delete(licenseInvalidFlagFilePath);
                        }
                    }
                    catch
                    {
                        // ignored
                    }
                }
                #endregion

                cancellationToken.ThrowIfCancellationRequested();

                _Log.WriteLine("Execute Job:");

                bool   exportSuccess;
                string exportMessage;

                try
                {
                    _Log.WriteLine("\tExecute exporting ...");

                    var ret = ExecuteExport(setting);
                    switch (ret)
                    {
                    case 0:
                        _Log.WriteLine($"\tProcessing, 100%");
                        _Log.WriteLine("\tExecute exporting succeeded!");
                        _Log.WriteProgress(90);
                        cancellationToken.ThrowIfCancellationRequested();

                        exportSuccess = true;
                        exportMessage = string.Empty;
                        break;

                    case 110:
                        _Log.WriteLine("\tExecute exporting fail!");

                        errorCode     = 110;
                        exportSuccess = false;
                        exportMessage = "License Invalid!";
                        break;

                    default:
                        _Log.WriteLine("\tExecute exporting fail!");

                        exportSuccess = false;
                        exportMessage = "Unknow exception!";
                        break;
                    }
                }
                finally
                {}

                if (exportSuccess)
                {
                    _Log.WriteProgress(100);
                    isSuccess = true;
                    _Log.WriteLine("\tJob completed, Result: Success");
                }
                else
                {
                    _Log.WriteProgress(0);
                    isSuccess = false;
                    _Log.WriteLine("\tJob completed, Result: Fail");
                    _Log.WriteLine($"\t{exportMessage}");
                }
            }
            catch (Exception ex)
            {
                _Log.WriteLine("\tJob completed, Result: Fail");
                _Log.WriteLine($"\t{ex}");

                isSuccess = false;
            }

            //如果转换成功, 就把转换过程日志文件删掉
            if (isSuccess)
            {
                try
                {
                    if (File.Exists(logFilePath))
                    {
                        File.Delete(logFilePath);
                    }
                }
                catch
                {
                    // ignored
                }
            }

            return(isSuccess ? 0 : errorCode);
        }