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

时间:2015-08-05 15:47:39

标签: windows-phone-8.1 winjs visual-studio-cordova appx 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 Enterprise
  • 采用跨平台移动开发的Visual Studio Enterprise 2015> HTML / JavaScript(Apache Cordova)Update 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文件
  • 在手机上安装应用程序(从电子邮件,网络或本地文件夹)
  • 错误

1 个答案:

答案 0 :(得分:5)

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

  

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

APPX_E_MISSING_REQUIRED_FILE部分的Troubleshooting packaging, deployment, and query of Windows Store apps页面上有一条小线索(虽然在部署已签名的公司应用程序时实际上并没有获得此错误代码,因此它实际上不是在这种情况下的线索)。它声明 -

  

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

     

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

     

\ AppxManifest.xml

     

\ AppxBlockMap.xml

     

如果软件包包含\ AppxMetadata \ CodeIntegrity.cat,它还必须包含\ AppxSignature.p7x。

它没有说的是(至少对我而言) 反之亦然

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

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

选择“存储>创建应用包...”现在会在根目录中生成.appx文件,其中dll,现在当我通过BuildMDILAPPX.ps1脚本运行时{a} {为包创建了{1}}。

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