我正在尝试创建一个应用程序控制台,以便在sideload中安装UWP包。直接在powershell中使用该命令效果良好。管理员运行的应用程序的.exe:
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
程序运行两个命令。
- 在TrustedPeople商店中安装证书,如下所示
string certCommand0 = "Import-Certificate -FilePath THEFILEPATH -CertStoreLocation 'Cert:\LocalMachine\TrustedPeople' -Verbose";
string certCommand1 = certCommand0.Replace("THEFILEPATH", certificate);
--这部分代码可以很好地使用ADMINISTRATOR-属性
- 软件包的安装不起作用。下面是代码:
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();
希望它能帮助到别人。