如何将Windows桌面应用程序转换为通用Windows应用程序

随着Windows10周年纪念日的更新,微软正在让开发者将传统的Windows桌面应用程序转换为通用Windows平台(UWP)应用程序成为可能。但任何人都可以用任何应用程序做到这一点--不仅仅是开发者。

使用Windows10的转换器,只需给它一个.msi或.exe文件,它就会输出一个.appx包。然后,你可以在你自己的PC上加载这款应用,或者-如果你是该应用的开发者-你可以将生成的UWP应用提交到Windows应用商店。随着Windows10周年纪念日的更新,这一功能将为每个人提供,将许多“传统”应用程序带到Windows应用商店。

你为什么要这么做

相关:Windows10周年纪念更新的新特性

此功能是微软Project Centyear的最终成果,该项目旨在将那些“旧的”Win32和.NET Windows桌面应用程序带到Windows应用商店和新的通用Windows平台。

你可能会想,为什么会有人想要把桌面应用程序转换成新的UWP应用程序。首先,Windows应用商店只允许使用UWP应用。这让开发人员可以更多地关注他们的应用程序,更不用说一键安装、轻松购买和自动更新了。

微软新的UWP应用程序平台是沙箱的,但你转换的桌面应用程序不是沙箱的。这些应用程序将拥有对您的系统的完全访问权限,就像传统的桌面应用程序一样。正如微软的文档所说:“作为一款UWP应用程序,您的应用程序能够完成经典桌面应用程序所能做的事情。它与注册表和文件系统的虚拟化视图交互,与实际注册表和文件系统没有什么区别。“

其局限性

相关:如何成为Windows内幕人士并测试Windows 10新功能

这里有一些重要的限制。首先,您只能在Windows10周年纪念更新上执行此操作。目前,它可以在Windows10Insider预览版14316和更高版本上运行,所以你需要加入Windows Insider计划,并使用Windows10的Insider预览版。

此功能还需要Windows 10的专业版或企业版。Windows 10家庭用户将无法使用桌面应用转换器。从14316版开始,它只在Windows10企业版上运行,但对Windows10专业版的支持即将到来。目前,该工具只能在64位版本的Windows上使用,生成的APPX包只能安装在64位版本的Windows上。在未来的Windows10的Insider版本中,这一点将会改变。

由此产生的应用程序专为Windows10 PC设计。它们不能在Windows 10 Mobile智能手机、Xbox One、HoloLens、Surface Hub和其他运行UWP应用程序的Windows 10平台上运行。然而,如果你是一名开发人员,微软提供了一条途径,让你的桌面应用程序进入跨平台的UWP应用程序:“如果你选择将你的应用程序的所有功能从应用程序的完全信任分区移到应用程序容器分区,那么你的应用程序将能够在任何Windows 10设备上运行。”

但是,不支持某些类型的应用程序行为。应用程序不能要求它以管理员身份运行或使用其他类型的低级别系统访问。Microsoft提供了不允许的行为列表。

如何设置桌面应用转换器

假设你使用的是足够新的Windows 10 Insider预览版,你可以从微软的开发者网站下载并安装Windows桌面应用转换器。下载DesktopAppConverter.zip和BaseImage-14316.wim文件。将下载的DesktopAppConverter.zip文件解压缩到计算机上的文件夹中,并将BaseImage文件放在同一目录中。(如果有新版本的Windows10可用,您应该会看到一个新的BaseImage文件。您需要使用与您安装的Windows10版本号相同的BaseImage文件。)

您还需要下载并安装Windows10SDK。

接下来,以管理员身份打开PowerShell窗口。为此,请打开“开始”菜单,搜索“PowerShell”,右键单击其快捷方式,然后选择“以管理员身份运行”。

通过运行以下命令更改PowerShell的执行策略。之后键入y同意更改。

Set-ExecutionPolicy bypass

运行以下命令,将C:\Users\Name\Downloads\DesktopAppConvertor替换为您计算机上目录的路径:

cd -Path C:\Users\NAME\Downloads\DesktopAppConvertor

通过运行以下命令设置桌面应用转换器:

.\DesktopAppConverter.ps1 -Setup -BaseImage .\BaseImage-14316.wim

如果在运行这些命令时要求您重新启动,请重新启动计算机,然后再次运行该命令。

如何转换桌面应用程序

