He buscado y buscado y parece que me he topado con una pared de ladrillos aquí. Estoy desarrollando una aplicación que genera una huella digital de audio para buscar automáticamente una base de datos de audio para obtener el artista y el título correctos y cambiar el nombre de los archivos en consecuencia.
Mi problema es que no hay bibliotecas compatibles para C# y UWP (por lo que sé) que puedan generar una huella digital acústica. Lo único que encontré es Chromaprint, que me permite ejecutar un comando como "fpcalc.exe mymp3file.mp3 > generatefingerprint.txt" y tomar la huella digital en un archivo de texto.
Entonces, como puede ver, agarrar la huella digital no es realmente el problema aquí, el problema es que no puedo ejecutar un archivo EXE desde una aplicación UWP usando métodos tradicionales (como los que se usan en una aplicación Winforms). Tampoco puedo iniciar un símbolo del sistema para ejecutar el archivo desde UWP, por lo que no puedo generar la huella digital desde mi aplicación.
Entonces mi pregunta es, ¿alguien tiene alguna solución para esto? Entiendo que puedo usar Powershell dado que XboxOne es compatible con PowerShell, sin embargo, si uso el siguiente código:
using (PowerShell PowerShellInstance = PowerShell.Create()) { PowerShellInstance.AddCommand(".\fpcalc.exe " + file.Path + " > out.txt"); }Me sale el siguiente error al construir:
Cannot find type System.SystemException in module CommonLanguageRuntimeLibraryEntonces, ¿alguien tiene alguna idea de lo que puedo hacer para iniciar este archivo fpcalc.exe desde mi aplicación? En realidad, no me importa si la aplicación solo tiene soporte para PC y escritorios con Windows, pero la aplicación final debe poder pasar WACK y permitirse en Microsoft Store (que, por cierto, será gratuito para descargar).
Gracias de antemano por cualquier ayuda :)
Me he estado golpeando la cabeza contra la pared toda la noche por esto, pero después de cientos de páginas en línea, es posible que haya encontrado una solución a mi problema.
Al hacer referencia a las "Extensiones de escritorio de Windows para UWP v10.0.14393.0" en "Referencias> Windows universal> Extensiones", puedo usar:
await FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();LaunchFullTrustProcess me permite iniciar una aplicación de confianza desde mi propia aplicación. Luego modifiqué el archivo XML del manifiesto del paquete y agregué lo siguiente en "capacidades"
<rescap:Capability xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities" Name="runFullTrust" />Luego agregué lo siguiente a "aplicaciones" en el XML
<Extensions xmlns:desktop="http://schemas.microsoft.com/appx/manifest/desktop/windows10"> <desktop:Extension Category="windows.fullTrustProcess" Executable="fpcalc.exe" /> </Extensions>Luego modifiqué las dependencias para que mi aplicación se ejecutara en máquinas de escritorio de Windows.
<Dependencies> <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.14393.0" MaxVersionTested="10.0.14393.0" /> </Dependencies>Entonces pude iniciar la aplicación. Una vez que termine de escribir el código, lo probaré y publicaré la solución correcta al problema para referencia futura.