我们公司最近需要开发一款自动上传的工具,这个工具需要安装在用户电脑上,但是这样不利于维护,于是想到了自动更新这个功能,需要在打开工具时顺带打开自动更新的小工具,这样我们在更新代码后,用户那边就能自动扫描到我们更新的程序,因为不涉及到公司的业务,这个小程序完全可以开放出来,给大家个小福利。
下面介绍一下这个更新小程序的使用方式,下载下来,然后在production.properties中配置上自己的下载地址,如下:
当代码更新完后,将修改的代码文件放在一个文件夹中,info.xml和修改的代码在同一级目录上,如下图所示
以上是新建的文件夹
打开这个文件夹,里边的文件如下图所示:
然后将update打包成update.zip,并上传配置的下载服务器中
将这个更新小程序放在你的工具中,如下图
这样工具就会读取info.xml,来解压下载下来的最新代码并替换掉由info.xml配置的对应路径,如下图:
item是一项要替换的路径
filepath是下载下来的路径
targetpath是被替换的路径
这样就完成了自动更新的目的,当然这个适用于pc桌面小程序的更新,需要在小程序启动时顺带执行我们的自动更新小工具,java代码如下:
private Resource updateRunnerExe;
public void main(String[] args) throws Exception {
String processName;
File exe;
ConfigFacade configFacade = (ConfigFacade)RadiologyContext.get(ContextKey.CONFIG_FACADE);
Integer beRunning = Integer.parseInt(configFacade.getLocaleValue("runner.update.running"));
MainFrame mainFrame = (MainFrame)RadiologyContext.get(ContextKey.MAIN_FRAME);
ServicePanel servicePanel = mainFrame.getServicePanel();
servicePanel.setUpdateSoftCheckBoxStatus(beRunning);
if (ObjectUtils.equals((Object)new Integer(1), (Object)beRunning) && this.updateRunnerExe != null
&& (exe = new File(this.updateRunnerExe.getURL().getPath())).exists() && exe.isFile()
&& !WindowTaskUtil.isRunning(processName = exe.getName())) {
StringBuffer command = new StringBuffer();
command.append("cmd /c start /wait \"\" \"" + exe.getPath() + "\"");
Runtime rn = Runtime.getRuntime();
Process p = rn.exec(command.toString());
logger.info("自动更新已开启");
}
}
<bean id="updateSoftRunner" class="com.freelance.client.radiology.main.runner.impl.UpdateSoftRunner"
parent="abstractRunner">
<property name="updateRunnerExe" value="file:${user.dir}/radiology_upload/update/radiologyUpdate.exe"/>
</bean>
updateRunnerExe是更新小工具的路径。
如果您有什么问题欢迎扫码添加我的公众号留言或添加我的微信即可,我会根据您的问题完善这份文档。领取小工具在我的公众号中回复“自动更新小程序”即可领取,届时也会分享一些日常工作遇到的难题。
公众号:
微信号:11141004