121 lines
3.4 KiB
C++
121 lines
3.4 KiB
C++
|
|
#include "mainwindow.h"
|
|
|
|
#include <QApplication>
|
|
#include <QThread>
|
|
#include <QScreen>
|
|
#include <QTranslator>
|
|
#include <QMessageBox>
|
|
#include "version/HGVersion.h"
|
|
|
|
int main(int argc, char *argv[])
|
|
{
|
|
std::string type;
|
|
std::string appName;
|
|
std::string oemName;
|
|
std::string desc;
|
|
std::string pkgPath;
|
|
std::string appLang;
|
|
|
|
for (int i = 1; i < argc; i++)
|
|
{
|
|
char* z = argv[i];
|
|
|
|
if (z == strstr(z, "-type="))
|
|
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="))
|
|
pkgPath = z + strlen("-pkgpath=");
|
|
else if (z == strstr(z, "-language="))
|
|
appLang = z + strlen("-language=");
|
|
}
|
|
|
|
if (appLang != "english")
|
|
{
|
|
appLang = "chinese";
|
|
}
|
|
|
|
if ("postinstallinfo" == type && !appName.empty() && !oemName.empty())
|
|
{
|
|
HGVersionMgr mgr = nullptr;
|
|
HGVersion_CreateMgr(&mgr);
|
|
|
|
if (nullptr != mgr)
|
|
{
|
|
HGVersion_PostInstallInfo(mgr, appName.c_str(), oemName.c_str(), desc.c_str());
|
|
HGVersion_DestroyMgr(mgr);
|
|
}
|
|
}
|
|
else if ("postuninstallinfo" == type && !appName.empty() && !oemName.empty())
|
|
{
|
|
HGVersionMgr mgr = nullptr;
|
|
HGVersion_CreateMgr(&mgr);
|
|
if (nullptr != mgr)
|
|
{
|
|
HGVersion_PostUninstallInfo(mgr, appName.c_str(), oemName.c_str(), desc.c_str());
|
|
HGVersion_DestroyMgr(mgr);
|
|
}
|
|
}
|
|
else if ("upgrade" == type && !appName.empty() && !oemName.empty() && !pkgPath.empty())
|
|
{
|
|
QApplication a(argc, argv);
|
|
|
|
while (1)
|
|
{
|
|
HGBool isRun = HGFALSE;
|
|
HGVersion_GetAppStatus(appName.c_str(), oemName.c_str(), &isRun);
|
|
if (!isRun)
|
|
{
|
|
break;
|
|
}
|
|
|
|
QThread::msleep(20);
|
|
}
|
|
|
|
QString translator_upgrade_name = ":translation/Upgrade_zh_CN.qm";
|
|
if (appLang == "english")
|
|
{
|
|
translator_upgrade_name = ":translation/Upgrade_zh_EN.qm";
|
|
}
|
|
|
|
QTranslator translator_upgrade;
|
|
if (translator_upgrade.load(translator_upgrade_name))
|
|
a.installTranslator(&translator_upgrade);
|
|
|
|
MainWindow w(pkgPath);
|
|
QScreen *screen = QGuiApplication::primaryScreen();
|
|
w.move((screen->size().width() - w.width()) / 2, (screen->size().height() - w.height()) / 2);
|
|
w.show();
|
|
a.exec();
|
|
|
|
if (w.isInstallSuccess())
|
|
{
|
|
QMessageBox msg(QMessageBox::Information, QObject::tr("tip"),
|
|
QObject::tr("install succeed!"),
|
|
QMessageBox::Ok);
|
|
msg.exec();
|
|
|
|
HGBool isRun = HGFALSE;
|
|
HGVersion_GetAppStatus(appName.c_str(), oemName.c_str(), &isRun);
|
|
if (!isRun)
|
|
{
|
|
HGVersion_RunApp(appName.c_str(), oemName.c_str());
|
|
}
|
|
}
|
|
else
|
|
{
|
|
QMessageBox msg(QMessageBox::Critical, QObject::tr("error"),
|
|
QObject::tr("install failed!") + "\n" + w.getUpgradeFailInfo(),
|
|
QMessageBox::Ok);
|
|
msg.exec();
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
}
|