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

随着视窗10周年纪念更新 ,微软正在使开发人员能够传统的Windows桌面应用程序转换为通用的Windows平台(UWP)应用。 但任何人都可以用任何应用程序 - 不只是开发人员。

使用Windows 10的转换器,只是给它一个.msi或.exe文件,它会吐出一个.appx包。 然后,您可以在自己的PC上侧载此应用程序,或者,如果您是应用程序的开发人员,则可以将生成的UWP应用程序提交到Windows应用商店。 此功能将到达每个人都与Windows 10周年纪念更新, 带来了许多“传统”的应用程序Windows应用商店

为什么你想这样做

此功能是Microsoft的Project Centennial的最终结果,它旨在将这些“传统”Win32和.NET Windows桌面应用程序带到Windows应用商店和新的通用Windows平台。

您可能想知道为什么任何人都想将桌面应用程序转换为新的UWP应用程序。 首先,在Windows应用商店中只允许使用UWP应用。 这使开发人员能够更多地看到他们的应用程序,更不用说一键安装,轻松购买和自动更新。

Microsoft的新应用程序平台也是沙箱化的,因此将旧应用程序转换为UWP应用程序有一个安全优势。 转换器工具将分析您的桌面应用程序的行为,并创建一个沙箱只为它,只给它需要正确运行的权限。 如果应用程序受到攻击,它将无法突破该有限的沙盒,并与系统的其余部分混乱。 应用程序将安装和卸载干净,不留下垃圾躺在文件系统和注册表中。

最终的应用程序仍然是强大的,尽管沙箱。 这些应用程序可以使用UWP功能,但应该像传统的桌面应用程序一样强大。 作为微软的文档说:“作为一个UWP应用程序,您的应用程序能够做的事情,它可以做作为一个典型的桌面应用程序。 它与注册表和文件系统的虚拟化视图交互,这与实际的注册表和文件系统不可区分。

限制

这里有一些重要的限制。 首先,你只能在Windows 10周年更新上这样做。 现在,它会在Windows 10的工作内幕预览打造14316和更高的,所以你需要加入Windows内幕程序,并利用内幕预览构建Windows 10

此功能还需要Windows 10的专业版或企业版。Windows 10 Home用户将无法使用Desktop App Converter。 从建立14316,它只工作在Windows 10企业版,但支持Windows 10专业版即将到来。 目前,此工具只能在64位版本的Windows上使用,并且生成的AppX包只能安装在64位版本的Windows上。 这将改变未来的Windows 10的内部构建。

生成的应用程序适用于Windows 10 PC。 它们不适用于Windows 10 Mobile智能手机,Xbox One,HoloLens,Surface Hub和运行UWP应用程序的其他Windows 10平台。 但是,如果您是开发人员,Microsoft提供了将您的桌面应用程序转换为跨平台UWP应用程序的途径:“如果您选择将所有应用程序的功能从应用程序的完全信任分区移到应用程序容器分区,那么您的应用程序将能够在任何Windows 10设备上运行。

但是,某些类型的应用程序行为不受支持。 应用程序不能要求以管理员身份运行或使用其他类型的底层系统访问。 微软提供的名单是不允许的行为

如何设置桌面应用程序转换器

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

您还需要下载和安装的Windows 10 SDK

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

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

  Set-ExecutionPolicy绕过 

运行下面命令,替换C:\Users\NAME\Downloads\DesktopAppConvertor的路径到您的计算机上的目录:

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

通过运行以下命令设置Desktop App Converter:

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

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

如何转换桌面应用程序

现在,您可以运行DesktopAppConverter.ps1从管理员的PowerShell脚本窗口到桌面应用程序转换为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 = <publisher_name>”-Version 0.0.0.1 -MakeAppx -Verbose 

您需要调整命令以添加您自己的发布者名称,版本,包名称,并将其指向您喜欢的安装程序文件和目标目录。 -InstallerArguments "/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版本。

如何安装应用程序,而不签名

通常您必须在签署应用程式之前签署有效的签章才能安装。 Microsoft建议创建自签名证书并在计算机上使用该证书签名应用程序。 你可以使用下面的说明,如果你喜欢。

但是,如果你只是想在自己的计算机上安装应用程序,你可以自己做得更快,而不会弄乱任何签名。 如果您从目录安装“unpackaged”应用程序,Windows 10允许您安装应用程序而不签名。

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

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

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

您现在可以从开始菜单启动应用程序。 它将是一个“Windows应用程序”而不是“桌面应用程序”,但它会看起来像一个普通的桌面应用程序和工作。

如何签名和安装应用程序

如果您已经安装了应用程序,则不需要按照这些说明进行操作。 这是更难的方式。

通常只能安装.appx包,如果它有有效的签名。 Microsoft建议使用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.cer 
  pvk2pfx.exe -pvk my.pvk -spc my.cer -pfx my.pfx 
  signtool.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 

这个功能可以被任何人使用,但只有开发人员 - 也许一些系统管理员 - 将想去这条路线。 幸运的是,对于开发人员来说,这个过程非常容易,假设他们的应用程序不需要任何UWP沙盒不支持的功能。

赞 (0)
分享到:更多 ()