diff --git a/nodeService.js b/nodeService.js index c1e74f6..462c07a 100644 --- a/nodeService.js +++ b/nodeService.js @@ -11,66 +11,43 @@ app.use(cors()); app.use(bodyParser.json()); // window系统下创建快捷方式接口 -// app.post('/createShortcut', (req, res) => { -// // folderPath:存放的路径 shortcutName: 快捷方式名称 shortcutURL: 快捷方式的访问地址 -// const { folderPath, shortcutName, shortcutURL } = req.body; - -// // 检查是否缺少任何一个值 -// if (!folderPath || !shortcutName || !shortcutURL) { -// return res.status(400).send('少了参数!'); -// } - -// // 创建文件夹(如果不存在) -// if (!fs.existsSync(folderPath)) { -// fs.mkdirSync(folderPath, { recursive: true }); -// } - -// const shortcutFilePath = path.join(folderPath, `${shortcutName}.url`); - -// // 删除旧的快捷方式文件(如果存在) -// if (fs.existsSync(shortcutFilePath)) { -// fs.unlinkSync(shortcutFilePath); -// } - -// // 创建快捷方式 -// const shortcutFolderPath = path.join(folderPath, shortcutName + '.url'); -// const shortcutFileContent = `[InternetShortcut]\nURL=${shortcutURL}`; - -// fs.writeFile(shortcutFolderPath, shortcutFileContent, (err) => { -// if (err) { -// console.error(err); -// res.status(500).send('安装失败!'); -// } else { -// res.status(200).send('安装成功!'); -// } -// }); -// }); - -// linux系统下创建快捷方式接口 app.post('/createShortcut', (req, res) => { - const { - folderPath, - shortcutName, - shortcutURL - } = req.body; + // folderPath:存放的路径 shortcutName: 快捷方式名称 shortcutURL: 快捷方式的访问地址 + const { folderPath, shortcutName, shortcutURL } = req.body; + // 检查是否缺少任何一个值 if (!folderPath || !shortcutName || !shortcutURL) { return res.status(400).send('少了参数!'); } + // 创建文件夹(如果不存在) if (!fs.existsSync(folderPath)) { - fs.mkdirSync(folderPath, { - recursive: true - }); + fs.mkdirSync(folderPath, { recursive: true }); } - const shortcutLinkPath = path.join(folderPath, shortcutName); + // window下用.url + // const shortcutFilePath = path.join(folderPath, `${shortcutName}.url`); + // linux中用.desktop + const shortcutFilePath = path.join(folderPath, `${shortcutName}.desktop`); - if (fs.existsSync(shortcutLinkPath)) { - fs.unlinkSync(shortcutLinkPath); + // 删除旧的快捷方式文件(如果存在) + if (fs.existsSync(shortcutFilePath)) { + fs.unlinkSync(shortcutFilePath); } - fs.symlink(shortcutURL, shortcutLinkPath, 'file', (err) => { + // window下创建快捷方式 + // const shortcutFolderPath = path.join(folderPath, shortcutName + '.url'); + // const shortcutFileContent = `[InternetShortcut]\nURL=${shortcutURL}`; + + // linux下创建快捷方式 + const shortcutFolderPath = path.join(folderPath, `${shortcutName}.desktop`); + const shortcutFileContent = `[Desktop Entry] + Type=Application + Name=${shortcutName} + Exec=/usr/bin/chromium-browser ${shortcutURL} + Icon=/usr/share/icons/hicolor/48x48/apps/chromium-browser.png`; + + fs.writeFileSync(shortcutFolderPath, shortcutFileContent, (err) => { if (err) { console.error(err); res.status(500).send('安装失败!'); @@ -79,46 +56,8 @@ app.post('/createShortcut', (req, res) => { } }); - // // 快捷方式的配置 - // const config = { - // name: shortcutName, - // exec: 'x-www-browser', - // // icon: '/path/to/favicon.png', // 图标路径,可选 - // icon: '', - // url: shortcutURL, - // terminal: false, - // type: 'Application', - // categories: 'Network;WebBrowser;' - // }; - - // // 快捷方式文件内容 - // let desktopFileContent = `[Desktop Entry] - // Name=${config.name} - // Exec=${config.exec} ${config.url} - // Type=${config.type} - // Icon=${config.icon || ''} - // Terminal=${config.terminal} - // Categories=${config.categories} - // Comment=Open ${config.name} in your web browser`; - - // // 如果有图标路径,确保图标文件存在 - // // if (config.icon && !fs.existsSync(config.icon)) { - // // console.error('Icon file does not exist.'); - // // process.exit(1); - // // } - - // // 创建快捷方式文件 - // fs.writeFile(shortcutLinkPath, desktopFileContent, 'utf8', function (err) { - // if (err) { - // console.error(err); - // res.status(500).send('安装失败!'); - // } else { - // res.status(200).send('安装成功!'); - // } - // }); - - - + // 设置文件权限为可执行 + fs.chmodSync(shortcutFolderPath, 0o755); // 0o755 表示 rwxr-xr-x 权限,即所有者可读写执行,其他用户可读执行 }); // 运行项目 需要进入到当前的文件夹目录打开终端 执行 node nodeService.js diff --git a/src/pages/InstallExe/index.tsx b/src/pages/InstallExe/index.tsx index 0925f27..93b2e63 100644 --- a/src/pages/InstallExe/index.tsx +++ b/src/pages/InstallExe/index.tsx @@ -175,7 +175,11 @@ const InstallExe: FC = ({ }) => { let info = JSON.parse(sysData); info.installExe[index].select = true; localStorage.setItem(`${urlParams?.fileType}`, JSON.stringify(info)); - message.success(text) + if (text == '安装失败!') { + message.error(text) + }else { + message.success(text) + } } }