public IDecompileResult Decompile(IDecompileContext context) { // Pre-decompile. // foreach (var extension in context.Extensions) { extension.PreDecompile(context); } // Decompile. // var result = this.BackendDecompile(context); if (result != null) { // Post-decompile. // foreach (var extension in context.Extensions) { extension.PostDecompile(result); } } return(result); }
private IDecompileResult BackendDecompile(IDecompileContext context) { var extensionManager = context.ServiceProvider.GetService <IExtensionManager>(); var backendFactories = extensionManager.GetServices <IBackendFactory>(); foreach (var factory in backendFactories) { if (factory.TryCreateBackend(context.DecompileType.ToString(), context.OutputPath, out var backend)) { var result = backend.Decompile(context); return(result); } } // TODO: messaging that a backend could not be found to decompile the decompile type? return(null); }
public IDecompileResult Decompile(IDecompileContext context) { var extensionManager = context.ServiceProvider.GetService <IExtensionManager>(); var backendExtensions = extensionManager.GetServices <IWindowsInstallerBackendDecompilerExtension>(); foreach (var extension in backendExtensions) { extension.PreBackendDecompile(context); } var command = new DecompileMsiOrMsmCommand(context, backendExtensions); var result = command.Execute(); foreach (var extension in backendExtensions) { extension.PostBackendDecompile(result); } return(result); }
public IDecompileResult Decompile(IDecompileContext context) { throw new NotImplementedException(); }
public DecompileMsiOrMsmCommand(IDecompileContext context, IEnumerable <IWindowsInstallerBackendDecompilerExtension> backendExtensions) { this.Context = context; this.Extensions = backendExtensions; this.Messaging = context.ServiceProvider.GetService <IMessaging>(); }