我在尝试将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项目使用相同的工作流程完美运行。
无法安装公司应用
这个公司应用程序存在问题。联系您公司的支持人员寻求帮助
Subject
匹配并拥有我们的PhonePublisherID 答案 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}}。
现在可以安装此软件包并成功安装。