将可执行文件包含到UWP最终软件包中

时间:2019-01-10 22:35:56

标签: c# ffmpeg uwp openssl

我正在编写一个UWP Store应用程序,该应用程序调用其他可执行文件,例如OpenSSL和FFmpeg.exe。我已将这些成功地包含在WPF应用程序中。但是,使用UWP,如何将它们构建到最终包中以上传到Windows应用商店?

我正在考虑以下解决方案:

  1. 将所需的文件(例如FFmpeg.exe)添加到项目中。然后将“生成操作”属性选择为“内容”,然后复制到输出目录。但是对于包含子文件夹和文件的整个文件夹(例如,OpenSSL便携式文件夹),似乎无法使用此选项。

  2. 编写一种在程序启动时将文件(FFmpeg.exe)复制到UWP应用的本地文件夹中的方法。 ...

有更好的方法吗?谢谢。

1 个答案:

答案 0 :(得分:2)

您必须利用build powershell命令。

第一步,设置

转到您的解决方案文件夹,然后创建一个名为“ MyExeFolder”的新文件夹。 在该文件夹中放入所需的.exe,例如FFmpeg.exe

2步,自动化

右键单击您的输入Uwp项目并转到属性,然后转到构建事件

在发布后事件命令中

输入以下内容:

xcopy / y / s“ $(SolutionDir)MyExeFolder \ FFmpeg.exe”“ $(SolutionDir)\ UWP \ bin \ x86 \ $(ConfigurationName)\ AppX \”

如果您也要为x64进行构建,那么也要为x86添加x64而不是x64,如果要一起构建win32项目并将其归为同一解决方案,则必须定义相应的bin文件夹。

3步执行

要从uwp启动win32应用程序,您将必须使用称为 runFullTrust 的功能,很难列出对应用程序清单进行的所有xml修改以启用该功能。功能,但是一旦弄清楚了,就必须将其添加到“扩展”节点:

<desktop:Extension Category="windows.fullTrustProcess" 
Executable="FFmpeg.exe" />

here is more info on how to set up the manifest

一旦完成所有这些操作,您就可以通过以下方式从uwp应用程序中的任何位置启动win32部件:

try  {             
                await Windows.ApplicationModel.FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
            }
            catch (Exception Ex)
            {
              //failed to Launch
            }

对于进一步阅读,我建议您访问stefan wicks博客,因为他有大量的示例和教程,介绍了如何使用.Net本机可扩展性来克服uwp限制。