提交 2598a01c authored 作者: wangqiang's avatar wangqiang

集成与自动升级

上级 7d284f39
...@@ -370,6 +370,7 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall ...@@ -370,6 +370,7 @@ public class MqttServiceImpl implements MqttService, MqttHandler, MqttClientCall
if (isTimeSet) { if (isTimeSet) {
SysConfigUtil.saveProperty("control.request", "1"); SysConfigUtil.saveProperty("control.request", "1");
} else { } else {
SysConfigUtil.saveProperty("control.request", "-1");
remoteControlController.startVncServer(0); remoteControlController.startVncServer(0);
} }
return; return;
......
...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil; ...@@ -4,6 +4,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.ConcurrentHashSet; import cn.hutool.core.collection.ConcurrentHashSet;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.io.StreamProgress; import cn.hutool.core.io.StreamProgress;
import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpResponse;
...@@ -275,48 +276,60 @@ public class ProgramController { ...@@ -275,48 +276,60 @@ public class ProgramController {
} }
public static void main(String[] args) { public static void main(String[] args) throws InterruptedException {
/*int exitVal = -1; /*int exitVal = -1;
try { try {
exitVal = Runtime.getRuntime().exec("cmd /c \"D:\\work\\priusis\\priusis-iot\\apq-iot\\apq-client\\tools\\install-package\\dist\\apq-info-install.exe\"").waitFor(); exitVal = Runtime.getRuntime().exec("cmd /c \"D:\\work\\priusis\\priusis-iot\\apq-iot\\apq-client\\tools\\install-package\boot\\dist\\apq-info-install.exe\"").waitFor();
} catch (Exception e) { } catch (Exception e) {
log.error("执行安装文件失败", e); log.error("执行安装文件失败", e);
} }
System.out.println(exitVal); System.out.println(exitVal);
System.out.println("========");*/ System.out.println("========");*/
System.out.println("cmd /c tasklist -fi " + '"' + "imagename ne NT AUTHORITY SYSTEM" + '"' + " -fi " + '"' + "imagename ne NT AUTHORITY SYSTEM" + '"' + " /fo csv"); // System.out.println("cmd /c tasklist -fi " + '"' + "imagename ne NT AUTHORITY SYSTEM" + '"' + " -fi " + '"' + "imagename ne NT AUTHORITY SYSTEM" + '"' + " /fo csv");
/* int exitVal = -1;
try {
exitVal = Runtime.getRuntime().exec("cmd /c \"D:\\work\\priusis\\priusis-iot\\apq-iot\\apq-client\\tools\\install-package\\boot\\dist\\阿普奇检测客户端_x32.exe\" /sp- /silent /norestart /suppressmsgboxes").waitFor();
} catch (Exception e) {
log.error("执行安装文件失败", e);
}
System.out.println(exitVal);*/
} }
@Scheduled(fixedDelay = 60000) @Scheduled(fixedDelay = 60000)
protected void autoUpgradeJob() { protected void autoUpgradeJob() {
try { try {
boolean autoUpgrade = Convert.toBool(SysConfigUtil.getProperty("auto.upgrade"), false); String controlRequestTimeStr = SysConfigUtil.getProperty("control.request.time");
if (!autoUpgrade) return; if (StrUtil.isNotBlank(controlRequestTimeStr) && System.currentTimeMillis() - NumberUtil.toBigDecimal(controlRequestTimeStr).longValue() < 10 * 1000) {
File dir = new File(SysConfigUtil.getProperty("download.path", boolean autoUpgrade = Convert.toBool(SysConfigUtil.getProperty("auto.upgrade"), false);
System.getProperty("user.dir").substring(0, 3) + "apqdownloads")); if (!autoUpgrade) return;
if (!dir.exists()) dir.mkdirs(); File dir = new File(SysConfigUtil.getProperty("download.path",
list("upgrade", 1, 10000).getData().getRecords() System.getProperty("user.dir").substring(0, 3) + "apqdownloads"));
.parallelStream() if (!dir.exists()) dir.mkdirs();
.filter(m -> ObjectUtil.notEqual(m.get("version"), m.get("localVersion"))) list("upgrade", 1, 10000).getData().getRecords()
.forEach(m -> { .parallelStream()
HttpResponse rsp = HttpUtil.createGet(m.get("url")).execute(true); .filter(m -> ObjectUtil.notEqual(m.get("version"), m.get("localVersion")))
File file = rsp.writeBodyForFile(dir, null); .forEach(m -> {
int exitVal = -1; HttpResponse rsp = HttpUtil.createGet(m.get("url")).execute(true);
try { File file = rsp.writeBodyForFile(dir, null);
exitVal = Runtime.getRuntime().exec("cmd /c \"" + file.getPath() + "\"").waitFor(); int exitVal = -1;
} catch (Exception e) { try {
log.error("执行安装文件 {} 失败", file.getPath(), e); exitVal = Runtime.getRuntime().exec("cmd /c \"" + file.getPath() + "\" /sp- /silent /norestart /suppressmsgboxes").waitFor();
} } catch (Exception e) {
if (exitVal == 0) { log.error("执行安装文件 {} 失败", file.getPath(), e);
String reqUrl = gateway + StrUtil.format(upgradeStatusUpIssueUrl, MacAddrUtil.get(), m.get("id")); }
HttpUtil.post(reqUrl, (String) null); if (exitVal == 0) {
} String reqUrl = gateway + StrUtil.format(upgradeStatusUpIssueUrl, MacAddrUtil.get(), m.get("id"));
}); HttpUtil.post(reqUrl, (String) null);
}
});
}
} catch (Exception e) { } catch (Exception e) {
log.error("自动升级任务执行异常", e); log.error("自动升级任务执行异常", e);
} }
} }
} }
...@@ -71,8 +71,17 @@ public class RemoteControlController { ...@@ -71,8 +71,17 @@ public class RemoteControlController {
* 前端定时任务查询远程控制请求,true则表示有请求,展示确认弹窗 * 前端定时任务查询远程控制请求,true则表示有请求,展示确认弹窗
*/ */
@GetMapping(value = "get_control_request") @GetMapping(value = "get_control_request")
public R<Boolean> getControlRequest() throws IOException { public R<String> getControlRequest() throws IOException {
return R.success(Convert.toBool(SysConfigUtil.getProperty("control.request"), false)); String controlRequest = SysConfigUtil.getProperty("control.request");
if (StrUtil.isBlank(controlRequest)) {
controlRequest = "0";
}
if (StrUtil.equals(controlRequest, "-1")) {
SysConfigUtil.saveProperty("control.request", "0");
}
SysConfigUtil.saveProperty("control.request.time", System.currentTimeMillis() + "");
return R.success(controlRequest);
} }
/** /**
......
...@@ -55,6 +55,7 @@ Name: "chinese"; MessagesFile: "compiler:Languages/Chinese.isl" ...@@ -55,6 +55,7 @@ Name: "chinese"; MessagesFile: "compiler:Languages/Chinese.isl"
Source: "../apq-client/*"; Excludes: "bak"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../apq-client/*"; Excludes: "bak"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../java/x32/jre/*"; DestDir: "{app}/jre"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../../java/x32/jre/*"; DestDir: "{app}/jre"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../dact/x32/*"; DestDir: "{app}/service/dact"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../../dact/x32/*"; DestDir: "{app}/service/dact"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../vnc/x32/*"; DestDir: "{app}/vnc"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../client/x32/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../../client/x32/*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
; NOTE: Don't use "Flags: ignoreversion" on any shared system files ; NOTE: Don't use "Flags: ignoreversion" on any shared system files
...@@ -65,6 +66,7 @@ Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\client-soft\apq.exe"; ...@@ -65,6 +66,7 @@ Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\client-soft\apq.exe";
[Run] [Run]
Filename: "{app}\Set_Env.bat"; Flags: runhidden; Filename: "{app}\Set_Env.bat"; Flags: runhidden;
Filename: "{app}\service\启动服务.bat"; Flags: runhidden runascurrentuser waituntilterminated; Filename: "{app}\service\启动服务.bat"; Flags: runhidden runascurrentuser waituntilterminated;
Filename: "{app}\vnc\setup.bat"; Flags: skipifdoesntexist runhidden
;卸载后执行的操作(停止、删除各种服务) ;卸载后执行的操作(停止、删除各种服务)
[UninstallRun] [UninstallRun]
......
...@@ -43,8 +43,8 @@ SolidCompression=yes ...@@ -43,8 +43,8 @@ SolidCompression=yes
PrivilegesRequired=admin PrivilegesRequired=admin
;数字签名 ;数字签名
;SignTool=apqsigntool ;SignTool=apqsigntool
;SignedUninstaller=no ;SignedUninstaller=no
UninstallDisplayIcon={app}/{#MyAppExeName} UninstallDisplayIcon={app}/{#MyAppExeName}
//CreateUninstallRegKey=no //CreateUninstallRegKey=no
...@@ -58,6 +58,7 @@ Name: "chinese"; MessagesFile: "compiler:Languages/Chinese.isl" ...@@ -58,6 +58,7 @@ Name: "chinese"; MessagesFile: "compiler:Languages/Chinese.isl"
Source: "../apq-client/*"; Excludes: "bak"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../apq-client/*"; Excludes: "bak"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../java/x64/jre/*"; DestDir: "{app}/jre"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../../java/x64/jre/*"; DestDir: "{app}/jre"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../dact/x64/*"; DestDir: "{app}/service/dact"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../../dact/x64/*"; DestDir: "{app}/service/dact"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../vnc/x64/*"; DestDir: "{app}/vnc"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../client/x64/*"; Excludes: "apq.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs; Source: "../../client/x64/*"; Excludes: "apq.exe"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs;
Source: "../../client/x64/client-soft/apq.exe"; DestDir: "{app}/client-soft"; Flags: ignoreversion recursesubdirs createallsubdirs signonce; Source: "../../client/x64/client-soft/apq.exe"; DestDir: "{app}/client-soft"; Flags: ignoreversion recursesubdirs createallsubdirs signonce;
;signonce;SignCode: Yes; ;signonce;SignCode: Yes;
...@@ -67,9 +68,13 @@ Source: "../../client/x64/client-soft/apq.exe"; DestDir: "{app}/client-soft"; Fl ...@@ -67,9 +68,13 @@ Source: "../../client/x64/client-soft/apq.exe"; DestDir: "{app}/client-soft"; Fl
Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}" Name: "{group}\{cm:UninstallProgram,{#MyAppName}}"; Filename: "{uninstallexe}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\client-soft\apq.exe"; Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\client-soft\apq.exe";
[Run] [Run]
Filename: "{app}\Set_Env.bat"; Flags: runhidden; Filename: "{app}\Set_Env.bat"; Flags: runhidden;
Filename: "{app}\service\启动服务.bat"; Flags: runhidden runascurrentuser waituntilterminated; Filename: "{app}\service\启动服务.bat"; Flags: runhidden runascurrentuser waituntilterminated;
Filename: "{app}\vnc\setup.bat"; Flags: skipifdoesntexist runhidden
;Filename: "{app}\vnc\UltraVNC_1_2_40_X64_Setup.exe"; Flags: skipifdoesntexist runhidden
;Filename:"{cmd}";Parameters:"/c REG ADD ""HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"" /v ""{app}\example.exe"" -t REG_SZ /d RUNASADMIN /f "; StatusMsg: "注册管理员权限...";
;Filename:"{cmd}";Parameters:"/c ""{app}\vnc\UltraVNC_1_2_40_X64_Setup.exe"" /loadinf=""{app}\vnc\vnc.ini"" /silent"; Flags: skipifdoesntexist runhidden;
;卸载后执行的操作(停止、删除各种服务) ;卸载后执行的操作(停止、删除各种服务)
[UninstallRun] [UninstallRun]
...@@ -83,6 +88,7 @@ Type: dirifempty; Name: "{app}" ...@@ -83,6 +88,7 @@ Type: dirifempty; Name: "{app}"
;操作注册表 ;操作注册表
[Registry] [Registry]
Root: HKLM; Subkey: "Software\{#MyAppEnName}"; Flags: uninsdeletekey; Root: HKLM; Subkey: "Software\{#MyAppEnName}"; Flags: uninsdeletekey;
;Root: HKCU; Subkey: "SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers"; ValueType:string;ValueName:"{app}/vnc/UltraVNC_1_2_40_X64_Setup.exe";ValueData:"RUNASADMIN"
[Code] [Code]
function CheckProcessRunning( aProcName, function CheckProcessRunning( aProcName,
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论