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); }