C#应用程序控制台-powershell脚本作为管理员安装uwp-msix包



我正在尝试创建一个应用程序控制台,以便在sideload中安装UWP包。直接在powershell中使用该命令效果良好。管理员运行的应用程序的.exe:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />

程序运行两个命令。

  1. 在TrustedPeople商店中安装证书,如下所示
string certCommand0 = "Import-Certificate -FilePath THEFILEPATH -CertStoreLocation 'Cert:\LocalMachine\TrustedPeople' -Verbose";
string certCommand1 = certCommand0.Replace("THEFILEPATH", certificate);

--这部分代码可以很好地使用ADMINISTRATOR-属性

  1. 软件包的安装不起作用。下面是代码:
public static string Command(string script/*, string filePath*/)
{
string errorMsg = string.Empty;
ps.AddScript(script);
ps.AddArgument("Start-Process -FilePath "powershell" -Verb RunAs");
ps.AddCommand("Out-string");
PSDataCollection<PSObject> outPutCollection = new();
ps.Streams.Error.DataAdded += (object sender, DataAddedEventArgs e) =>
{
errorMsg = ((PSDataCollection<ErrorRecord>)sender)[e.Index].ToString();
};
IAsyncResult result = ps.BeginInvoke<PSObject, PSObject>(null, outPutCollection);
ps.EndInvoke(result);
StringBuilder sb = new();
foreach (var outputItem in outPutCollection)
{
sb.AppendLine(outputItem.BaseObject.ToString());
}
ps.Commands.Clear();
if (!string.IsNullOrEmpty(errorMsg))
return errorMsg;
return sb.ToString().Trim();
}

尝试安装程序包时,出现以下错误:"在模块"Appx"中找到了"Add AppxPack"命令,但无法加载该模块。有关详细信息,请运行"Import Module Appx";

我做了一些研究,找到了一个潜在的解决方案,它是有以下线路:

ps.AddArgument("Import-Module -Name Appx -UseWIndowsPowershell");

它不起作用。

有人能帮我弄明白吗?谢谢

感谢社区成员给我的建议。与此同时,我正试图找到另一条路。

我发现的最简单的解决方案是在证书安装在";信任的人"存储在";本地机器";。

正确安装证书的代码如下:

  • string certCommand0 = "Import-Certificate -FilePath 'THEFILEPATH' -CertStoreLocation 'Cert:\LocalMachine\TrustedPeople' -Verbose";

  • string certCommand1 = certCommand0.Replace("THEFILEPATH", certificate);

要打开.msix文件包,我使用了以下代码:

  • var p = new Process();
  • p.StartInfo = new ProcessStartInfo(filePath){ UseShellExecute = true };
  • p.Start();

希望它能帮助到别人。

相关内容

  • 没有找到相关文章