1.判断路径是否存在,不存在则创建
const path = require('path');
const fs = require('fs');
const util={};
/** * 检查路径是否存在 如果不存在则创建路径
* @param {string} folderpath 文件路径
*/
util.checkDirExist=(folderpath)=>{
const pathArr=folderpath.split('/');
let _path='';
for(let i=0;i<pathArr.length;i++){
if(pathArr[i]){
_path +=`/${pathArr[i]}`;
if (!fs.existsSync(_path)) {
fs.mkdirSync(_path);
}
}
}
}
module.exports = util;2.删除文件
function removeFile(path) {
fs.unlink(path, (err) => {
if (err) throw err;
});
}3.添加文件(已存在则覆盖)
let fs = require("fs");
var request = require('request');
function download(uri, filename, callback){
checkDirExist(filename);
var stream = fs.createWriteStream(filename);
request(uri).pipe(stream).on('close', callback);
}4.读取windows任务管理器信息,判断指定程序是否运行
function getCheckOrder(callback) {
exec('tasklist', function(err, stdout, stderr) {
const lines = stdout.toString().split('\n');
let flag = false;
lines.forEach(i=>{
if (i.indexOf('acad.exe') !== -1) {
flag = true;
}
});
callback(flag)
});
}5.通过windows注册表获取指定软件的版本等信息
function getCADMessage(callback) {
let list = [];
regedit.list(['HKLM\\SOFTWARE\\Autodesk\\AutoCAD']).on('data', function(entry) {
let keys01 = entry.data.keys;
keys01.forEach(function(key){
regedit.list(['HKLM\\SOFTWARE\\Autodesk\\AutoCAD\\'+key]).on('data',function(e){
let sum_key = e.key;
var keys02 = e.data.keys;
console.log("keys02:",keys02);
if(keys02){
keys02.forEach(function(key){
if (key.indexOf("ACAD-") !== -1 && key.indexOf(":") === -1) {//判断是否按照了插件
regedit.list([sum_key+'\\'+key+'\\Applications']).on('data',function(e){
let map = {
url: sum_key,
detailedUrl: sum_key+'\\'+key+'\\Applications',
flag: false
}
const keys = e.data.keys;
keys.forEach(function (item) {
if (item === "OYADToolKit") {
map.flag = true;
}
});
list.push(map);
});
}
if (key.indexOf("ACAD-") !== -1 && key.indexOf(":") !== -1) {//获取版本信息
regedit.list([sum_key+'\\'+key]).on('data',function(e){
let val = e.data.values;
list.push(
{
url: sum_key,
Location:val.Location.value,
ProductName:val.ProductName.value
}
);
callback(list);
});
}
});
}
})
});
})
}导出
exports.getCADMessage = getCADMessage;
exports.getCheckOrder = getCheckOrder;
exports.download = download;
exports.removeFile = removeFile调用:
var cadMessage = require('./demo');
ipcMain.on('down-test', (event, args) => {
try{
for (let i = 0; i < args.length; i++) {
cadMessage.download(args[i].url,args[i].relativePath,function () {})
}
for (let i = 0; i < args.length; i++) {
if (args[i].isdel) {//删除文件
cadMessage.removeFile(args[i].relativePath)
}
}
event.reply("reply-down",true);
}catch (e) {
event.reply("reply-down",'更新失败:'+e.toString());
}
});
ipcMain.on('send-test', (event, args) => {
cadMessage.getCADMessage((list)=>{
event.reply("reply-test",list);
});
});
ipcMain.on('send-update', (event, args) => {
cadMessage.getCheckOrder((list)=>{
event.reply("reply-update",list);
});
});注意: getCADMessage返回一个函数