fe5aa5bbf0
update-client-hardening 四工作流合入(构建/静态检查已过): - 配置:不可变产品策略经 UpdateClientResources.cmake 归一化校验后 内嵌 qrc(URL/相对路径/主程序必须落 install_root/版本/UUID 格式, CMake override 写入前复验);可变机器状态迁系统级原生存储; 运行目录不再落可编辑 app_config.json。 - i18n:生产源全英文(no-Han 检查 41/41),中文进 translations/ zh_CN 目录;翻译加载收敛 Common/TranslationHelper 唯一入口; Bootstrap 补资源文件。 - 依赖:Qt/OpenSSL/架构/Perl 机器路径改 imported targets + UpdateClientDependencies.cmake,3rdparty 由父工程契约供给。 - 清理:旧 README/SDK README/3 个重复 PowerShell 打包脚本/PDF 提取 文本删除,canonical README + 5 份结构化英文文档替代;Launcher requireAdministrator manifest;统一 MSVC /utf-8 删运行时编码设置。
43 lines
1.0 KiB
C++
43 lines
1.0 KiB
C++
#include "FileHelper.h"
|
|
#include <QDebug>
|
|
|
|
bool FileHelper::createDir(const QString &path)
|
|
{
|
|
QDir dir(path);
|
|
if (!dir.exists())
|
|
return dir.mkpath(".");
|
|
return true;
|
|
}
|
|
|
|
bool FileHelper::copyFileOverwrite(const QString &src, const QString &dst)
|
|
{
|
|
if (QFile::exists(dst))
|
|
{
|
|
if (!QFile::remove(dst))
|
|
{
|
|
qDebug() << "Cannot remove the old file:" << dst;
|
|
return false;
|
|
}
|
|
}
|
|
return QFile::copy(src, dst);
|
|
}
|
|
|
|
bool FileHelper::isProcessRunning(const QString &exeName)
|
|
{
|
|
QProcess process;
|
|
process.start("tasklist");
|
|
process.waitForFinished();
|
|
QString output = process.readAllStandardOutput();
|
|
return output.contains(exeName, Qt::CaseInsensitive);
|
|
}
|
|
|
|
bool FileHelper::killProcess(const QString &exeName)
|
|
{
|
|
if (!isProcessRunning(exeName))
|
|
return true;
|
|
QProcess process;
|
|
process.start("taskkill /f /im " + exeName);
|
|
process.waitForFinished(1000);
|
|
return !isProcessRunning(exeName);
|
|
}
|