Windows phone 8.1 Windows Phone 8.1 HTML公司应用程序-Can';t安装公司应用程序

Windows phone 8.1 Windows Phone 8.1 HTML公司应用程序-Can';t安装公司应用程序,windows-phone-8.1,winjs,visual-studio-cordova,appx,win-company-app,Windows Phone 8.1,Winjs,Visual Studio Cordova,Appx,Win Company App,我在尝试将Windows Phone 8.1的任何HTML应用程序部署为公司应用程序时遇到问题。我开发的应用程序使用的是Visual Studio Apache Cordova应用程序项目,但我还测试了手动创建的.appx、空白应用程序(通用Windows 8.1)和空白应用程序(Windows Phone)。。。最后两个似乎实际上是同一个项目类型,通用的一个只是在一个解决方案中,也有一个Windows8.1项目 当我尝试安装它时,我总是会收到下面详述的错误消息(从电子邮件、网络和手机的本地文件

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

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

安装一个C#Windows Phone 8.1 Hub应用程序项目使用相同的工作流可以完美地工作


错误消息 无法安装公司应用程序

此公司应用程序有问题。请与公司的支持人员联系以获取帮助


开发环境
  • Windows 8.1企业版
  • Visual Studio Enterprise 2015跨平台移动开发>HTML/JavaScript(Apache Cordova)更新1
  • 具有针对Windows®Phone Private Enterprise的Symantec代码签名证书的Windows Enterprise Developer帐户
  • 开发者解锁诺基亚Lumia 635或公司MDM注册的诺基亚Lumia 635

工作项目类型
  • 集线器应用程序(Windows Phone)[模板>Visual C#>Windows>Windows 8>Windows Phone]
  • 可能是任何其他C#项目类型(未测试)

错误的项目类型
  • 空白应用程序(Apache Cordova)[模板>其他语言>类型脚本>Apache Cordova应用程序]
  • 空白应用程序(通用Windows 8.1)[模板>其他语言>JavaScript>Windows>Windows 8>通用]
  • 空白应用程序(Windows Phone)[模板>其他语言>JavaScript>Windows>Windows 8>Windows Phone]
  • 使用Microsoft提供的AppxManifest.xml基本模板和MakePri.exe、MakeApp.exe在中手动创建了一个包含单个HTML文件的appx

工作流程
  • 从VisualStudio创建相关的项目类型
  • 更改Phone.appxmanifest文件,使发布者与赛门铁克证书
    主题匹配,并使我们的PhonePublisherID
  • 右键单击项目,“商店>创建应用程序包…”
  • 执行向导,选择Windows应用商店的“否”,以从不捆绑和生成发布版本
  • 使用SignTool.exe或buildmdilapx.ps1使用我们的证书对包进行签名
  • 如果尚未安装AET.aetx文件,请在手机上安装该文件
  • 在手机上安装应用程序(从电子邮件、web或本地文件夹)
  • 错误

    • 答案很简单,如果不是很明显的话

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

      实际上,
      APPX_E_MISSING_REQUIRED_FILE
      一节中的页面中有一条小线索(尽管在部署已签名的公司应用程序时,您实际上没有收到此错误代码,因此在本例中它不是真正的线索)-

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

      确保程序包不缺少以下一个或多个必需文件:

      \AppxManifest.xml

      \AppxBlockMap.xml

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

      它没有说的是(至少对我来说)反过来也是正确的

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

      因此,我创建了一个空白的
      类库(可移植到UniversalWindows8.1)
      project,构建了一个空的
      dll
      ,并将其插入到通过构建Cordova应用程序创建的解决方案的根目录中。我还删除了对WinJS 2.1的依赖关系,因为这可以阻止应用程序作为公司应用程序安装,并且WinJS文件已经在我的项目中(作为公司应用程序安装时,这些依赖项不能推送到设备上,如果它们是从Windows应用商店或Visual Studio部署的,则可以推送到设备上)

      选择“存储>创建应用程序包…”现在会生成一个
      .appx
      文件,其根目录中有一个
      dll
      ,现在当我通过
      buildmdilapx.ps1
      脚本运行它时,会为包创建一个
      \AppxMetadata\codeigrity.cat


      安装此软件包现在可以正常工作并成功安装。

      这是一个很好的信息!感谢您的撰写。我将很快对此进行测试。另一方面,您在公司应用程序中使用Visual Studio 2015和Cordova的体验如何?您会推荐它还是建议其他解决方案?谢谢!@DeanB_Develop Thank.VS 2015 with Cordova对于我这个网络开发背景的人来说非常适合。2015 Cordova集成比2013 CTP版本有了很大的改进。与WinJS 4一起使用它可以提供非常令人信服的应用体验,尽管感觉WinJS确实让一些事情变得比需要的更难。本地应用仍然可以提供更好的整体应用,但作为一种解决问题的方法我很乐意进入Windows Phone 8.1应用程序,这非常好。同意。VS2015比VS2013有了很大的改进。Cordova集成一直很好,尽管我遇到了一些问题,这些问题需要几天才能解决。在使用VS2015和Cordova时,TypeScript是一个巨大的优势。不久前我研究了WinJS,但对整个系统的触摸支持并不满意设备。我会再检查一遍。多混合开发是实现这一目标的途径