如何为普通桌面应用程序安装程序添加自定义操作到UWP安装程序?

时间:2017-05-31 14:47:14

标签: uwp windows-installer custom-action appx

我希望UWP安装程序检测已安装的.net版本,在安装新版本之前处理旧版本的卸载,允许系统管理员对其网络中的PC进行批量安装。对于普通桌面应用程序来说,所有这三件事都很容易,因为我们可以创建自定义操作并执行静默安装。但是如何使用appx文件实现这些目标?

2 个答案:

答案 0 :(得分:5)

你根本做不到。 uwp个应用程序的安装过程是标准化的,适用于操作系统支持的所有设备。编写应用程序时,自定义安装操作没有意义。 Hololense,PC,移动和XBOX。你将无处可去。

  

检测已安装的.net版本

你为什么要担心这个?您发送为某个CLR版本编译的应用程序。如果PC缺少此版本,则管理员有错误。

  

在安装新版本之前卸载旧版本

安装新版本时会自动执行此操作。

  

允许系统管理员对其网络中的PC进行批量安装

这是可能的,但不是安装过程的集成部分。您的管理员必须应用某个部署过程才能将应用程序发送到所有计算机。

答案 1 :(得分:1)

您基本上必须了解侧载您的UWP LOB应用程序的详细信息。理解之后,您可以按照以前的方式编写安装程序,安装程序将为大多数工作流程调用所有相应的powershell命令,并在用户登录以完成其他工作流程时设置计划任务。 (我建议使用wix为你的msi,msiexec运行那个msi,psexec在系统帐户下无头地运行一些msiexec命令,以及一个winm vm来测试你的msi)

首先,您需要确保您的LOB应用程序包含一个"签名证书"由证书颁发机构颁发给您的组织。这将告诉Windows您的应用程序是"已签署"实际上由它所说的公司建造。

其次,您需要确保目标计算机处于侧载模式。

  

配置PC以进行侧载要求:   https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sideload-apps-with-dism-s14#span-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanconfigure-pcs-for-sideloading-requirements

由于您希望“允许系统管理员对其网络中的PC进行批量安装”。他们希望能够无头地为所有用户进行安装。因此,您需要将应用程序配置到安装程序中。

配置LOB应用

了解您可以将应用程序配置到" online" windows 10目标机器的图像,或者#34;离线" Windows 10图像,因为它准备创建。管理员需要对图像进行在线编辑,因为他们部署的计算机将在这种情况下运行。

如果应用程序首先尚未存在,则配置将在Windows用户登录时向其提供UWP LOB应用程序。当更新需要发生时,这会失败 - 将应用程序更新到另一方。它只是一种向用户提供单个版本的LOB App的方法。它还有一些限制,一个是在完成配置时,没有任何用户主动登录到机器上,因此必须使用SCCM或PSExec等工具进行无头操作,并且必须使用SYSTEM帐户。另一个限制是图像只能有24个配置的应用程序。

添加已配置的LOB应用

可以通过powershell cmdlet进行配置(如果是64位系统,则必须调用64位版本的powershell)

Add-AppxProvisionedPackage -Online -PackagePath <yourpackagepath> -DependencyPackagePath <yourdependencypackagepath> -SkipLicense

^从所有用户注销 - 因此通过psexec作为SYSTEM或从SCCM运行

  

https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sideload-apps-with-dism-s14

更新已配置的LOB应用

配置的LOB应用程序的较新版本 只能通过以下cmdlet(通过powershell) 为已登录到运行的PC的每个用户 应用 Windows映像。

> Add-AppxPackage

^在运行

时以目标用户身份登录

删除已配置的LOB应用

从图像中删除配置的LOB应用程序:

> Remove-AppxProvisionedPackage -Online -PackageName MyAppxPkg

^从所有用户注销 - 因此通过psexec作为SYSTEM或从SCCM运行

从每个处于活动状态的用户卸载旧版本应用程序:

> Remove-AppxPackage MyAppxPkg

^在运行

时以目标用户身份登录

tl; dr - UWP LOB应用程序的典型安装程序需要克服许多挑战,但如果您愿意,可以执行此操作!