[ref]同步711

This commit is contained in:
shi_jq 2025-03-13 11:50:23 +08:00
parent 7a756a047d
commit cf0d107434
16 changed files with 1254 additions and 114 deletions

View File

@ -203,6 +203,7 @@ bool FilesyncApiImpl::recvSvrMsg(iot_net::CMbMessage &msg)
if (!dataMsg.ParseFromArray(msg.getDataPtr(), if (!dataMsg.ParseFromArray(msg.getDataPtr(),
(int)msg.getDataSize())) (int)msg.getDataSize()))
{ {
BOOST_ASSERT(false);
return false; return false;
} }
return handleFileNodeRespMsg(dataMsg); return handleFileNodeRespMsg(dataMsg);
@ -213,7 +214,7 @@ bool FilesyncApiImpl::recvSvrMsg(iot_net::CMbMessage &msg)
if (!resultMsg.ParseFromArray(msg.getDataPtr(), if (!resultMsg.ParseFromArray(msg.getDataPtr(),
(int)msg.getDataSize())) (int)msg.getDataSize()))
{ {
// BOOST_ASSERT(false); BOOST_ASSERT(false);
return false; return false;
} }
return handleBroadcastResultMsg(resultMsg); return handleBroadcastResultMsg(resultMsg);

View File

@ -56,7 +56,7 @@ public:
* @brief initialize * @brief initialize
* @param domainId * @param domainId
* @param appId * @param appId
* @return iotSuccess- kbdFaild- * @return iotSuccess- iotFailed-
*/ */
int initialize(int domainId,int appId); int initialize(int domainId,int appId);

View File

@ -1,6 +1,11 @@
#include "DogCheck.h" #include "DogCheck.h"
#include "ui_DogCheck.h" #include "ui_DogCheck.h"
#include "sys_dog_auth_api/DogAuthInterface.h" #include "sys_dog_auth_api/DogAuthInterface.h"
#include <QDesktopServices>
#include <QStandardPaths>
#include <QFile>
#include <QFileDialog>
#include <QMessageBox>
using namespace iot_sys; using namespace iot_sys;
DogCheck::DogCheck(QWidget *parent) : DogCheck::DogCheck(QWidget *parent) :
@ -13,6 +18,9 @@ DogCheck::DogCheck(QWidget *parent) :
slot_recheckBtn(); slot_recheckBtn();
ui->recheckBtn->setText(tr("重新检测")); ui->recheckBtn->setText(tr("重新检测"));
connect(ui->recheckBtn, &QPushButton::clicked, this, &DogCheck::slot_recheckBtn); connect(ui->recheckBtn, &QPushButton::clicked, this, &DogCheck::slot_recheckBtn);
connect(ui->pushButton_2,&QPushButton::clicked,this,&DogCheck::slot_openLicenseDir);
connect(ui->pushButton,&QPushButton::clicked,this,&DogCheck::slot_selectLicense);
} }
DogCheck::~DogCheck() DogCheck::~DogCheck()
@ -23,18 +31,65 @@ DogCheck::~DogCheck()
void DogCheck::slot_recheckBtn() void DogCheck::slot_recheckBtn()
{ {
CDogAuthInterfacePtr ptrDogAuth = getDogAuthInstance(); CDogAuthInterfacePtr ptrDogAuth = getDogAuthInstance();
int nRet = ptrDogAuth->checkAuthStatus(); int nRet = ptrDogAuth->checkAuthStatus();
if (nRet == AUTH_STATUS_OK) if (nRet > 0)
{ {
ui->statusLab->setText(tr("正常"));
} ui->statusLab->setText(tr("异常,错误码[%1]").arg(nRet));
else if(nRet == AUTH_STATUS_EXPIRED)
{
ui->statusLab->setText(tr("授权过期,错误码[%1]").arg(nRet));
} }
else else
{ {
ui->statusLab->setText(tr("异常,错误码[%1]").arg(nRet)); ui->statusLab->setText(tr("正常"));
} }
} }
void DogCheck::slot_openLicenseDir()
{
QString strDir = QCoreApplication::applicationDirPath();
QString licenseDir = QString("%1/../common/license/").arg(strDir);
if(!QFileInfo::exists(licenseDir))
{
}
QDesktopServices::openUrl(QUrl::fromLocalFile(licenseDir));
}
void DogCheck::slot_selectLicense()
{
QString strBinDir = QCoreApplication::applicationDirPath();
QString licenseFile = QString("%1/../common/license/license.txt").arg(strBinDir);
QFile destFile(licenseFile);
if(destFile.exists())
{
if(!destFile.remove())
{
QMessageBox::warning(this, tr("提示"), QString("删除原文件失败"));
return ;
}
}
QFileDialog fileDialog;
QString strDir = fileDialog.getOpenFileName(this, tr("选择授权文件"),"license.txt",tr("txt (*.txt)"));
if (strDir.isEmpty())
{
return ;
}
QFile sourceFile(strDir);
if (!sourceFile.exists()) {
QMessageBox::warning(this, tr("提示"), QString("文件不存在"));
return ;
}
bool ret = sourceFile.copy(licenseFile);
if(!ret)
{
QMessageBox::warning(this, tr("提示"), QString("导入失败![%1]").arg(sourceFile.errorString()));
return;
}
QMessageBox::warning(this, tr("提示"), QString("导入成功!"));
}

