/// <summary> /// Uninstalls a package /// </summary> /// <param name="fastPackageReference"></param> /// <param name="request">An object passed in from the PackageManagement that contains functions that can be used to interact with its Provider</param> public void UninstallPackage(string fastPackageReference, PackageSourceListRequest request) { if (request == null) { throw new ArgumentNullException("request"); } if (!ValidatePackageManagementVersion(request)) { return; } request.Debug(Resources.Messages.DebugInfoCallMethod, PackageProviderName, "Calling UninstallPackage"); var package = request.GetFastReferenceComplex(fastPackageReference); if (package == null) { var pkg = request.GetPackageFromFastPath(fastPackageReference); if (pkg != null) { request.WriteError(ErrorCategory.InvalidData, fastPackageReference, Resources.Messages.PackageNotFound, Constants.ProviderName, pkg.Name, pkg.Version, pkg.Source); } else { request.WriteError(ErrorCategory.InvalidData, fastPackageReference, Resources.Messages.FailedToGetPackageObject, Constants.ProviderName, fastPackageReference); } return; } switch (package.Type.ToLowerInvariant()) { case Constants.MediaType.AppxPackage: //TODO for the future break; case Constants.MediaType.ExePackage: #if CORECLR request.WriteError(ErrorCategory.InvalidOperation, package.Type, Resources.Messages.UnsupportedPowerShellEnvironment, Constants.ProviderName, "Uninstall-Package", package.Type); #else ExePackageInstaller.UninstallExePackage(fastPackageReference, request); #endif break; case Constants.MediaType.MsiPackage: #if CORECLR request.WriteError(ErrorCategory.InvalidOperation, package.Type, Resources.Messages.UnsupportedPowerShellEnvironment, Constants.ProviderName, "Uninstall-Package", package.Type); #else UnInstallMsiPackage(request, fastPackageReference, package); #endif break; case Constants.MediaType.ZipPackage: ZipPackageInstaller.UnInstallZipPackage(package, request, fastPackageReference); break; case Constants.MediaType.NuGetPackage: NupkgInstaller.UninstallNuGetPackage(package, fastPackageReference, request, _fastPackReftable); break; case Constants.MediaType.PsArtifacts: PowerShellArtifactInstaller.UninstallPowershellArtifacts(package, fastPackageReference, request, _fastPackReftable); break; default: request.WriteError(ErrorCategory.InvalidData, fastPackageReference, Resources.Messages.UnknownMediaType, package.Name, package.Source, package.Type); break; } }