示例#1
0
        private Process RunInstaller(InstallInteractivityLevel interactivity, PackageManifest packageManifest, IInstaller whisperer)
        {
            _hub.Publish(new ExecutingInstallerEvent(packageManifest));

            var installArgs = _argFactory.GetInstallerArguments(interactivity, packageManifest, whisperer);

            var process = _processController.Start(whisperer.GetProcessPath(), installArgs.Arguments);

            _logger.Info("Waiting for installation to complete ...");
            _processController.WaitForExit(process);

            if (process.ExitCode != 0)
            {
                whisperer.ExitCodes.TryGetValue(process.ExitCode, out var exitReason);
                throw new InstallerException(process.ExitCode, packageManifest, exitReason, installArgs.LogFile);
            }

            return(process);
        }