在本地部署Windows 商店应用程序时,我们会遇到Add-AppDevPackage.ps1脚本,这个脚本和所在安装包都是visual studio 生成的。应用程序安装完毕后为:非开发者模式。我们可以用PowerShell简单验证下:
PS> Get-AppxPackage -Name Microsoft.BingFinance
...
Name : Microsoft.BingFinance
IsDevelopmentMode : False
...
但是我们在visual studio 中直接通过F5调试应用程序时,App会被安装在debug目录下面的某个appx目录,并且安装方式为开发者模式。
PS> Get-AppxPackage -Name e8c4dded-e6ac-41b8-a814-fa5cf6b47106
...
Name : e8c4dded-e6ac-41b8-a814-fa5cf6b47106
InstallLocation : C:\Users\非苔\Downloads\App1\App1\App1.Windows\bin\Debug\AppX
IsDevelopmentMode : True
那如何指定开发者模式和非开发者模式呢?关键在于Add-AppxPackage的参数使用。比如下面这个方式会安装为非法者模式,Add-AppDevPackage.ps1使用的就是这种方式。
Add-AppxPackage -Path $DeveloperPackagePath.FullName -ForceApplicationShutdown
另一种安装为开发者模式的方式为:
$manifestFile = "$packagePath\AppxManifest.xml" Add-AppxPackage -Register $manifestFile -ForceApplicationShutdown
而且使用注册的方式,文件夹的结构必须类似:
那如果别人给了我们一个visual studio 生成的标准的安装包呢,形如:
我们想把这个包安装在开发者模式下, 应当怎么做呢?
Add-AppDevPackage.ps1肯定不行的。如果我们有一个appx目录就可以使用-register参数来调用Add-AppxPackage了。能把标准的安装包转换成appx目录吗?
HubApp.Windows_1.0.0.2_AnyCPU_Debug.appx文件其实就是一个zip包,我们只需将它重命名为zip后缀名,里面即为appx目录。而且有的安装包可能包含了一个后缀名为appxbundle的文件,它也是一个zip包,里面也会包含一个appx包。
如果使用PowerShell将这种Windows store应用程序的标准安装包安装在开发者模式下,只需3步:
- 在脚本所在的目录下查找appxbundle文件
- 解压 appx 文件,将包内容复制到APPData目录下
- 调用Add-AppxPackage将app安装包安装在开发者模式下
当然交付给最终用户部署时,我们还得考虑用户是否是以管理员权限运行,用户的机器上有没有有效的微软开发者许可证,如果没有引导它获取一个。整个一个流程自动化下来,也得百来十行code。我分享一个自己针对某特定app安装包写的定制版安装脚本:Install-AppPackage.ps1
请尊重原作者和编辑的辛勤劳动,欢迎转载,并注明出处!