View File

@ -16,6 +16,8 @@ public:
~DogCheck(); ~DogCheck();
private slots: private slots:
void slot_recheckBtn(); void slot_recheckBtn();
void slot_openLicenseDir();
void slot_selectLicense();
private: private:
Ui::DogCheck *ui; Ui::DogCheck *ui;
}; };

View File

@ -2,26 +2,6 @@
<ui version="4.0"> <ui version="4.0">
<class>DogCheck</class> <class>DogCheck</class>
<widget class="QDialog" name="DogCheck"> <widget class="QDialog" name="DogCheck">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>234</width>
<height>166</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>234</width>
<height>166</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>234</width>
<height>166</height>
</size>
</property>
<property name="windowTitle"> <property name="windowTitle">
<string>Dialog</string> <string>Dialog</string>
</property> </property>
@ -31,6 +11,19 @@
</property> </property>
<layout class="QGridLayout" name="gridLayout"> <layout class="QGridLayout" name="gridLayout">
<item row="0" column="0"> <item row="0" column="0">
<spacer name="verticalSpacer_4">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>27</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="0" colspan="2">
<widget class="QFrame" name="frame"> <widget class="QFrame" name="frame">
<property name="frameShape"> <property name="frameShape">
<enum>QFrame::StyledPanel</enum> <enum>QFrame::StyledPanel</enum>
@ -38,43 +31,79 @@
<property name="frameShadow"> <property name="frameShadow">
<enum>QFrame::Raised</enum> <enum>QFrame::Raised</enum>
</property> </property>
<widget class="QLabel" name="statusLab"> <layout class="QGridLayout" name="gridLayout_2">
<property name="geometry"> <item row="0" column="0">
<rect> <layout class="QHBoxLayout" name="horizontalLayout">
<x>10</x> <item>
<y>40</y> <widget class="QLabel" name="label">
<width>191</width> <property name="text">
<height>20</height> <string>加密狗状态:</string>
</rect> </property>
</property> </widget>
<property name="text"> </item>
<string/> <item>
</property> <widget class="QLabel" name="statusLab">
<property name="alignment"> <property name="text">
<set>Qt::AlignCenter</set> <string>正常</string>
</property> </property>
</widget> </widget>
<widget class="QPushButton" name="recheckBtn"> </item>
<property name="geometry"> <item>
<rect> <widget class="QPushButton" name="recheckBtn">
<x>67</x> <property name="text">
<y>90</y> <string>重新检测</string>
<width>75</width> </property>
<height>23</height> </widget>
</rect> </item>
</property> </layout>
<property name="sizePolicy"> </item>
<sizepolicy hsizetype="Fixed" vsizetype="Fixed"> <item row="1" column="0">
<horstretch>0</horstretch> <widget class="QLabel" name="label_2">
<verstretch>0</verstretch> <property name="text">
</sizepolicy> <string>1、请将操作系统信息re_code.txt发给系统提供商获取授权文件</string>
</property> </property>
<property name="text"> <property name="wordWrap">
<string/> <bool>true</bool>
</property> </property>
</widget> </widget>
</item>
<item row="2" column="0">
<widget class="QPushButton" name="pushButton_2">
<property name="text">
<string>拷贝操作系统信息</string>
</property>
</widget>
</item>
<item row="3" column="0">
<widget class="QLabel" name="label_3">
<property name="text">
<string>2、获取授权文件后进行系统激活</string>
</property>
</widget>
</item>
<item row="4" column="0">
<widget class="QPushButton" name="pushButton">
<property name="text">
<string>导入授权文件</string>
</property>
</widget>
</item>
</layout>
</widget> </widget>
</item> </item>
<item row="2" column="1">
<spacer name="verticalSpacer_3">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>28</height>
</size>
</property>
</spacer>
</item>
</layout> </layout>
</widget> </widget>
<resources> <resources>

