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
开发环境
- Windows 8.1 企业版
- Visual Studio Enterprise 2015 with Cross Platform Mobile Development > HTML/JavaScript (Apache Cordova) 更新 1
- Windows 具有 Windows® Phone 私有企业
赛门铁克代码签名证书的企业开发人员帐户
- 开发人员解锁诺基亚 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 文件以使发布者与 Symantec 证书匹配
Subject
并使我们的 PhonePublisherID
- 右键单击项目,"Store > Create App Packages..."
- 通过向导选择 "No" 到 Windows 商店,从不捆绑和构建发布版本
- 使用 SignTool.exe 或 BuildMDILAPPX。ps1 使用我们的证书对包进行签名
- 在 phone 上安装 AET.aetx 文件(如果尚未安装)
- 将应用程序安装到 phone(来自电子邮件、Web 或本地文件夹)
- 错误
答案即使不是很明显,也很简单。微软表示
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
。
现在可以安装此软件包并成功安装。
我在尝试将 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
开发环境
- Windows 8.1 企业版
- Visual Studio Enterprise 2015 with Cross Platform Mobile Development > HTML/JavaScript (Apache Cordova) 更新 1
- Windows 具有 Windows® Phone 私有企业 赛门铁克代码签名证书的企业开发人员帐户
- 开发人员解锁诺基亚 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 文件以使发布者与 Symantec 证书匹配
Subject
并使我们的 PhonePublisherID - 右键单击项目,"Store > Create App Packages..."
- 通过向导选择 "No" 到 Windows 商店,从不捆绑和构建发布版本
- 使用 SignTool.exe 或 BuildMDILAPPX。ps1 使用我们的证书对包进行签名
- 在 phone 上安装 AET.aetx 文件(如果尚未安装)
- 将应用程序安装到 phone(来自电子邮件、Web 或本地文件夹)
- 错误
答案即使不是很明显,也很简单。微软表示
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
。
现在可以安装此软件包并成功安装。