private static string ConcatCommand(string originalCommand, AppxParameters parameters) { var c = originalCommand; // Get if ((parameters.Options & AppxOptions.AllUsers) != 0) { c += " -AllUsers"; } if ((parameters.Options & AppxOptions.PackageNameFilter) != 0) { c += " -Name " + parameters.PackageName; } if ((parameters.Options & AppxOptions.PublisherFilter) != 0) { c += " -Publisher " + parameters.PublisherName; } if ((parameters.Options & AppxOptions.AllUsers) == 0 && (parameters.Options & AppxOptions.UserFilter) != 0) { c += " -User " + parameters.UserName; } // Remove if ((parameters.Options & AppxOptions.Confirm) != 0) { c += " -confirm"; } if ((parameters.Options & AppxOptions.DisplayWhatIf) != 0) { c += " -WhatIf"; } return c; }
public static void RemovePackage(string packageFullName, AppxParameters parameters) { using (var runspace = RunspaceFactory.CreateRunspace()) { AppxPackage[] packages = null; runspace.Open(); var pipeline = runspace.CreatePipeline(); // 无法使用 AppxPackageManager 的功能,只好借用 PowerShell // 想使用 AppxPackageManager,请建立 Windows App 工程,而非 WPF 工程 string command = "Remove-AppxPackage"; command += " -Package " + packageFullName; command = ConcatCommand(command, parameters); pipeline.Commands.AddScript(command); var result = pipeline.Invoke(); if (result.Count > 0) { packages = (from psObject in result select (AppxPackage)psObject.BaseObject ).ToArray(); } runspace.Close(); } }