View File

@ -1077,6 +1077,10 @@ void MainWindow::tabWidget_currentIdxChanged(int /*index*/)
void MainWindow::closeEvent(QCloseEvent *event) void MainWindow::closeEvent(QCloseEvent *event)
{ {
#ifdef KBD_ARM
QApplication::exit(0);
#endif
event->ignore(); event->ignore();
this->hide(); this->hide();
LOGINFO("点击应用关闭按钮,停止工作!"); LOGINFO("点击应用关闭按钮,停止工作!");
@ -1199,7 +1203,7 @@ void MainWindow::checkDog()
m_pStatusMng->dogUncheck(); m_pStatusMng->dogUncheck();
return ; return ;
} }
if(AUTH_STATUS_FAILD == m_ptrDogAuthApi->checkAuthStatus()) //加密狗失败退出含过期超过3个月 if(iotSuccess != m_ptrDogAuthApi->checkAuthStatus())
{ {
m_pStatusMng->dogIsNotHave(); m_pStatusMng->dogIsNotHave();
if(m_bLastDogStatus == true) if(m_bLastDogStatus == true)
@ -1233,6 +1237,7 @@ void MainWindow::verifyIp()
void MainWindow::updateVerifyIp(int verifyValue) void MainWindow::updateVerifyIp(int verifyValue)
{ {
return;//暂时不写sys_ctrl文件一直写这个文件会存在问题 在linux系统下突然断电会经常导致此文件损坏
QString path = iot_public::CFileUtil::getPathOfCfgFile("sys_ctrl.xml",CN_DIR_PLATFORM).c_str(); QString path = iot_public::CFileUtil::getPathOfCfgFile("sys_ctrl.xml",CN_DIR_PLATFORM).c_str();
QFile file(path); QFile file(path);
if(!file.open(QFile::ReadOnly)) if(!file.open(QFile::ReadOnly))

View File

@ -52,5 +52,5 @@ bool unsetSysStartupAutoStartByVbs(QString &strErr);
//-------------------------------------- //--------------------------------------
} //< iot_sys } //< namespace iot_sys

View File

@ -13,21 +13,15 @@
#include <QtCore> #include <QtCore>
#include "pub_utility_api/FileUtil.h" #include "pub_utility_api/FileUtil.h"
#include "SetupFunc.h" #include "SetupFunc.h"
#include "setup/CommonDef.h"
namespace iot_sys namespace iot_sys
{ {
static const char *pszSystemdCfgFile = "/tmp/iscs6000_launcher.service";
//< 前面需加上用户HOME目录路径
static const char *pszXdgCfgDir = "/.config/autostart/";
static const char *pszXdgCfgFile = "iscs6000_hmi_explorer.desktop";
//< 注册系统服务,并设置自启动 //< 注册系统服务,并设置自启动
bool regSysService(QString &strErr) bool regSysService(QString &strErr)
{ {
//< 判断服务是否已注册,普通用户权限可执行 //< 判断服务是否已注册,普通用户权限可执行
if (0 == QProcess::execute("systemctl is-enabled iscs6000_launcher.service")) if (0 == QProcess::execute(QString("systemctl is-enabled %1.service").arg(g_pszLauncherServiceName) ))
{ {
strErr = QObject::tr("已设置服务自启动,若需重新设置,请先取消!"); strErr = QObject::tr("已设置服务自启动,若需重新设置,请先取消!");
return false; return false;
@ -58,14 +52,14 @@ bool regSysService(QString &strErr)
//< 生成或修改systemd服务配置文件 //< 生成或修改systemd服务配置文件
{ {
QSettings objIniSetting(pszSystemdCfgFile, QSettings::IniFormat); QSettings objIniSetting(g_pszLauncherServiceTempFile, QSettings::IniFormat);
objIniSetting.setIniCodec( QTextCodec::codecForLocale() ); objIniSetting.setIniCodec( QTextCodec::codecForLocale() );
qDebug() << objIniSetting.iniCodec()->name(); qDebug() << objIniSetting.iniCodec()->name();
if (!objIniSetting.isWritable()) if (!objIniSetting.isWritable())
{ {
strErr = QObject::tr("服务配置文件不可写,请确认是否具有权限!") strErr = QObject::tr("服务配置文件不可写,请确认是否具有权限!")
+ "\n" + pszSystemdCfgFile; + "\n" + g_pszLauncherServiceTempFile;
return false; return false;
} }
@ -74,7 +68,7 @@ bool regSysService(QString &strErr)
objIniSetting.clear(); objIniSetting.clear();
objIniSetting.beginGroup("Unit"); objIniSetting.beginGroup("Unit");
objIniSetting.setValue("Description", "iscs6000_launcher"); objIniSetting.setValue("Description", g_pszLauncherServiceName);
objIniSetting.setValue("After", "network.target"); objIniSetting.setValue("After", "network.target");
objIniSetting.endGroup(); objIniSetting.endGroup();
@ -99,13 +93,14 @@ bool regSysService(QString &strErr)
if (QSettings::NoError != objIniSetting.status()) if (QSettings::NoError != objIniSetting.status())
{ {
strErr = QObject::tr("写入服务配置文件失败!") strErr = QObject::tr("写入服务配置文件失败!")
+ "\n" + pszSystemdCfgFile; + "\n" + g_pszLauncherServiceTempFile;
return false; return false;
} }
} }
//< 设置服务开机自启动 //< 设置服务开机自启动
if (0 != system("pkexec bash -c 'cp -f /tmp/iscs6000_launcher.service /usr/lib/systemd/system/ && systemctl daemon-reload && systemctl enable iscs6000_launcher'")) QString strRegSvrShell = QString("pkexec bash -c 'cp -f %1 %2 && systemctl daemon-reload && systemctl enable %3'").arg(g_pszLauncherServiceTempFile).arg(g_pszLauncherServiceFile).arg(g_pszLauncherServiceName);
if (0 != system(strRegSvrShell.toStdString().c_str()))
{ {
strErr = QObject::tr("设置服务开机自启动失败!"); strErr = QObject::tr("设置服务开机自启动失败!");
return false; return false;
@ -116,7 +111,8 @@ bool regSysService(QString &strErr)
//< 注销系统服务 //< 注销系统服务
bool unregSysService(QString &strErr) bool unregSysService(QString &strErr)
{ {
if (0 != system("pkexec bash -c 'systemctl enable iscs6000_launcher && systemctl disable iscs6000_launcher'")) QString strUnRegSvrShell = QString("pkexec bash -c 'systemctl enable %1 && systemctl disable %1'").arg(g_pszLauncherServiceName);
if (0 != system(strUnRegSvrShell.toStdString().c_str()))
{ {
strErr = QObject::tr("取消服务开机自启动失败!"); strErr = QObject::tr("取消服务开机自启动失败!");
return false; return false;
@ -129,7 +125,7 @@ bool unregSysService(QString &strErr)
bool isSysService(QString &strErr) bool isSysService(QString &strErr)
{ {
//< 判断服务是否已注册,普通用户权限可执行 //< 判断服务是否已注册,普通用户权限可执行
if (0 == QProcess::execute("systemctl is-enabled iscs6000_launcher.service")) if (0 == QProcess::execute(QString("systemctl is-enabled %1.service").arg(g_pszLauncherServiceName) ))
{ {
strErr = QObject::tr("已设置服务自启动,若需重新设置,请先取消!"); strErr = QObject::tr("已设置服务自启动,若需重新设置,请先取消!");
return true; return true;
@ -145,9 +141,9 @@ bool setHmiAutoStart(QString &strErr)
{ {
const QString strCfgFileDir = const QString strCfgFileDir =
QStandardPaths::writableLocation(QStandardPaths::HomeLocation) QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
+ pszXdgCfgDir; + g_pszXdgAutoStartCfgDir;
const QString strCfgFileFullPath = strCfgFileDir + pszXdgCfgFile; const QString strCfgFileFullPath = strCfgFileDir + g_pszHMIXdgDesktopCfgFile;
if (QFile::exists(strCfgFileFullPath)) if (QFile::exists(strCfgFileFullPath))
{ {
@ -207,7 +203,7 @@ bool setHmiAutoStart(QString &strErr)
{ {
QTextStream objStreamOut(&objFile); QTextStream objStreamOut(&objFile);
objStreamOut << "[Desktop Entry]" << endl; objStreamOut << "[Desktop Entry]" << endl;
objStreamOut << "Name=iscs6000_hmi_explorer" << endl; objStreamOut << "Name=" << g_pszHMIXdgDesktopName << endl;
objStreamOut << "Exec=" << strExec << endl; objStreamOut << "Exec=" << strExec << endl;
objStreamOut << "Type=Application" << endl; objStreamOut << "Type=Application" << endl;
objStreamOut << "X-GNOME-AutoRestart=false" << endl; objStreamOut << "X-GNOME-AutoRestart=false" << endl;
@ -224,7 +220,7 @@ bool unsetHmiAutoStart(QString &strErr)
{ {
const QString strCfgFileFullPath = const QString strCfgFileFullPath =
QStandardPaths::writableLocation(QStandardPaths::HomeLocation) QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
+ pszXdgCfgDir + pszXdgCfgFile; + g_pszXdgAutoStartCfgDir + g_pszHMIXdgDesktopCfgFile;
if (QFile::exists(strCfgFileFullPath)) if (QFile::exists(strCfgFileFullPath))
{ {
@ -249,9 +245,9 @@ bool isHmiAutoStart(QString &strErr)
{ {
const QString strCfgFileDir = const QString strCfgFileDir =
QStandardPaths::writableLocation(QStandardPaths::HomeLocation) QStandardPaths::writableLocation(QStandardPaths::HomeLocation)
+ pszXdgCfgDir; + g_pszXdgAutoStartCfgDir;
const QString strCfgFileFullPath = strCfgFileDir + pszXdgCfgFile; const QString strCfgFileFullPath = strCfgFileDir + g_pszHMIXdgDesktopCfgFile;
if (QFile::exists(strCfgFileFullPath)) if (QFile::exists(strCfgFileFullPath))
{ {
@ -282,6 +278,6 @@ bool removeShortcut(QString &strErr)
} }
} //< iot_sys } //< namespace iot_sys
#endif //< #ifdef OS_LINUX #endif //< #ifdef OS_LINUX

View File

@ -21,14 +21,11 @@
#include <QtCore> #include <QtCore>
#include "pub_utility_api/FileUtil.h" #include "pub_utility_api/FileUtil.h"
#include "SetupFunc.h" #include "SetupFunc.h"
#include "setup/CommonDef.h"
namespace iot_sys namespace iot_sys
{ {
static const TCHAR *pszServiceName = _T("iscs6000_launcher");
static const char *pszAutoRunRegPath = "HKEY_CURRENT_USER\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run";
//< 注册系统服务,并设置自启动 //< 注册系统服务,并设置自启动
bool regSysService(QString &strErr) bool regSysService(QString &strErr)
{ {
@ -52,7 +49,7 @@ bool regSysService(QString &strErr)
else else
{ {
//< 判断服务是否已存在 //< 判断服务是否已存在
SC_HANDLE hService = ::OpenService(hSCM, pszServiceName, SERVICE_QUERY_CONFIG); SC_HANDLE hService = ::OpenService(hSCM, g_pTCharLauncherServiceName, SERVICE_QUERY_CONFIG);
if (NULL == hService) if (NULL == hService)
{ {
//< 创建服务 //< 创建服务
@ -67,7 +64,7 @@ bool regSysService(QString &strErr)
// 20200601 已修改为注册系统服务并验证成功 // 20200601 已修改为注册系统服务并验证成功
hService = ::CreateService( hService = ::CreateService(
hSCM, pszServiceName, pszServiceName, hSCM, g_pTCharLauncherServiceName, g_pTCharLauncherServiceName,
SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS, SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
SERVICE_AUTO_START, SERVICE_ERROR_NORMAL, SERVICE_AUTO_START, SERVICE_ERROR_NORMAL,
strExec.toStdWString().c_str(), NULL, NULL, NULL, NULL, NULL); strExec.toStdWString().c_str(), NULL, NULL, NULL, NULL, NULL);
@ -79,7 +76,7 @@ bool regSysService(QString &strErr)
else else
{ {
SERVICE_DESCRIPTION stSrvDesc; SERVICE_DESCRIPTION stSrvDesc;
TCHAR szDesc[] = _T("宏茂技术监控系统加载服务"); TCHAR szDesc[] = _T("监控系统加载服务");
stSrvDesc.lpDescription = szDesc; stSrvDesc.lpDescription = szDesc;
if (::ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, &stSrvDesc)) if (::ChangeServiceConfig2(hService, SERVICE_CONFIG_DESCRIPTION, &stSrvDesc))
{ {
@ -114,8 +111,8 @@ bool unregSysService(QString &strErr)
} }
else else
{ {
SC_HANDLE hService = ::OpenService(hSCM, pszServiceName, SERVICE_QUERY_STATUS | SERVICE_STOP | DELETE); SC_HANDLE hService = ::OpenService(hSCM, g_pTCharLauncherServiceName, SERVICE_QUERY_STATUS | SERVICE_STOP | DELETE);
//SC_HANDLE hService = ::OpenService(hSCM, _T("iscs6000_launcher_17b5ab7"), SERVICE_QUERY_STATUS | SERVICE_STOP | DELETE); //SC_HANDLE hService = ::OpenService(hSCM, _T("xxxx_launcher_17b5ab7"), SERVICE_QUERY_STATUS | SERVICE_STOP | DELETE);
if (NULL == hService) if (NULL == hService)
{ {
@ -130,9 +127,9 @@ bool unregSysService(QString &strErr)
{ {
//< todo 当使用SERVICE_USER_XXX_PROCESS类型的服务注册时停止服务存在困难 //< todo 当使用SERVICE_USER_XXX_PROCESS类型的服务注册时停止服务存在困难
//< 此情况下服务的真实名称是注册名加上用户会话的ID而ID是变化的且微软没有开发获取的方法 //< 此情况下服务的真实名称是注册名加上用户会话的ID而ID是变化的且微软没有开发获取的方法
//< 比如真实的服务名是“iscs6000_launcher_17b5ab7”且正在运行如果查询“iscs6000_launcher”的状态是停止的 //< 比如真实的服务名是“xxxx_launcher_17b5ab7”且正在运行如果查询“xxxx_launcher”的状态是停止的
//< 也无法通过停止“iscs6000_launcher”服务来停止“iscs6000_launcher_17b5ab7” //< 也无法通过停止“xxxx_launcher”服务来停止“xxxx_launcher_17b5ab7”
//< 删除“iscs6000_launcher”服务后“iscs6000_launcher_17b5ab7”还可见必须注销重新登录才会消失 //< 删除“xxxx_launcher”服务后“xxxx_launcher_17b5ab7”还可见必须注销重新登录才会消失
if(SERVICE_STOPPED != objStatus.dwCurrentState if(SERVICE_STOPPED != objStatus.dwCurrentState
&& TRUE == ControlService(hService, SERVICE_CONTROL_STOP, &objStatus)) && TRUE == ControlService(hService, SERVICE_CONTROL_STOP, &objStatus))
@ -198,7 +195,7 @@ bool isSysService(QString &strErr)
else else
{ {
//< 判断服务是否已存在 //< 判断服务是否已存在
SC_HANDLE hService = ::OpenService(hSCM, pszServiceName, SERVICE_QUERY_CONFIG); SC_HANDLE hService = ::OpenService(hSCM, g_pTCharLauncherServiceName, SERVICE_QUERY_CONFIG);
if (NULL != hService) if (NULL != hService)
{ {
strErr = QObject::tr("已设置服务自启动,若需重新设置,请先取消!"); strErr = QObject::tr("已设置服务自启动,若需重新设置,请先取消!");
@ -216,7 +213,7 @@ bool isSysService(QString &strErr)
bool isSysStartupVbsExist() bool isSysStartupVbsExist()
{ {
QFile vbsFile( QDir::toNativeSeparators(QString("C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp") + "\\sys_startup.vbs" ) ); QFile vbsFile( QDir::toNativeSeparators(QString(g_pszAutoStartSysStartupPath)) );
return vbsFile.exists(); return vbsFile.exists();
} }
@ -230,7 +227,7 @@ bool setSysStartupAutoStartByVbs(QString &strErr,QString path)
vbsTxt += QString("WshShell.Run \"") + "\"\"" + QDir::toNativeSeparators(path + "\\sys_startup.exe\"\" -hide") + "\"\n"; vbsTxt += QString("WshShell.Run \"") + "\"\"" + QDir::toNativeSeparators(path + "\\sys_startup.exe\"\" -hide") + "\"\n";
vbsTxt += "Set WshShell = Nothing"; vbsTxt += "Set WshShell = Nothing";
QFile vbsFile( QString() + QDir::toNativeSeparators(QString("C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp") + "\\sys_startup.vbs" ) ); QFile vbsFile( QDir::toNativeSeparators(QString(g_pszAutoStartSysStartupPath)) );
if(!vbsFile.open(QFile::WriteOnly | QFile::Truncate)) if(!vbsFile.open(QFile::WriteOnly | QFile::Truncate))
{ {
strErr = QObject::tr("启动文件无法写入"); strErr = QObject::tr("启动文件无法写入");
@ -252,7 +249,7 @@ bool setSysStartupAutoStartByVbs(QString &strErr,QString path)
bool unsetSysStartupAutoStartByVbs(QString &strErr) bool unsetSysStartupAutoStartByVbs(QString &strErr)
{ {
Q_UNUSED(strErr) Q_UNUSED(strErr)
QFile file("C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\StartUp\\sys_startup.vbs"); QFile file(g_pszAutoStartSysStartupPath);
if(!file.exists()) if(!file.exists())
return true; return true;
if(file.remove()) if(file.remove())
@ -268,7 +265,7 @@ bool unsetSysStartupAutoStartByVbs(QString &strErr)
} //< iot_sys } //< namespace iot_sys

View File

@ -7,7 +7,7 @@
#include <QFileInfo> #include <QFileInfo>
#include <QDir> #include <QDir>
#include <QProcess> #include <QProcess>
#include "pub_utility_api/FileUtil.h"
using namespace sys_startup; using namespace sys_startup;
VersionForm::VersionForm(QWidget *parent) : VersionForm::VersionForm(QWidget *parent) :
QWidget(parent), QWidget(parent),
@ -56,13 +56,14 @@ void VersionForm::initView()
ui->dbValue->setText(versionMap.value(QString::fromStdString(SOFTWARE_ISDB),"0") == "1" ? tr("已安装"):tr("未安装")); ui->dbValue->setText(versionMap.value(QString::fromStdString(SOFTWARE_ISDB),"0") == "1" ? tr("已安装"):tr("未安装"));
ui->webValue->setText(versionMap.value(QString::fromStdString(SOFTWARE_ISWEB),"0") == "1" ? tr("已安装"):tr("未安装")); ui->webValue->setText(versionMap.value(QString::fromStdString(SOFTWARE_ISWEB),"0") == "1" ? tr("已安装"):tr("未安装"));
if(versionMap.value(QString::fromStdString(SOFTWARE_ISMAIN),"0") == "0") const std::string strFileName = "hmi_explorer.bat";
{ QString strPath = QString::fromStdString( iot_public::CFileUtil::getPathOfBinDir(CN_DIR_PLATFORM));
ui->mainPathValue->setText(tr("无主程序路径")); QDir pathFile(strPath);
}else pathFile.cdUp();
{ pathFile.cdUp();
ui->mainPathValue->setText(versionMap.value(QString::fromStdString(SOFTWARE_MAINPATH)));
} ui->mainPathValue->setText(pathFile.absolutePath());
if(versionMap.value(QString::fromStdString(SOFTWARE_ISDB),"0") == "0") if(versionMap.value(QString::fromStdString(SOFTWARE_ISDB),"0") == "0")
{ {
ui->dbPathValue->setText(tr("无数据库路径")); ui->dbPathValue->setText(tr("无数据库路径"));
@ -81,6 +82,7 @@ void VersionForm::initView()
void VersionForm::showInFolder(const QString &path) void VersionForm::showInFolder(const QString &path)
{ {
initView();
QFileInfo info(path); QFileInfo info(path);
#if defined(Q_OS_WIN) #if defined(Q_OS_WIN)
QStringList args; QStringList args;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 4.2 KiB

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 17 KiB

View File

@ -118,6 +118,15 @@ exists($$SIGAR_PRI) {
DEFINES += QAPPLICATION_CLASS=QApplication DEFINES += QAPPLICATION_CLASS=QApplication
# 判架构
contains(QMAKE_HOST.arch, x86_64): !linux-aarch64*{
message("Host is amd64")
DEFINES += KBD_X86
}
else{
DEFINES += KBD_ARM
message("Host is arm64")
}
#------------------------------------------------------------------- #-------------------------------------------------------------------
COMMON_PRI=$$PWD/../../common.pri COMMON_PRI=$$PWD/../../common.pri
@ -133,3 +142,5 @@ contains(DEFINES, OS_WINDOWS) {
RESOURCES += \ RESOURCES += \
resource.qrc resource.qrc
TRANSLATIONS = $$PWD/en.ts