我正在开发一个垫脚石版本,我正在重新设计安装程序。我需要使用相同的应用程序 ID,但新旧版本之间的更新不起作用。
有没有办法卸载以前的版本,然后开始全新安装?
我能够使用不同的应用程序 ID 来执行此操作,其中我使用以下方法检测到旧版本 ApplicationRegistry.getApplicationInfoById(APPLICATION_ID) 并检查版本。然后在旧版本安装目录上调用执行以前的卸载程序。
但是当共享应用程序 ID 时,安装程序会认为它处于更新模式。然后,即使我调用 执行以前的卸载程序,也会有以前版本留下的文件,这些文件通常会在更新期间保留,但我想在这种情况下删除它们。
有办法实现这一点吗?我可以完全卸载并告诉安装程序继续进行新安装(理想情况下无需重新启动安装程序,这样用户就不会收到两次管理员访问权限的提示)?
您可以使用“运行可执行文件”操作来执行卸载程序。要提供反馈,您应该调用“设置进度条”操作,并将“更改类型”属性设置为“设置不确定状态”。
之后,为了确保安装程序不再认为它处于升级模式,请添加“运行脚本”操作并调用
File dir = context.getInstallationDirectory();
context.setInstallationDirectory(new File(dir, "dummy"));
context.setInstallationDirectory(dir);
return true;
我已将其添加到我们的问题跟踪器中,它应该是“执行以前的卸载程序”操作的属性。