现在,您可以从管理员PowerShell窗口运行DesktopAppConverter.ps1脚本,只需一个命令即可将桌面应用程序转换为UWP应用程序。执行此操作需要应用程序的安装程序。作为示例,我们在这里将使用VLC。

要查看详细的选项列表,您可以随时运行以下命令:

get-help .\DesktopAppConverter.ps1 -detailed

以下是您可以针对您的应用程序使用和调整的命令:

.\DesktopAppConverter.ps1 -ExpandedBaseImage C:\ProgramData\Microsoft\Windows\Images\BaseImage-14316 –Installer C:\Installer\MyApp.exe -InstallerArguments "/S" -Destination C:\Output\MyApp -PackageName "MyApp" -Publisher "CN=" -Version 0.0.0.1 -MakeAppx -Verbose

您需要调整该命令以添加您自己的发布者名称、版本、软件包名称,并将其指向您喜欢的安装程序文件和目标目录。这里的-Insteller Arguments“/S”选项将/S开关传递给安装程序,这使许多应用程序安装程序无需任何用户输入即可静默安装。应用程序必须是可安装的,没有任何用户输入,否则您无法转换它们。

应用程序的安装程序应该位于其自己的目录中,而不包含任何其他文件,因为与安装程序位于同一目录中的文件将被复制到生成的.appx包中。

例如,我们在这里使用的是vlc,因此下面是我们将使用的命令:

.\DesktopAppConverter.ps1 -ExpandedBaseImage C:\ProgramData\Microsoft\Windows\Images\BaseImage-14316 –Installer C:\Users\chris\Downloads\vlc\vlc-2.2.2-win32.exe -InstallerArguments "/S" -Destination C:\Output\VLC -PackageName "VLC" -Publisher "CN=VideoLAN" -Version 0.2.2.2 -MakeAppx -Verbose

该工具将为您提供一个.appx包,这是该应用程序的UWP版本。

如何在不签名的情况下安装App

在安装应用程序之前,通常需要您使用有效签名对其进行签名。微软建议创建自签名证书,并使用计算机上的证书对应用程序进行签名。如果您愿意,可以使用下面的说明执行此操作。

然而,如果你只想在自己的电脑上安装这款应用程序,你可以更快地自己安装,而不会扰乱任何签名。Windows10允许你安装应用程序,如果你是从目录安装一个“未打包”的应用程序,则无需签名即可安装这些应用程序。

为此,请以管理员身份打开PowerShell窗口,然后运行以下命令:

Add-AppxPackage -Path C:\Path\to\AppxManifest.xml -Register

您将在指定的输出目录中的Application.appx文件旁边找到AppxManifest.xml文件。

现在,您可以从“开始”菜单启动该应用程序。它将是一款“Windows应用程序”,而不是“桌面应用程序”,但在其他方面,它的外观和工作方式与普通桌面应用程序一样。

如何对App进行签名和安装

如果您已经安装了该应用程序,则不需要遵循这些说明。这是一条更难走的路。

通常情况下,只有具有有效签名的.appx包才能安装。微软建议使用Windows 10 SDK附带的signtool.exe应用程序创建自签名证书,这将允许您在自己的计算机上安装和测试该应用程序。

只需以管理员身份打开命令提示符窗口,然后运行以下命令即可创建自签名证书,并使用该证书对.appx包进行签名:

cd "C:\Program Files (x86)\Windows Kits\10\bin\x64"MakeCert.exe -r -h 0 -n "CN=Publisher" -eku 1.3.6.1.5.5.7.3.3 -pe -sv my.pvk my.cerpvk2pfx.exe -pvk my.pvk -spc my.cer -pfx my.pfxsigntool.exe sign -f my.pfx -fd SHA256 -v C:\Path\to\application.appx

请注意,您指定的发布者(即“cn=Publisher”)必须与之前创建appx文件时指定的发布者匹配。因此,继续上面的VLC示例,我们必须使用“cn=VideoLAN”。

系统将要求您输入密码。您可以将密码留空。

现在,您可以使用Add-AppxPackage命令在PowerShell(管理员)窗口中安装.appx软件包:

Add-AppxPackage C:\Path\to\application.appx

任何人都可以使用此功能,但只有开发人员--可能还有一些系统管理员--会想走这条路。幸运的是,这个过程对开发人员来说非常简单。

相关文章