原文: PowerShell将Windows store应用程序安装为开发者模式

在本地部署Windows 商店应用程序时,我们会遇到Add-AppDevPackage.ps1脚本,这个脚本和所在安装包都是visual studio 生成的。应用程序安装完毕后为:非开发者模式。我们可以用PowerShell简单验证下:

PS C:\WINDOWS\system32> Get-AppxPackage -Name -99a4-4d0d-af2d-e3465acd3c20

Name : -99a4-4d0d-af2d-e3465acd3c20
Publisher : CN=lay
Architecture : X86
ResourceId :
Version : 1.0.5.0
PackageFullName : -99a4-4d0d-af2d-e3465acd3c20_1.0.5.0_x86__r60hmjdgart72
InstallLocation : C:\Program Files\WindowsApps\-99a4-4d0d-af2d-e3465acd3c20_1.0.5.0_x86__r60hmjdgart72
IsFramework : False
PackageFamilyName : -99a4-4d0d-af2d-e3465acd3c20_r60hmjdgart72
PublisherId : r60hmjdgart72
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : False
Dependencies : {Microsoft.NET.CoreRuntime..1_1.1.25305.1_x86__8wekyb3d8bbwe, Microsoft.VCLibs.140.00.Debug_14.0.2
.0_x86__8wekyb3d8bbwe}
IsPartiallyStaged : False

但是我们在visual studio 中直接通过F5调试应用程序时,App会被安装在debug目录下面的某个appx目录,并且安装方式为开发者模式。

PS C:\WINDOWS\system32> Get-AppxPackage -Name -99a4-4d0d-af2d-e3465acd3c20

Name : -99a4-4d0d-af2d-e3465acd3c20
Publisher : CN=lay
Architecture : X86
ResourceId :
Version : 1.0.5.0
PackageFullName : -99a4-4d0d-af2d-e3465acd3c20_1.0.5.0_x86__r60hmjdgart72
InstallLocation : C:\Users\lay\source\repos\App2\App2\bin\x86\Debug\AppX
IsFramework : False
PackageFamilyName : -99a4-4d0d-af2d-e3465acd3c20_r60hmjdgart72
PublisherId : r60hmjdgart72
IsResourcePackage : False
IsBundle : False
IsDevelopmentMode : True
Dependencies : {Microsoft.NET.CoreRuntime..1_1.1.25305.1_x86__8wekyb3d8bbwe, Microsoft.VCLibs.140.00.Debug_14.0.2
.0_x86__8wekyb3d8bbwe}
IsPartiallyStaged : False

那如何指定开发者模式和非开发者模式呢?关键在于Add-AppxPackage的参数使用。比如下面这个方式会安装为非法者模式,Add-AppDevPackage.ps1使用的就是这种方式。

Add-AppxPackage -Path $DeveloperPackagePath.FullName -ForceApplicationShutdown

另一种安装为开发者模式的方式为:

$manifestFile = "$packagePath\AppxManifest.xml"
Add-AppxPackage -Register $manifestFile -ForceApplicationShutdown

而且使用注册的方式,文件夹的结构必须类似:

appx目录结构

那如果别人给了我们一个visual studio 生成的标准的安装包呢,形如:

windows 商店应用程序安装包

我们想把这个包安装在开发者模式下, 应当怎么做呢?

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步:

  1. 在脚本所在的目录下查找appxbundle文件
  2. 解压 appx 文件,将包内容复制到APPData目录下
  3. 调用Add-AppxPackage将app安装包安装在开发者模式下

当然交付给最终用户部署时,我们还得考虑用户是否是以管理员权限运行,用户的机器上有没有有效的微软开发者许可证,如果没有引导它获取一个。整个一个流程自动化下来,也得百来十行code。我分享一个自己针对某特定app安装包写的定制版安装脚本:Install-AppPackage.ps1

