导读
我从事IT运维技术20多年, 尤其是刚开始工作的时候:前几年陆续在十几家IT系统集成公司工作过,每一家公司技术服务标准、IT工程师的个人习惯很难帮助客户企业建立一套规划、系统而全方位的IT系统。
同时客户IT需求的多元化,很难有一套统一的行业标准,很多客户也在纠结:无法判断IT技术工程师维护和管理的效果。只能在出现故障时:技术工程师处理故障,结果就是解决了和没有解决。
下一次更换IT技术工程师,故障处理风格又不同,所以我们很难进行有效管理和监控,更难讨论怎么统一!
近两年,我就在思考:怎么样帮助初高级IT工程师,建立一套规划化的IT服务体系?
例如:我就在想,有一套系统,把各种常用软件集成,IT企业每一位工程师统一使用集成化的平台,安装部署软件产品和各种外设。下图是我定制开发的界面。我需要做的工作是安装7-zip这个软件
软件开发界面
需求分析
1、需要有7-Zip安装包;(程序自动判断:有没有安装包,没有则下载到指定目录);
2、7-z自动加入系统Path目录,方便命令行方式自动解压IT管理系统的软件;
3、判断Windows系统是否安装有7-zip软件,如果安装好了则自动打开程序;
实现方法:
我自学QT和C 一年多,空闲时间按照自己的想法和思路去实现。如上图:我点击"软件"->“压缩工具”->"7-Zip"软件,则自动安装该软件。
QT开发界面
项目目录结构
初始实现:QT QSetting 类操作注册表读写path,将7-zip软件加入系统环境、通过QProcess执行安装程序。
setup7_Zip() 函数:
void softHandle::setup7_Zip()
{
QString exeFileName=sourceDir "commonSoft\\zip_soft\\7z2107-x64.exe";
QProcess process(this);
QSettings *regSet;
if(Is64BitSystem()){
regSet=new QSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\7zFM.exe", QSettings::Registry64Format);
}else{
regSet=new QSettings("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\7zFM.exe", QSettings::Registry32Format);
}
QString addNewPath = regSet->value("Path").toString(); //获取7-Z安装位置
if (addNewPath.right(1) == "\\")
{
addNewPath.remove(addNewPath.length()-1,1);
}
qDebug()<<"-----------------"<<addNewPath;
QSettings *regSet2;
if(Is64BitSystem())
{
regSet2=new QSettings("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", QSettings::Registry64Format);
}
else
{
regSet2=new QSettings("HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment", QSettings::Registry32Format);
}
//将7-zip加入到系统path目录
QString oldPath = regSet2->value("Path").toString(); //读出注册表原来 Path的值
qDebug()<<"oldPath:"<<oldPath;
QString newPath=QString(oldPath ";%1;").arg(addNewPath); //在毛部追加7-zip的目录
qDebug()<<"newPath:"<<newPath;
regSet2->setValue("Path", newPath);
regSet->deleteLater();
regSet2->deleteLater();
}
代码效果
自动完成注册表环境变量设置