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

Posted

技术标签:

【中文标题】Windows Phone 8.1 HTML 公司应用程序 - 无法安装公司应用程序【英文标题】:Windows Phone 8.1 HTML Company Apps - Can't install company app 【发布时间】:2015-10-28 12:04:02 【问题描述】:

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

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

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


错误信息

无法安装公司应用

此公司应用存在问题。请联系贵公司的支持人员寻求帮助


开发环境

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

工作项目类型

Hub 应用程序 (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 的 AppxManifest.xml 基本模板和 MakePri.exe、MakeApp.exe 手动创建了一个包含单个 HTML 文件的 appx

工作流程

从 Visual Studio 创建相关的项目类型 更改 Phone.appxmanifest 文件以使发布者与赛门铁克证书 Subject 匹配并获得我们的 PhonePublisherID 右键单击项目,“Store > Create App Packages...” 通过向导选择“否”到 Windows 应用商店,永远不要捆绑和构建发布版本 使用 SignTool.exe 或 BuildMDILAPPX.ps1 使用我们的证书对包进行签名 如果尚未在手机上安装 AET.aetx 文件 在手机上安装应用程序(从电子邮件、网络或本地文件夹) 错误

【问题讨论】:

【参考方案1】:

答案很简单,即使不是很明显。微软说过

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

实际上在Troubleshooting packaging, deployment, and query of Windows Store apps 的页面中APPX_E_MISSING_REQUIRED_FILE 部分中有一个小线索(尽管在部署已签名的公司应用程序时实际上并没有收到此错误代码,因此在这种情况下它并不是真正的线索)。它指出 -

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

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

\AppxManifest.xml

\AppxBlockMap.xml

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

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

如果您正在签署插入 AppxSignature.p7x 文件的公司应用程序,则您的 .appx 包中还必须有一个 \AppxMetadata\CodeIntegrity.catfile。仅当您的项目中有 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...”现在会在根目录中生成一个带有 dll.appx 文件,现在当我通过 BuildMDILAPPX.ps1 脚本运行它时,会为该软件包创建一个 \AppxMetadata\CodeIntegrity.cat .

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

【讨论】:

这是很棒的信息!感谢您的写作。我很快就会对此进行测试。另一方面,您将 Visual Studio 2015 和 Cordova 用于公司应用程序的体验如何?您会推荐它还是建议其他解决方案?谢谢! @DeanB_Develop 谢谢。带有 Cordova 的 VS 2015 非常适合来自 Web 开发背景的我。与 2013 CTP 版本相比,2015 Cordova 集成有了很大改进。将它与 WinJS 4 一起使用提供了非常令人信服的应用程序体验,尽管它确实感觉 WinJS 使某些事情变得比他们需要的更难。本机应用程序仍会为您提供更好的整体应用程序,但作为一种快速进入 Windows Phone 8.1 应用程序的方式,它非常棒。 同意。 VS2015 比 VS2013 有了很大的改进。 Cordova 集成一直很好,尽管我遇到了一些需要几天时间才能解决的问题。在使用 VS2015 和 Cordova 时,TypeScript 是一个巨大的优势。不久前我研究了 WinJS,但对跨设备的触控支持并不满意。我会再检查一遍。出于多种原因,多混合动力开发是要走的路。 Cordova + VS2015 + TypeScript 是最高效的移动/Web 开发解决方案。添加 AngularJS、Ionic、React 等,我认为这是一种真正适用于所有设备的开发方法。 我将 DLL 文件放在项目的根目录中,并且应用元数据不是使用 \AppxMetadata\CodeIntegrity.cat 文件创建的。你能清楚地说明这个文件需要添加到哪里吗? @user1849060 当您在 Visual Studio 中构建主要的 Cordova 解决方案时,它将在 platforms > windows 文件夹中创建另一个解决方案(这可能是一个隐藏文件夹,我忘记了)。在构建之前,您需要在 Visual Studio 中打开该解决方案并将 DLL 添加到相关项目的根目录中。

以上是关于Windows Phone 8.1 HTML 公司应用程序 - 无法安装公司应用程序的主要内容,如果未能解决你的问题,请参考以下文章

xml 适用于Windows 8.1和Windows Phone 8.1应用程序的扩展器控件演示。

xml 适用于Windows 8.1和Windows Phone 8.1应用程序的扩展器控件的模板。

如何将 Windows 商店中的 Windows Phone 应用程序(8.1 XAML)迁移到 8.1 Silverlight?

csharp 在Windows 8.1和Windows Phone 8.1应用程序中运行的Expander控件的代码隐藏。

使用 Windows RT 的客户端证书(windows 8.1/windows phone 8.1)

Windows Phone 8.0 DLL 是不是与 Windows Phone 8.1 应用程序兼容?