Windows Phone 8.1 HTML公司应用程序 - 无法安装公司应用程序

Klo*_*ors 13 winjs appx windows-phone-8.1 visual-studio-cordova win-company-app

我在尝试为Windows Phone 8.1部署任何类型的HTML应用程序作为公司应用程序时遇到问题.我开发的应用程序是使用Visual Studio Apache Cordova Apps项目,但我还测试了手动创建.appx的空白应用程序(通用Windows 8.1)和空白应用程序(Windows Phone)...最后两个似乎有效是同一个项目类型,Universal也只是一个带有Windows 8.1项目的解决方案.

当我尝试安装它时,我总是得到下面详细的错误消息(尝试从电子邮件,网络和手机的本地文件夹中进行各种尝试.

安装C#Windows Phone 8.1 Hub App项目使用相同的工作流程可以完美地运行.


错误信息

无法安装公司应用程序

这个公司应用程序存在问题.联系您公司的支持人员寻求帮助


开发环境

  • Windows 8.1企业版
  • 使用跨平台移动开发的Visual Studio Enterprise 2015> HTML/JavaScript(Apache Cordova)更新1
  • Windows企业开发人员帐户,其中包含适用于Windows®PhonePrivate Enterprise的Symantec代码签名证书
  • 开发者解锁诺基亚Lumia 635或公司MDM注册诺基亚Lumia 635

工作项目类型

  • Hub App(Windows Phone)[模板> Visual C#> Windows> Windows 8> Windows Phone]
  • 可能是任何其他C#项目类型(未经测试)

项目类型出错

  • 空白应用程序(Apache Cordova)[模板>其他语言> TypeScript> Apache Cordova应用程序]
  • 空白应用程序(通用Windows 8.1)[模板>其他语言> JavaScript> Windows> Windows 8>通用]
  • 空白应用程序(Windows Phone)[模板>其他语言> JavaScript> Windows> Windows 8> Windows Phone]
  • 使用Microsoft的MakexManifest.xml基本模板和MakePri.exe,MakeApp.exe手动创建一个包含单个HTML文件的appx

工作流程

  • 从Visual Studio创建相关的项目类型
  • 更改Phone.appxmanifest文件以使发布服务器与Symantec证书匹配Subject并拥有我们的PhonePublisherID
  • 右键单击项目,"存储>创建应用程序包..."
  • 通过向导选择"否"到Windows应用商店,永远不会捆绑和构建发布版本
  • 使用SignTool.exe或BuildMDILAPPX.ps1使用我们的证书对包进行签名
  • 如果尚未安装AET.aetx文件,请将其安装在手机上
  • 在手机上安装应用程序(从电子邮件,Web或本地文件夹)
  • 错误

Klo*_*ors 5

答案来得非常简单,如果不是很明显的话.微软已经说过

在Windows Phone 8.1中,存在一个已知问题,即企业appx软件包需要具有此[CodeIntegrity.cat]文件.

实际上有在页面一个小线索故障排除打包,部署和Windows Store应用程序的查询中的部分APPX_E_MISSING_REQUIRED_FILE(尽管部署签署公司应用程序,所以它不是一个真正的线索时,你实际上并没有得到这个错误代码这个案例).它指出 -

该包无效,因为它缺少清单或块映射,或者存在代码完整性文件但缺少签名文件.

确保包中没有缺少一个或多个这些必需文件:

\ AppxManifest.xml

\ AppxBlockMap.xml

如果程序包包含\ AppxMetadata\CodeIntegrity.cat,则它还必须包含\ AppxSignature.p7x.

它没有说的是(至少对我来说)反过来也是如此.

如果您要签署一个插入AppxSignature.p7x文件的公司应用程序,那么您\AppxMetadata\CodeIntegrity.cat.appx包中也必须有一个文件.只有dll在您的项目中有一个,并且在Windows Phone 8.1上,可以非常轻松地编写混合应用程序而不需要任何dlls.

所以我创建了一个空白Class Library (Portable for Universal Windows 8.1)项目,构建一个空的dll并将其插入到构建Cordova应用程序所创建的解决方案的根目录中.我还删除了对WinJS 2.1的依赖,因为这可以阻止应用程序作为公司应用程序安装,并且WinJS文件已经在我的项目中(当作为公司应用程序安装时,依赖项无法推送到设备,如果它们是从Windows应用商店或Visual Studio部署的.

选择"Store> Create App Packages ..."现在会在根目录中生成一个.appx带有a 的文件,dll现在当我通过BuildMDILAPPX.ps1脚本运行它时\AppxMetadata\CodeIntegrity.cat,会为该包创建一个.

现在可以安装此软件包并成功安装.