internal static bool UnInstallZipPackage(PackageSourceListRequest request, string fastPath) { string sourceLocation; string id; string displayName; string version; string path; var package = request.GetFastReferenceComplex(fastPath); if (!request.TryParseFastPathComplex(fastPath: fastPath, regex: PackageSourceListRequest.RegexFastPathComplex, location: out sourceLocation, id: out id, displayname: out displayName, version: out version, fastpath: out path)) { request.Error(ErrorCategory.InvalidOperation, "package", Constants.Messages.UnableToUninstallPackage); return(false); } if (!string.IsNullOrWhiteSpace(path) && Directory.Exists(path)) { path.TryHardToDelete(); request.YieldFromSwidtag(package, path); return(true); } else { request.Error(ErrorCategory.InvalidData, "folder {0} does not exist", path); return(false); } }
/// <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, fastPackageReference); var package = request.GetFastReferenceComplex(fastPackageReference); if (package == null) { 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: ExePackageInstaller.UninstallExePackage(fastPackageReference, request); break; case Constants.MediaType.MsiPackage: UnInstallMsiPackage(request, fastPackageReference, package); break; case Constants.MediaType.ZipPackage: ZipPackageInstaller.UnInstallZipPackage(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; } }
internal static bool UnInstallZipPackage(PackageSourceListRequest request, string fastPath) { string sourceLocation; string id; string displayName; string version; string path; var package = request.GetFastReferenceComplex(fastPath); if (!request.TryParseFastPathComplex(fastPath: fastPath, regex: PackageSourceListRequest.RegexFastPathComplex, location: out sourceLocation, id: out id, displayname: out displayName, version: out version, fastpath: out path)) { request.Error(ErrorCategory.InvalidOperation, "package", Constants.Messages.UnableToUninstallPackage); return false; } if (!string.IsNullOrWhiteSpace(path) && Directory.Exists(path)) { path.TryHardToDelete(); request.YieldFromSwidtag(package, path); return true; } else { request.Error(ErrorCategory.InvalidData, "folder {0} does not exist", path); return false; } }