无需卸载即可更新appx

时间:2016-02-24 11:43:07

标签: cordova windows-phone-8 windows-phone-8.1 windows-phone visual-studio-cordova

我正在开发一个用cordova包装的HTML应用程序,通过mdm部署到企业Windows Phone 8.1设备,我在更新应用程序时遇到问题而不删除以前的版本。

每次我使用cordova工具重新生成VS解决方案时,当我尝试将应用程序从VS2013运行到我的设备时,我收到一条消息,说应用程序已经存在,它将被删除然后再次安装。

当我创建appx并尝试使用' Windows Phone应用程序部署8.1'安装它时,如果该应用程序尚未安装在设备中,它可以正常工作,但如果之前已安装,则部署失败,没有错误细节。

有没有办法更新应用程序而不事先卸载它,所以我不会丢失应用程序数据?

2 个答案:

答案 0 :(得分:0)

config.xml文件更改应用版本或更改包名称,然后重试

答案 1 :(得分:0)

首先,你进入了痛苦的世界,你得到我的同情。

关于你想要做什么,你必须知道很多事情。

  1. Cordova默认构建appxbundles,但为了通过像Intune这样的MDM使应用程序可升级,这必须是appx而不是appxbundle。将AppxBundle属性添加到CordovaApp.Phone.jsproj,其值为“Never”。

  2. AppxManifest中的PhoneIdentity PhoneProductID和PhonePublisherId对于您安装的应用程序和要升级的应用程序必须相同。默认情况下,每次都会由cordova随机生成PhoneProductID(我使用之前的构建挂钩每次更改它 - 因为我们使用命令行驱动器cordova)。

  3. 通过MDM获取appx要求您在代码库中包含所有依赖项。包括cordova将使用的WinJS。下载依赖项的代码,放入代码并更新引用以使用它。
  4. 为了让Appx通过MDM进行部署,您需要将Dll放入代码库,以便签名过程将生成代码完整性cat文件。为了使应用程序可以通过MDM升级,您需要每次都更改DLL(代码 - 例如,类中的新方法)并增加版本。有一个用于添加DLL的cordova插件,但它不支持升级路径,因此您最好自己构建一个Portable Class Libray DLL。
  5. 要通过Airwatch MDM进行部署,您需要通过将设置为WindowsPhoneApp的TargetFrameworkIdentifier和设置为8.1的TargetFrameworkVersion添加到PropertyGroup,将TargetFrameworkMoniker设置为AppxManife中的“WindowsPhoneApp,Version = 8.1”,方法是更改​​CordovaApp.Phone.jsproj文件部分。否则它将无法将其识别为Windows Phone应用程序。
  6. 以下是我几个月前将有关将企业cordova应用程序部署到Windows设备上的演示文稿。这将解决您正在解决,将要解决或放弃的许多问题。 http://www.slideshare.net/adambirr/enterprisecorodva