|
|
const express = require('express');
|
|
|
const fs = require('fs');
|
|
|
const path = require('path');
|
|
|
const cors = require('cors');
|
|
|
const bodyParser = require('body-parser');
|
|
|
|
|
|
const app = express();
|
|
|
const port = 3000; // 可以根据需要修改端口号
|
|
|
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 });
|
|
|
}
|
|
|
|
|
|
// window下用.url
|
|
|
// const shortcutFilePath = path.join(folderPath, `${shortcutName}.url`);
|
|
|
// linux中用.desktop
|
|
|
const shortcutFilePath = path.join(folderPath, `${shortcutName}.desktop`);
|
|
|
|
|
|
// 删除旧的快捷方式文件(如果存在)
|
|
|
if (fs.existsSync(shortcutFilePath)) {
|
|
|
fs.unlinkSync(shortcutFilePath);
|
|
|
}
|
|
|
|
|
|
// 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`;
|
|
|
|
|
|
// arm 下用火狐打开
|
|
|
const shortcutFileContent = `[Desktop Entry]
|
|
|
Type=Application
|
|
|
Name=${shortcutName}
|
|
|
Exec=sudo /usr/bin/firefox-esr ${shortcutURL}
|
|
|
Icon=/usr/share/icons/hicolor/48x48/apps/firefox-esr.png`;
|
|
|
|
|
|
try {
|
|
|
fs.writeFileSync(shortcutFolderPath, shortcutFileContent);
|
|
|
// 设置文件权限为可执行 0o755 表示 rwxr-xr-x 权限,即所有者可读写执行,其他用户可读执行
|
|
|
fs.chmodSync(shortcutFolderPath, 0o755);
|
|
|
res.status(200).send('安装成功!');
|
|
|
} catch (err) {
|
|
|
console.error(err);
|
|
|
res.status(500).send('安装失败!');
|
|
|
}
|
|
|
|
|
|
});
|
|
|
|
|
|
// 运行项目 需要进入到当前的文件夹目录打开终端 执行 node nodeService.js
|
|
|
app.listen(port, () => {
|
|
|
console.log(`Server is running on port ${port}`);
|
|
|
}); |