first commit
This commit is contained in:
105
DCIT.App/Program.cs
Normal file
105
DCIT.App/Program.cs
Normal file
@@ -0,0 +1,105 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using DCIT.App.Forms;
|
||||
using DCIT.App.Presentation;
|
||||
using DCIT.Core.Services;
|
||||
|
||||
namespace DCIT.App
|
||||
{
|
||||
internal static class Program
|
||||
{
|
||||
[STAThread]
|
||||
private static void Main()
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
|
||||
try
|
||||
{
|
||||
var startupDirectory = AppContext.BaseDirectory;
|
||||
var runtimeValidationService = new RuntimeEnvironmentValidationService(startupDirectory);
|
||||
var runtimeValidationResult = runtimeValidationService.Validate();
|
||||
if (runtimeValidationResult.HasBlockingIssues)
|
||||
{
|
||||
MessageBox.Show(
|
||||
BuildRuntimeValidationMessage(runtimeValidationResult),
|
||||
"WORD 2007 格式调整软件",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
return;
|
||||
}
|
||||
|
||||
var logService = new LogService(startupDirectory);
|
||||
LogRuntimeValidation(logService, runtimeValidationResult);
|
||||
var configurationService = new ConfigurationService(startupDirectory);
|
||||
var configurationLoadResult = configurationService.Load();
|
||||
var fileScanService = new FileScanService();
|
||||
var ruleService = new RuleService();
|
||||
var docConversionService = new OfficeDocConversionService(startupDirectory);
|
||||
var wordTextExtractionService = new WordTextExtractionService(docConversionService);
|
||||
var autoExtractService = new AutoExtractService(wordTextExtractionService);
|
||||
var bmpDiffCodec = new BmpDiffCodec();
|
||||
var diffSerializationService = new DiffSerializationService(bmpDiffCodec);
|
||||
var documentProcessingService = new DocumentProcessingService(diffSerializationService, docConversionService);
|
||||
var dialogService = new UserDialogService();
|
||||
var temporaryFileCleanupService = new TemporaryFileCleanupService();
|
||||
var cleanupResult = temporaryFileCleanupService.Cleanup(configurationLoadResult.Config);
|
||||
|
||||
if (cleanupResult.RemovedFiles.Count > 0)
|
||||
{
|
||||
logService.Info("TEMP_CLEANUP", string.Format("启动时已清理 {0} 个遗留临时文件。", cleanupResult.RemovedFiles.Count));
|
||||
}
|
||||
|
||||
foreach (var failure in cleanupResult.Failures)
|
||||
{
|
||||
logService.Warning("TEMP_CLEANUP_FAIL", failure);
|
||||
}
|
||||
|
||||
Application.Run(
|
||||
new MainForm(
|
||||
configurationService,
|
||||
logService,
|
||||
fileScanService,
|
||||
ruleService,
|
||||
autoExtractService,
|
||||
documentProcessingService,
|
||||
dialogService));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
MessageBox.Show(
|
||||
"程序启动失败: " + ex.Message,
|
||||
"WORD 2007 格式调整软件",
|
||||
MessageBoxButtons.OK,
|
||||
MessageBoxIcon.Error);
|
||||
}
|
||||
}
|
||||
|
||||
private static string BuildRuntimeValidationMessage(DCIT.Core.Models.RuntimeEnvironmentValidationResult validationResult)
|
||||
{
|
||||
var lines = validationResult.BlockingIssues.Select(issue => "- " + issue).ToList();
|
||||
return "程序启动前环境检查未通过:" + Environment.NewLine + string.Join(Environment.NewLine, lines);
|
||||
}
|
||||
|
||||
private static void LogRuntimeValidation(LogService logService, DCIT.Core.Models.RuntimeEnvironmentValidationResult validationResult)
|
||||
{
|
||||
logService.Info("ENV_STARTUP", "启动目录可写: " + validationResult.StartupDirectory);
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(validationResult.ResolvedAutomationProgId))
|
||||
{
|
||||
logService.Info("ENV_AUTOMATION", "检测到可自动化组件: " + validationResult.ResolvedAutomationProgId);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(validationResult.ResolvedDocToPath))
|
||||
{
|
||||
logService.Info("ENV_DOCTO", "检测到 docto.exe: " + validationResult.ResolvedDocToPath);
|
||||
}
|
||||
|
||||
foreach (var warning in validationResult.Warnings)
|
||||
{
|
||||
logService.Warning("ENV_WARNING", warning);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user