From 29522a039586001e65895b49a03ff74f5fbd59e9 Mon Sep 17 00:00:00 2001 From: luoliangyi <87842688@qq.com> Date: Thu, 13 Apr 2023 17:31:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8E=BB=E6=8E=89HGUpgrade=E5=B7=A5=E7=A8=8B?= =?UTF-8?q?=E7=9A=84OEM=E5=AE=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/scanner/mainwindow.cpp | 1 + app/upgrade/HGUpgrade.cpp | 208 ++++++++++++++++++++----------------- app/upgrade/HGUpgrade.h | 5 +- app/upgrade/main.cpp | 37 +++---- app/upgrade/mainwindow.cpp | 3 +- app/upgrade/mainwindow.h | 3 +- 6 files changed, 132 insertions(+), 125 deletions(-) diff --git a/app/scanner/mainwindow.cpp b/app/scanner/mainwindow.cpp index 257cd8e1..c7710008 100644 --- a/app/scanner/mainwindow.cpp +++ b/app/scanner/mainwindow.cpp @@ -4062,6 +4062,7 @@ void MainWindow::upgradeApp(QString pkgPath) QStringList argList; argList.push_back(QString("-appName=%1").arg(HGVERSION_APPNAME_SCANNER)); + argList.push_back(QString("-oemName=%1").arg(m_oemName)); argList.push_back(QString("-pkgpath=%1").arg(pkgPath.toStdString().c_str())); argList.push_back(QString("-type=%1").arg("upgrade")); argList.push_back(QString("-language=%1").arg(m_currLang.toStdString().c_str())); diff --git a/app/upgrade/HGUpgrade.cpp b/app/upgrade/HGUpgrade.cpp index d71caa95..218051bf 100644 --- a/app/upgrade/HGUpgrade.cpp +++ b/app/upgrade/HGUpgrade.cpp @@ -8,27 +8,27 @@ #include #endif -bool AppIsRun(const std::string& appName) +bool AppIsRun(const HGChar *appName, const HGChar* oemName) { - if (appName == HGVERSION_APPNAME_SCANNER) + if (0 == strcmp(appName, HGVERSION_APPNAME_SCANNER)) { #if defined(HG_CMP_MSC) std::wstring appPath; + std::wstring regName; - #if defined(OEM_HANWANG) - std::wstring regName = L"SOFTWARE\\HanvonScan"; - #elif defined(OEM_LISICHENG) - std::wstring regName = L"SOFTWARE\\LanxumScan"; - #elif defined(OEM_CANGTIAN) - std::wstring regName = L"SOFTWARE\\CumtennScan"; - #elif defined(OEM_ZHONGJING) - std::wstring regName = L"SOFTWARE\\MicrotekScan"; - #elif defined(OEM_ZIGUANG) - std::wstring regName = L"SOFTWARE\\UniScan"; - #else - std::wstring regName = L"SOFTWARE\\HuaGoScan"; - #endif + if (0 == strcmp(oemName, HGVERSION_OEMNAME_HANVON)) + regName = L"SOFTWARE\\HanvonScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_LANXUM)) + regName = L"SOFTWARE\\LanxumScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_CUMTENN)) + regName = L"SOFTWARE\\CumtennScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_MICROTEK)) + regName = L"SOFTWARE\\MicrotekScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_UNIS)) + regName = L"SOFTWARE\\UniScan"; + else + regName = L"SOFTWARE\\HuaGoScan"; HKEY hKey = nullptr; RegOpenKeyExW(HKEY_LOCAL_MACHINE, regName.c_str(), 0, KEY_QUERY_VALUE, &hKey); @@ -99,47 +99,69 @@ bool AppIsRun(const std::string& appName) printf("osName=%s\n", osName.c_str()); if (osName.find("UnionTech") != std::string::npos) { -#if defined(OEM_HANWANG) - cmd = "ps -wef | grep HanvonScan"; - appPath = "/opt/apps/com.hanvonchina.hanvonscan/files/bin/HanvonScan"; -#elif defined(OEM_LISICHENG) - cmd = "ps -wef | grep LanxumScan"; - appPath = "/opt/apps/com.lanxumchina.lanxumscan/files/bin/LanxumScan"; -#elif defined(OEM_CANGTIAN) - cmd = "ps -wef | grep CumtennScan"; - appPath = "/opt/apps/com.cumtennchina.cumtennscan/files/bin/CumtennScan"; -#elif defined(OEM_ZHONGJING) - cmd = "ps -wef | grep MicrotekScan"; - appPath = "/opt/apps/com.microtekchina.microtekscan-ex/files/bin/MicrotekScan"; -#elif defined(OEM_ZIGUANG) - cmd = "ps -wef | grep UniScan"; - appPath = "/opt/apps/com.unischina.uniscan/files/bin/UniScan"; -#else - cmd = "ps -wef | grep HuaGoScan"; - appPath = "/opt/apps/com.huagaochina.huagoscan/files/bin/HuaGoScan"; -#endif + if (0 == strcmp(oemName, HGVERSION_OEMNAME_HANVON)) + { + cmd = "ps -wef | grep HanvonScan"; + appPath = "/opt/apps/com.hanvonchina.hanvonscan/files/bin/HanvonScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_LANXUM)) + { + cmd = "ps -wef | grep LanxumScan"; + appPath = "/opt/apps/com.lanxumchina.lanxumscan/files/bin/LanxumScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_CUMTENN)) + { + cmd = "ps -wef | grep CumtennScan"; + appPath = "/opt/apps/com.cumtennchina.cumtennscan/files/bin/CumtennScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_MICROTEK)) + { + cmd = "ps -wef | grep MicrotekScan"; + appPath = "/opt/apps/com.microtekchina.microtekscan-ex/files/bin/MicrotekScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_UNIS)) + { + cmd = "ps -wef | grep UniScan"; + appPath = "/opt/apps/com.unischina.uniscan/files/bin/UniScan"; + } + else + { + cmd = "ps -wef | grep HuaGoScan"; + appPath = "/opt/apps/com.huagaochina.huagoscan/files/bin/HuaGoScan"; + } } else { -#if defined(OEM_HANWANG) - cmd = "ps -wef | grep HanvonScan"; - appPath = "/opt/apps/scanner-driver-hanvon/bin/HanvonScan"; -#elif defined(OEM_LISICHENG) - cmd = "ps -wef | grep LanxumScan"; - appPath = "/opt/apps/scanner-driver-lanxum/bin/LanxumScan"; -#elif defined(OEM_CANGTIAN) - cmd = "ps -wef | grep CumtennScan"; - appPath = "/opt/apps/scanner-driver-cumtenn/bin/CumtennScan"; -#elif defined(OEM_ZHONGJING) - cmd = "ps -wef | grep MicrotekScan"; - appPath = "/opt/apps/scanner-driver-microtek-ex/bin/MicrotekScan"; -#elif defined(OEM_ZIGUANG) - cmd = "ps -wef | grep UniScan"; - appPath = "/opt/apps/scanner-driver-unis/bin/UniScan"; -#else - cmd = "ps -wef | grep HuaGoScan"; - appPath = "/opt/apps/scanner-driver-huagao/bin/HuaGoScan"; -#endif + if (0 == strcmp(oemName, HGVERSION_OEMNAME_HANVON)) + { + cmd = "ps -wef | grep HanvonScan"; + appPath = "/opt/apps/scanner-driver-hanvon/bin/HanvonScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_LANXUM)) + { + cmd = "ps -wef | grep LanxumScan"; + appPath = "/opt/apps/scanner-driver-lanxum/bin/LanxumScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_CUMTENN)) + { + cmd = "ps -wef | grep CumtennScan"; + appPath = "/opt/apps/scanner-driver-cumtenn/bin/CumtennScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_MICROTEK)) + { + cmd = "ps -wef | grep MicrotekScan"; + appPath = "/opt/apps/scanner-driver-microtek-ex/bin/MicrotekScan"; + } + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_UNIS)) + { + cmd = "ps -wef | grep UniScan"; + appPath = "/opt/apps/scanner-driver-unis/bin/UniScan"; + } + else + { + cmd = "ps -wef | grep HuaGoScan"; + appPath = "/opt/apps/scanner-driver-huagao/bin/HuaGoScan"; + } } bool ret = false; @@ -167,27 +189,27 @@ bool AppIsRun(const std::string& appName) return false; } -void RunApp(const std::string& appName) +void RunApp(const HGChar *appName, const HGChar* oemName) { - if (appName == HGVERSION_APPNAME_SCANNER) + if (0 == strcmp(appName, HGVERSION_APPNAME_SCANNER)) { #if defined(HG_CMP_MSC) std::wstring appPath; + std::wstring regName; - #if defined(OEM_HANWANG) - std::wstring regName = L"SOFTWARE\\HanvonScan"; - #elif defined(OEM_LISICHENG) - std::wstring regName = L"SOFTWARE\\LanxumScan"; - #elif defined(OEM_CANGTIAN) - std::wstring regName = L"SOFTWARE\\CumtennScan"; - #elif defined(OEM_ZHONGJING) - std::wstring regName = L"SOFTWARE\\MicrotekScan"; - #elif defined(OEM_ZIGUANG) - std::wstring regName = L"SOFTWARE\\UniScan"; - #else - std::wstring regName = L"SOFTWARE\\HuaGoScan"; - #endif + if (0 == strcmp(oemName, HGVERSION_OEMNAME_HANVON)) + regName = L"SOFTWARE\\HanvonScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_LANXUM)) + regName = L"SOFTWARE\\LanxumScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_CUMTENN)) + regName = L"SOFTWARE\\CumtennScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_MICROTEK)) + regName = L"SOFTWARE\\MicrotekScan"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_UNIS)) + regName = L"SOFTWARE\\UniScan"; + else + regName = L"SOFTWARE\\HuaGoScan"; HKEY hKey = nullptr; RegOpenKeyExW(HKEY_LOCAL_MACHINE, regName.c_str(), 0, KEY_QUERY_VALUE, &hKey); @@ -224,35 +246,33 @@ void RunApp(const std::string& appName) printf("osName=%s\n", osName.c_str()); if (osName.find("UnionTech") != std::string::npos) { -#if defined(OEM_HANWANG) - appPath = "sh /opt/apps/com.hanvonchina.hanvonscan/files/bin/HanvonScan.sh &"; -#elif defined(OEM_LISICHENG) - appPath = "sh /opt/apps/com.lanxumchina.lanxumscan/files/bin/LanxumScan.sh &"; -#elif defined(OEM_CANGTIAN) - appPath = "sh /opt/apps/com.cumtennchina.cumtennscan/files/bin/CumtennScan.sh &"; -#elif defined(OEM_ZHONGJING) - appPath = "sh /opt/apps/com.microtekchina.microtekscan-ex/files/bin/MicrotekScan.sh &"; -#elif defined(OEM_ZIGUANG) - appPath = "sh /opt/apps/com.unischina.uniscan/files/bin/UniScan.sh &"; -#else - appPath = "sh /opt/apps/com.huagaochina.huagoscan/files/bin/HuaGoScan.sh &"; -#endif + if (0 == strcmp(oemName, HGVERSION_OEMNAME_HANVON)) + appPath = "sh /opt/apps/com.hanvonchina.hanvonscan/files/bin/HanvonScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_LANXUM)) + appPath = "sh /opt/apps/com.lanxumchina.lanxumscan/files/bin/LanxumScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_CUMTENN)) + appPath = "sh /opt/apps/com.cumtennchina.cumtennscan/files/bin/CumtennScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_MICROTEK)) + appPath = "sh /opt/apps/com.microtekchina.microtekscan-ex/files/bin/MicrotekScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_UNIS)) + appPath = "sh /opt/apps/com.unischina.uniscan/files/bin/UniScan.sh &"; + else + appPath = "sh /opt/apps/com.huagaochina.huagoscan/files/bin/HuaGoScan.sh &"; } else { -#if defined(OEM_HANWANG) - appPath = "sh /opt/apps/scanner-driver-hanvon/bin/HanvonScan.sh &"; -#elif defined(OEM_LISICHENG) - appPath = "sh /opt/apps/scanner-driver-lanxum/bin/LanxumScan.sh &"; -#elif defined(OEM_CANGTIAN) - appPath = "sh /opt/apps/scanner-driver-cumtenn/bin/CumtennScan.sh &"; -#elif defined(OEM_ZHONGJING) - appPath = "sh /opt/apps/scanner-driver-microtek-ex/bin/MicrotekScan.sh &"; -#elif defined(OEM_ZIGUANG) - appPath = "sh /opt/apps/scanner-driver-unis/bin/UniScan.sh &"; -#else - appPath = "sh /opt/apps/scanner-driver-huagao/bin/HuaGoScan.sh &"; -#endif + if (0 == strcmp(oemName, HGVERSION_OEMNAME_HANVON)) + appPath = "sh /opt/apps/scanner-driver-hanvon/bin/HanvonScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_LANXUM)) + appPath = "sh /opt/apps/scanner-driver-lanxum/bin/LanxumScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_CUMTENN)) + appPath = "sh /opt/apps/scanner-driver-cumtenn/bin/CumtennScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_MICROTEK)) + appPath = "sh /opt/apps/scanner-driver-microtek-ex/bin/MicrotekScan.sh &"; + else if (0 == strcmp(oemName, HGVERSION_OEMNAME_UNIS)) + appPath = "sh /opt/apps/scanner-driver-unis/bin/UniScan.sh &"; + else + appPath = "sh /opt/apps/scanner-driver-huagao/bin/HuaGoScan.sh &"; } system(appPath.c_str()); diff --git a/app/upgrade/HGUpgrade.h b/app/upgrade/HGUpgrade.h index 67f7e533..96bd6c60 100644 --- a/app/upgrade/HGUpgrade.h +++ b/app/upgrade/HGUpgrade.h @@ -1,12 +1,13 @@ #ifndef __HGUPGRADE_H__ #define __HGUPGRADE_H__ +#include "base/HGDef.h" #include // 判断app是否在运行 -bool AppIsRun(const std::string& appName); +bool AppIsRun(const HGChar *appName, const HGChar* oemName); // 运行app -void RunApp(const std::string& appName); +void RunApp(const HGChar *appName, const HGChar* oemName); #endif /* __HGUPGRADE_H__ */ diff --git a/app/upgrade/main.cpp b/app/upgrade/main.cpp index fb10fa48..58a0baae 100644 --- a/app/upgrade/main.cpp +++ b/app/upgrade/main.cpp @@ -13,6 +13,7 @@ int main(int argc, char *argv[]) { std::string type; std::string appName; + std::string oemName; std::string desc; std::string pkgPath; std::string appLang; @@ -25,6 +26,8 @@ int main(int argc, char *argv[]) type = z + strlen("-type="); else if (z == strstr(z, "-appName=")) appName = z + strlen("-appName="); + else if (z == strstr(z, "-oemName=")) + oemName = z + strlen("-oemName="); else if (z == strstr(z, "-desc=")) desc = z + strlen("-desc="); else if (z == strstr(z, "-pkgpath=")) @@ -38,48 +41,32 @@ int main(int argc, char *argv[]) appLang = "chinese"; } - const HGChar *oemName = nullptr; - -#if defined(OEM_HANWANG) - oemName = HGVERSION_OEMNAME_HANVON; -#elif defined(OEM_LISICHENG) - oemName = HGVERSION_OEMNAME_LANXUM; -#elif defined(OEM_CANGTIAN) - oemName = HGVERSION_OEMNAME_CUMTENN; -#elif defined(OEM_ZHONGJING) - oemName = HGVERSION_OEMNAME_MICROTEK; -#elif defined(OEM_ZIGUANG) - oemName = HGVERSION_OEMNAME_UNIS; -#else - oemName = HGVERSION_OEMNAME_HUAGO; -#endif - - if ("postinstallinfo" == type && !appName.empty()) + if ("postinstallinfo" == type && !appName.empty() && !oemName.empty()) { HGVersionMgr mgr = nullptr; HGVersion_CreateMgr(&mgr); if (nullptr != mgr) { - HGVersion_PostInstallInfo(mgr, appName.c_str(), oemName, desc.c_str()); + HGVersion_PostInstallInfo(mgr, appName.c_str(), oemName.c_str(), desc.c_str()); HGVersion_DestroyMgr(mgr); } } - else if ("postuninstallinfo" == type && !appName.empty()) + else if ("postuninstallinfo" == type && !appName.empty() && !oemName.empty()) { HGVersionMgr mgr = nullptr; HGVersion_CreateMgr(&mgr); if (nullptr != mgr) { - HGVersion_PostUninstallInfo(mgr, appName.c_str(), oemName, desc.c_str()); + HGVersion_PostUninstallInfo(mgr, appName.c_str(), oemName.c_str(), desc.c_str()); HGVersion_DestroyMgr(mgr); } } - else if ("upgrade" == type && !appName.empty() && !pkgPath.empty()) + else if ("upgrade" == type && !appName.empty() && !oemName.empty() && !pkgPath.empty()) { QApplication a(argc, argv); - while (AppIsRun(appName)) + while (AppIsRun(appName.c_str(), oemName.c_str())) QThread::msleep(20); QString translator_upgrade_name = ":translation/Upgrade_zh_CN.qm"; @@ -92,7 +79,7 @@ int main(int argc, char *argv[]) if (translator_upgrade.load(translator_upgrade_name)) a.installTranslator(&translator_upgrade); - MainWindow w(appName, pkgPath); + MainWindow w(pkgPath); QScreen *screen = QGuiApplication::primaryScreen(); w.move((screen->size().width() - w.width()) / 2, (screen->size().height() - w.height()) / 2); w.show(); @@ -105,8 +92,8 @@ int main(int argc, char *argv[]) QMessageBox::Ok); msg.exec(); - if (!AppIsRun(appName)) - RunApp(appName); + if (!AppIsRun(appName.c_str(), oemName.c_str())) + RunApp(appName.c_str(), oemName.c_str()); } else { diff --git a/app/upgrade/mainwindow.cpp b/app/upgrade/mainwindow.cpp index 99d1c017..aa2bf2c6 100644 --- a/app/upgrade/mainwindow.cpp +++ b/app/upgrade/mainwindow.cpp @@ -11,10 +11,9 @@ #include #endif -MainWindow::MainWindow(const std::string &appName, const std::string& pkgPath, QWidget *parent) +MainWindow::MainWindow(const std::string& pkgPath, QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) - , m_appName(appName) , m_pkgPath(pkgPath) , m_thread(nullptr) , m_success(false) diff --git a/app/upgrade/mainwindow.h b/app/upgrade/mainwindow.h index 07c73e7a..7a09cace 100644 --- a/app/upgrade/mainwindow.h +++ b/app/upgrade/mainwindow.h @@ -13,7 +13,7 @@ class MainWindow : public QMainWindow Q_OBJECT public: - MainWindow(const std::string &appName, const std::string &pkgPath, QWidget *parent = nullptr); + MainWindow(const std::string &pkgPath, QWidget *parent = nullptr); ~MainWindow(); bool isInstallSuccess(); @@ -29,7 +29,6 @@ private: private: Ui::MainWindow *ui; - std::string m_appName; std::string m_pkgPath; HGThread m_thread; bool m_success;