/// <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; }
/// <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); }
/// <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); }