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

集成与自动升级

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