コード例 #1
0
ファイル: UiInstaller.cs プロジェクト: zigor/sinst
        /// <summary>
        /// Installs the specified package.
        /// </summary>
        /// <param name="packageUri">The package URI.</param>
        /// <param name="options">The options.</param>
        public void Install(string packageUri, InstallerOptions options)
        {
            EventHandler <InputRequiredEventArgs> inputHandler =
                (sender, args) => this.OnInputRequired(sender, args, options);

            EventHandler <OutputRequredEventArgs> outputHandler =
                (sender, args) => this.OnOutputRequired(sender, args, options);

            this.Events.Input   += inputHandler;
            this.Events.Output  += outputHandler;
            this.Events.Start   += options.Start;
            this.Events.Success += options.Success;
            this.Events.Failure += options.Failure;

            this.BeginInstallation(packageUri);

            var packagePath = ResolvePackagePathPipeline.Run(packageUri);

            if (!string.IsNullOrEmpty(packagePath))
            {
                InstallPackagePipeline.Run(packagePath, options.Host, options.Credentials).Wait();
            }

            this.EndInstallation();

            this.Events.Input   -= inputHandler;
            this.Events.Output  -= outputHandler;
            this.Events.Start   -= options.Start;
            this.Events.Success -= options.Success;
            this.Events.Failure -= options.Failure;
        }
コード例 #2
0
ファイル: UiInstaller.cs プロジェクト: zigor/sinst
        /// <summary>
        /// Called when input required.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="InputRequiredEventArgs"/> instance containing the event data.</param>
        /// <param name="options"></param>
        /// <exception cref="NotImplementedException"></exception>
        private void OnInputRequired(object sender, InputRequiredEventArgs e, InstallerOptions options)
        {
            if (options.Silent && !string.IsNullOrEmpty(options.SilentOptionsSet))
            {
                var defaultOption = options.SilentOptionsSet.Split(';').FirstOrDefault(v => e.Choices.ContainsValue(v));
                if (!string.IsNullOrEmpty(defaultOption))
                {
                    e.Result = defaultOption;
                    return;
                }
            }

            var handler = options.Input;

            handler?.Invoke(sender, e);
        }
コード例 #3
0
ファイル: UiInstaller.cs プロジェクト: zigor/sinst
        /// <summary>
        /// Called when output required.
        /// </summary>
        /// <param name="sender">The sender.</param>
        /// <param name="e">The <see cref="OutputRequredEventArgs"/> instance containing the event data.</param>
        /// <param name="options"></param>
        /// <exception cref="NotImplementedException"></exception>
        private void OnOutputRequired(object sender, OutputRequredEventArgs e, InstallerOptions options)
        {
            var handler = options.Output;

            handler?.Invoke(sender, e);
        }