gpt4 book ai didi

c# - 使用 UWP 从 C# 运行 EXE

转载 作者:可可西里 更新时间:2023-11-01 12:41:00 24 4
gpt4 key购买 nike

找了又找,好像在这里碰壁了。我正在开发一个生成音频指纹的应用程序,以自动搜索音频数据库以获取正确的艺术家和标题并相应地重命名文件。

我的问题是,C# 和 UWP(据我所知)没有可生成声学指纹的支持库。我唯一发现的是 Chromaprint,它允许我运行诸如“fpcalc.exe mymp3file.mp3 > generatedfingerprint.txt”之类的命令并将指纹抓取到文本文件中。

因此,如您所见,抓取指纹并不是这里的真正问题,问题是我无法使用传统方法(例如 Winforms 应用程序中使用的方法)从 UWP 应用程序中运行 EXE 文件。我也无法启动从 UWP 执行文件的命令提示符,因此我无法从我的应用程序中生成指纹。

所以我的问题是,是否有人对此有任何解决方法。我知道我可以使用 Powershell,因为 XboxOne 支持 PowerShell,但是如果我使用以下代码:

using (PowerShell PowerShellInstance = PowerShell.Create())
{
PowerShellInstance.AddCommand(".\fpcalc.exe " + file.Path + " > out.txt");
}

构建时出现以下错误:

Cannot find type System.SystemException in module CommonLanguageRuntimeLibrary

那么有人知道我可以做什么来从我的应用程序中启动这个 fpcalc.exe 文件吗?我实际上并不介意该应用程序是否仅支持 Windows PC 和台式机,但最终应用程序必须能够通过 WACK 并允许在 Microsoft Store 上使用(顺便说一句,可以免费下载)。

在此先感谢您的帮助:)

最佳答案

为此,我整晚都在用头撞砖墙,但在网上浏览了数百页之后,我可能已经找到了解决问题的方法。

通过在“引用 > 通用 Windows > 扩展”下引用“UWP v10.0.14393.0 的 Windows 桌面扩展”,我可以使用:

await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();

LaunchFullTrustProcess 允许我从我自己的应用程序中启动受信任的应用程序。然后我修改了 Package Manifest XML 文件并在“capabilities”下添加了以下内容

<rescap:Capability
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
Name="runFullTrust" />

然后我将以下内容添加到 XML 中的“应用程序”

<Extensions
xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10">
<desktop:Extension
Category="windows.fullTrustProcess"
Executable="fpcalc.exe" />
</Extensions>

然后我修改了依赖项,使我的应用程序可以在 Windows 桌面计算机上运行

<Dependencies>
<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.0" MaxVersionTested="10.0.14393.0" />
</Dependencies>

然后我就可以启动该应用程序了。完成代码编写后,我将对其进行测试并发布问题的正确解决方案以供将来引用。

关于c# - 使用 UWP 从 C# 运行 EXE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42900471/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com