@admin 现在的版本对portable不支持,能不能加上对环境变量 process.env.VSCODE_PORTABLE 的判断,对于portable版本,默认的.eide文件夹就可以放在DATA文件夹下,尝试借助AI对extension.js进行了修补,读配置文件的问题可以像如下方式修补,但是默认的homedir()不知道如何修补,因为完全不懂js,做了些尝试都会出错
_formatPathForPluginSettings(e) {
// 首先检查 process.env.VSCODE_PORTABLE 是否存在
if (process.env.VSCODE_PORTABLE) {
// 如果存在,则检查 e 中是否包含 "${env:VSCODE_PORTABLE}" 并替换它
if (e.includes('${env:VSCODE_PORTABLE}')) {
e = e.replace('${env:VSCODE_PORTABLE}', process.env.VSCODE_PORTABLE);
}
// 在这里,e 可能已经是一个完整的路径了,你可以根据需要添加额外的逻辑
// 例如,确保 e 是绝对路径(如果需要的话)
// 因为已经处理了 VSCODE_PORTABLE,所以下面的逻辑就不需要再执行了
return e;
}
// 如果 VSCODE_PORTABLE 不存在,则继续原有的逻辑
const t = h.WorkspaceManager.getInstance().getWorkspaceRoot();
// 如果 t 存在且尚未设置 ${workspaceFolder},则设置它
if (t && !this.eideEnv.has("${workspaceFolder}")) {
this.eideEnv.set("${workspaceFolder}", t.path);
}
// 替换 e 中的环境变量(现在只会替换 ${workspaceFolder},因为 VSCODE_PORTABLE 已经被处理了)
this.eideEnv.forEach((t, r) => {
const n = r.replace("$", "\\$").replace("{", "\\{").replace("}", "\\}");
e = e.replace(new RegExp(n, "gi"), t);
});
// 确保 e 是绝对路径(如果需要的话)
if (!c.isAbsolute(e) && t) {
e = t.path + u.File.sep + e; // 假设 u.File.sep 是路径分隔符
}
return e;
}