2017-03-20 96 views
8

我已经搜索和搜索,似乎在这里击中了一堵砖墙。我正在开发一个应用程序,用于生成音频指纹以自动搜索音频数据库以获取正确的艺术家和标题并相应地重命名文件。使用UWP从C#运行EXE

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

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

所以我的问题是,有没有人有任何解决方法,我明白我可以使用Powershell给出

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

我:那XboxOne支持PowerShell的,但如果我使用下面的代码的事实

Cannot find type System.SystemException in module CommonLanguageRuntimeLibrary 

因此,没有人有任何想法,我能做些什么,从我的应用程序中启动该fpcalc.exe文件:建设时遇到下面的错误?我并不介意该应用程序是否仅支持Windows PC和台式机,但最终的应用程序必须能够通过WACK并被允许在Microsoft商店(可免费下载BTW)。

预先感谢任何帮助:)

回答

14

我一直在敲打我的头撞墙通宵过这一点,但上百页网上后,我可能会拿出一个解决我的问题。

通过引用“Windows桌面扩展为UWP v10.0.14393.0”下的“参考>通用窗口>扩展”我可以使用:

await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync(); 

的LaunchFullTrustProcess让我从启动受信任的应用程序在我自己的应用程序。然后我修改了程序包清单XML文件,并添加下的“能力”以下

<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> 

然后我才能启动应用程序。一旦我完成编写代码,我将测试它并发布正确的解决方案以供将来参考。

+0

如果可能,你可以发布完整的解决方案吗? :) –