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

Windows Phone 8.1 HTML Company Apps - Can't install company app

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

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

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


错误信息

Can't install company app

There's a problem with this company app. Contact your company's support person for help


开发环境


工作项目类型


错误的项目类型


工作流程

答案即使不是很明显,也很简单。微软表示

In Windows Phone 8.1 there is a known issue that required enterprise appx packages to have this [CodeIntegrity.cat] file.

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

The package isn't valid because it's missing a manifest or block map, or a code integrity file is present but a signature file is missing.

Ensure that the package isn't missing one or more of these required files:

\AppxManifest.xml

\AppxBlockMap.xml

If the package contains \AppxMetadata\CodeIntegrity.cat, it must also contain \AppxSignature.p7x.

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

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

所以我创建了一个空白的 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

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