我如何向 UWP 安装程序添加自定义操作,就像我们为普通桌面应用程序安装程序所做的那样?
How do I add custom actions to UWP installer like we do for normal desktop application installers?
我希望 UWP 安装程序检测已安装的 .net 版本,在安装新版本之前处理旧版本的卸载,允许系统管理员对其网络中的 PC 进行批量安装。对于普通的桌面应用程序,这三件事都很容易做到,因为我们可以创建自定义操作并进行静默安装。但是如何使用 appx 文件实现这些?
你根本做不到。 uwp
应用程序的安装过程已标准化,可在 OS 支持的所有设备上运行。编写应用程序时,自定义安装操作没有意义,例如Hololense、PC、手机和 XBOX。你会一事无成。
detect the installed .net version
你为什么要担心这个?您发布为某个 CLR 版本编译的应用程序。如果 PC 缺少此版本,则由管理员负责。
uninstalling of an older build before installing the new one
这会在安装较新版本时自动发生。
allow system administers to do a mass install to PCs within their network
这是可能的,但不是安装过程的组成部分。您的管理员必须应用特定的部署过程才能将应用分配给所有计算机。
您基本上必须了解旁加载 UWP LOB 应用程序的细节。一旦理解了这一点,您就可以简单地按照以前的方式编写安装程序,安装程序将为大多数工作流程调用所有适当的 powershell 命令,并为用户登录时设置计划任务以完成其他工作流程。 (我推荐你的msi用wix,msiexec给运行那个msi,psexec给运行一些msiexec命令在系统账户下无头,还有一个win10的vm来测试你的msi)
首先,您需要确保您的 LOB 应用程序与证书颁发机构颁发给您的组织的 "signing certificate" 打包在一起。这将告诉 windows 您的应用程序 "signed off" 将由它所说的公司实际构建。
其次,您需要确保目标机器处于侧载模式。
Configure PCs for Sideloading Requirements:
https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sideload-apps-with-dism-s14#span-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanconfigure-pcs-for-sideloading-requirements
既然你想 "allow system administers to do a mass install to PCs within their network" 他们会希望能够为所有用户进行无头安装。因此,您需要将应用程序配置到安装程序中。
配置 LOB 应用程序
重要的是要了解您可以将应用程序配置到目标机器的 "online" windows 10 映像,或 "offline" windows 10准备创建的图像。管理员需要对图像进行在线编辑,因为在这种情况下,他们部署到的机器已经 运行ning。
预配将在 windows 用户登录时向他们提供 UWP LOB 应用程序,如果该应用程序最初不存在的话。但是,当需要进行更新时,这是不够的——将应用程序更新留给另一方。它只是一种向用户一次性提供单一版本的 LOB 应用程序的方法。它也有限制,一个是当配置完成时,不能有任何用户主动登录到机器上,所以它必须使用 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 应用程序的典型安装程序需要克服许多挑战,但如果您愿意,可以完成!
我希望 UWP 安装程序检测已安装的 .net 版本,在安装新版本之前处理旧版本的卸载,允许系统管理员对其网络中的 PC 进行批量安装。对于普通的桌面应用程序,这三件事都很容易做到,因为我们可以创建自定义操作并进行静默安装。但是如何使用 appx 文件实现这些?
你根本做不到。 uwp
应用程序的安装过程已标准化,可在 OS 支持的所有设备上运行。编写应用程序时,自定义安装操作没有意义,例如Hololense、PC、手机和 XBOX。你会一事无成。
detect the installed .net version
你为什么要担心这个?您发布为某个 CLR 版本编译的应用程序。如果 PC 缺少此版本,则由管理员负责。
uninstalling of an older build before installing the new one
这会在安装较新版本时自动发生。
allow system administers to do a mass install to PCs within their network
这是可能的,但不是安装过程的组成部分。您的管理员必须应用特定的部署过程才能将应用分配给所有计算机。
您基本上必须了解旁加载 UWP LOB 应用程序的细节。一旦理解了这一点,您就可以简单地按照以前的方式编写安装程序,安装程序将为大多数工作流程调用所有适当的 powershell 命令,并为用户登录时设置计划任务以完成其他工作流程。 (我推荐你的msi用wix,msiexec给运行那个msi,psexec给运行一些msiexec命令在系统账户下无头,还有一个win10的vm来测试你的msi)
首先,您需要确保您的 LOB 应用程序与证书颁发机构颁发给您的组织的 "signing certificate" 打包在一起。这将告诉 windows 您的应用程序 "signed off" 将由它所说的公司实际构建。
其次,您需要确保目标机器处于侧载模式。
Configure PCs for Sideloading Requirements: https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/sideload-apps-with-dism-s14#span-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanspan-idsideloadingrequirementsspanconfigure-pcs-for-sideloading-requirements
既然你想 "allow system administers to do a mass install to PCs within their network" 他们会希望能够为所有用户进行无头安装。因此,您需要将应用程序配置到安装程序中。
配置 LOB 应用程序
重要的是要了解您可以将应用程序配置到目标机器的 "online" windows 10 映像,或 "offline" windows 10准备创建的图像。管理员需要对图像进行在线编辑,因为在这种情况下,他们部署到的机器已经 运行ning。
预配将在 windows 用户登录时向他们提供 UWP LOB 应用程序,如果该应用程序最初不存在的话。但是,当需要进行更新时,这是不够的——将应用程序更新留给另一方。它只是一种向用户一次性提供单一版本的 LOB 应用程序的方法。它也有限制,一个是当配置完成时,不能有任何用户主动登录到机器上,所以它必须使用 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 应用程序的典型安装程序需要克服许多挑战,但如果您愿意,可以完成!