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

C# 将可执行文件包含到UWP最终包中,c#,ffmpeg,uwp,openssl,C#,Ffmpeg,Uwp,Openssl,我正在编写一个UWP商店应用程序,它调用其他可执行文件,如OpenSSL和FFmpeg.exe。我成功地将它们包含在WPF应用程序中。但是,有了UWP,如何将它们构建到最终的包中以上载到Windows应用商店 我正在考虑以下解决方案: 将所需文件(例如,FFmpeg.exe)添加到项目中。然后将生成操作属性选择为“内容”,并复制到输出目录。但对于包含子文件夹和文件的整个文件夹(例如OpenSSL portable folder),此选项似乎不可能 编写一种方法,在程序启动时将文件(FFmpeg.

我正在编写一个UWP商店应用程序,它调用其他可执行文件,如OpenSSL和FFmpeg.exe。我成功地将它们包含在WPF应用程序中。但是,有了UWP,如何将它们构建到最终的包中以上载到Windows应用商店

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

  • 将所需文件(例如,FFmpeg.exe)添加到项目中。然后将生成操作属性选择为“内容”,并复制到输出目录。但对于包含子文件夹和文件的整个文件夹(例如OpenSSL portable folder),此选项似乎不可能

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


  • 有更好的方法吗?谢谢。

    您必须利用build powershell命令

    第一步,设置 转到解决方案文件夹,创建一个名为“MyExeFolder”的新文件夹 在该文件夹中放入所需的.exe,如FFmpeg.exe

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

    在“生成后事件”命令中,输入以下内容:

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

    如果您也在为x64构建,那么您也可以为x64添加相同的命令,而不是为x86添加相同的命令。如果您正在构建win32项目并将其分组到相同的解决方案下,则必须定义相应的bin文件夹

    三步执行 为了从uwp启动win32应用程序,您必须使用一个名为runFullTrust的a功能,很难列出您必须对应用程序清单进行的所有xml修改以启用此功能,但一旦您弄明白了,您必须将其添加到扩展节点:

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

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

    对于solution#2,它只适用于本地开发机器。在Windows应用商店应用程序上,当用户下载应用程序时,我不希望应用程序查找可执行文件(或资源文件)并复制到应用程序的LocalState文件夹。谢谢。由于您正在分发
    ffmpeg
    请确保遵守许可证。@kangjmoon您是否尝试将WPF应用程序转换为UWP应用程序?@Bite我更喜欢编写本机UWP。
    try  {             
                    await Windows.ApplicationModel.FullTrustProcessLauncher.LaunchFullTrustProcessForCurrentAppAsync();
                }
                catch (Exception Ex)
                {
                  //failed to Launch
                }