2017-03-20 97 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

如果可能,你可以發佈完整的解決方案嗎? :) –