在UWP最终包中包含可执行文件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在UWP最终包中包含可执行文件相关的知识,希望对你有一定的参考价值。
我正在编写一个调用其他可执行文件的UWP Store应用程序,例如OpenSSL和FFmpeg.exe。我成功地将它们包含在WPF应用程序中。但是,使用UWP,如何将它们构建到最终包中以上传到Windows应用商店?
我在想这些解决方案:
- 将所需文件(例如,FFmpeg.exe)添加到项目中。然后选择Build Action属性为'Content'并复制到Output Directory。但是这个选项似乎不可能与包含子文件夹和文件的整个文件夹(例如,OpenSSL可移植文件夹)。
- 编写一个方法,在程序启动时将文件(FFmpeg.exe)复制到UWP应用程序的本地文件夹中。 ...
有一个更好的方法吗?谢谢。
您必须利用build powershell命令。
1 Step, Setting up
转到您的解决方案文件夹,并在该文件夹中创建一个名为“MyExeFolder”的新文件夹,放置您想要的.exe,如FFmpeg.exe
2 Step, Automating
右键单击您的条目Uwp Project并转到Properties,然后转到Build Events
在Post Build事件命令中输入:
xcopy / y / s“$(SolutionDir)MyExeFolder FFmpeg.exe”“$(SolutionDir) UWP bin x86 $(ConfigurationName) AppX ”
如果您也在为x64构建,那么您也可以使用x64添加相同的命令,而不是x86,如果要构建win32项目并在同一解决方案下对其进行分组,则必须定义相应的bin文件夹。
3 Step Executing
为了从uwp启动win32应用程序,你将不得不使用一个名为runFullTrust的功能,很难列出你必须对应用程序清单进行的所有xml修改以启用这样的功能,但是一旦你搞清楚了,你将会必须将此添加到Extension节点:
<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限制。
以上是关于在UWP最终包中包含可执行文件的主要内容,如果未能解决你的问题,请参考以下文章