示例#1
0
        /// <summary>
        /// Emulates calling wix.exe with standard backends.
        /// </summary>
        /// <param name="args"></param>
        /// <param name="coreProvider"></param>
        /// <param name="messages"></param>
        /// <param name="warningsAsErrors"></param>
        /// <returns></returns>
        public static Task <int> Execute(string[] args, IWixToolsetCoreServiceProvider coreProvider, out List <Message> messages, bool warningsAsErrors = true)
        {
            coreProvider.AddWindowsInstallerBackend()
            .AddBundleBackend();

            var listener = new TestMessageListener();

            messages = listener.Messages;

            var messaging = coreProvider.GetService <IMessaging>();

            messaging.SetListener(listener);

            var arguments = new List <string>(args);

            if (warningsAsErrors)
            {
                arguments.Add("-wx");
            }

            var commandLine = coreProvider.GetService <ICommandLine>();
            var command     = commandLine.CreateCommand(arguments.ToArray());

            return(command?.ExecuteAsync(CancellationToken.None) ?? Task.FromResult(1));
        }
示例#2
0
        public static int Execute(string[] args, IServiceProvider serviceProvider, out List <Message> messages)
        {
            var listener = new TestMessageListener();

            messages = listener.Messages;

            var messaging = serviceProvider.GetService <IMessaging>();

            messaging.SetListener(listener);

            var arguments = serviceProvider.GetService <ICommandLineArguments>();

            arguments.Populate(args);

            var commandLine = serviceProvider.GetService <ICommandLine>();

            commandLine.ExtensionManager = CreateExtensionManagerWithStandardBackends(serviceProvider, arguments.Extensions);
            commandLine.Arguments        = arguments;
            var command = commandLine.ParseStandardCommandLine();

            return(command?.Execute() ?? 1);
        }