【问题标题】:Update appx without uninstall无需卸载即可更新 appx
【发布时间】:2016-02-24 11:43:07
【问题描述】:

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

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

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

有什么方法可以在不卸载之前更新应用,这样我就不会丢失应用数据?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 已经更改了config.xml中的应用版本。我无法更改包名称。如果我这样做,该应用程序将作为不同的应用程序安装,我想做的是用新版本更新现有应用程序,而不会丢失应用程序数据。
    • 改包名会在设备上保留旧版本,新版本无法访问旧版本的任何数据,对吧?
    【解决方案2】:

    首先,你进入了一个痛苦的世界,我很同情你。

    关于你正在尝试做的事情,你必须知道很多事情。

    1. 默认情况下,Cordova 构建 appxbundle,但为了使应用程序可通过 Intune 等 MDM 升级,这必须是 appx 而不是 appxbundle。向 CordovaApp.Phone.jsproj 添加一个 AppxBundle 属性,其值为“Never”。

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

    3. 通过 MDM 部署 appx 要求您在代码库中包含所有依赖项。包括科尔多瓦将使用的 WinJS。下载您的依赖项的代码,放入您的代码并更新您的引用以使用它。
    4. 为了通过 MDM 部署 Appx,您需要将 Dll 放入代码库中,以便签名过程生成代码完整性 cat 文件。为了使应用程序可通过 MDM 升级,您需要每次都更改 DLL(包括代码 - 例如类中的新方法)并增加版本。有一个cordova插件可以添加DLL,但是不支持升级路径,所以最好自己构建一个Portable Class Libray DLL。
    5. 要通过 Airwatch MDM 进行部署,您需要在 AppxManifest 中将 TargetFrameworkMoniker 设置为“WindowsPhoneApp,Version=8.1”,方法是更改​​ CordovaApp.Phone.jsproj 文件,将 TargetFrameworkIdentifier 设置为 WindowsPhoneApp,TargetFrameworkVersion 设置为 8.1 到 PropertyGroup部分。否则它不会将其识别为 Windows Phone 应用。

    这是我几个月前整理的关于在 Windows 设备上部署企业 Cordova 应用程序的演示文稿。这将解决您正在解决、将解决或放弃的许多问题。 http://www.slideshare.net/adambirr/enterprisecorodva

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 1970-01-01
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      相关资源
      最近更新 更多