PowerShell将Windows store应用程序安装为开发者模式的更多相关文章

  1. Unity3D开发Windows Store应用程序 注意事项

    原地址:http://blog.csdn.net/jbjwpzyl3611421/article/details/12704491 针对最近在移植window store项目中遇到的问题,我整理了官方 ...

  2. Windows Store可以下载安装Windows Terminal (Preview)

    Windows Terminal (Preview)已经可以在Windows Store下载安装. Windows Terminal (Preview)运行要求为: Windows 10 版本 183 ...

  3. 安装、部署... Windows服务 .net程序 安装 命令

    @echo offInstallutil.exe 程序目录 F:\test\TestWindows.exe 服务程序目录@sc start "服务名称"@sc config &qu ...

  4. Windows桌面.exe程序安装、卸载、升级测试用例

    一.安装 1) 系统:XP.win 7.win 8.win 10 2)安全类型软件:360杀毒.360安全卫士.金山毒霸.百度杀毒.腾讯电脑管家等. 3)同类型软件兼容 4)用户名称:中文用户.英文用 ...

  5. Unity干中学——如何实现类似Windows Store 应用程序和Android Toast的通知?

    要实现通知中心功能,首先要创建一个游戏物体,在上面挂载GUITeture和GUIText脚本.注意GUITexture和GUIText脚本的顺序,GUITexture在前,GUIText在后,否则GU ...

  6. Windows下的Hadoop安装(本地模式)

    时隔许久的博客.. 系统为Windows 10,Hadoop版本2.8.3. 虽然之前已经在Linux虚拟机上成功运行了Hadoop,但我还是在Windows上编码更加习惯,所以尝试了在Window上 ...

  7. 适用于Windows桌面应用程序的.NET Core 3

    介绍 9月,微软发布了新版.NET Core,用于构建Windows桌面应用程序,包括WPF和Windows Forms.从那时起开发人员可以将传统的nfx桌面应用程序(和控件库)迁移到.NET Co ...

  8. Windows Store App 应用程序安装目录

    前面介绍了如何对本地应用存储空间中的文件以及文件夹进行操作,在应用中除了可以对本地应用存储空间进行操作之外,还可以对应用程序安装目录进行相关操作.本节将通过一个示例,详细讲解如何对应用程序安装目录中的 ...

  9. Scoop - 在Windows命令行上进行程序安装

    2019-01-28  22:49:21 资料来源自Scoop官方网站以及github上的帮助文档 如果有疑惑或者觉得文章有错误请留言以帮助改正 补充内容(2019-04-09 21:11:36):不 ...

随机推荐

  1. 【t042】炮击坦克

    Time Limit: 1 second Memory Limit: 128 MB [问题描述] 在一个坐标轴上,有M辆坦克,第i辆坦克在时刻0处于pos[i](pos[i]>0),speed[ ...

  2. javascript中隐藏显示的样式表属性

    display属性 隐藏不占据位置 visibility属性 隐藏占据位置 //使用display的样式属性 隐藏 显示 //隐藏后不占据文档流位置 function showAddForm(){ v ...

  3. 将jar安装到本地mvn仓库

    声明:仅限于将maven Repository下载的jar(使用maven打包的jar)安装到本地的maven仓库中,不保证全部成功,最初的时候添加依赖发现下载始终不成功,只能手动下载,但是手动下载完 ...

  4. 颜色转换:#hhhfff->UIColor (MHHexColoring)

    MHHexColoring为开发者快速获取想要的十六进制颜色(Hex Color) 查找16进制色码的网站:http://www.color-hex.com // 版权属于原作者 MHHexColor ...

  5. C++ 类包含关系Demo 笔记

    is-a关系  类包含关系 构造 拷贝构造函数 重载福值运营商 析构函数 动态内存分配和释放 new delete操作 static 数据成员 好友功能 重载输入>>输出<<操 ...

  6. android tips—开机引导启动wifi设置

    在开机引导(Setupwizard,Guide)中都有关于wifi设置项,我得做法例如以下: Intent intent = new Intent(); intent.setClassName(&qu ...

  7. 还是Qt 通过stylesheet或者palette设置背景色的问题

    关于Qt,设置一个widget的背景色后,希望子对象不受影响. 很久以前在QtForum上问过一个问题:http://www.qtforum.org/post/94103/setting-backgr ...

  8. asp.net中C#调用存储过程

    创建存储过程: create procedure houseCount ( ), @house_count int output ) as select @house_count=COUNT(*) f ...

  9. Project Euler:Problem 28 Number spiral diagonals

    Starting with the number 1 and moving to the right in a clockwise direction a 5 by 5 spiral is forme ...

  10. 【转】mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法

    转自:http://www.169it.com/article/5994930453423417575.html 为了测试sql语句的效率,有时候要不用缓存来查询. 使用 SELECT SQL_NO_ ...