Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #4
0
 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>();
 }