antSword icon indicating copy to clipboard operation
antSword copied to clipboard

建议增加自定义数据路径实现跨平台数据共享功能

Open ca3tie1 opened this issue 5 years ago • 9 comments

通过更modules\config.js source\app.entry.js modules\settings\encoders.js文件源码实现跨平台数据共享功能(详情:https://blog.csdn.net/Ca3tie1/article/details/103574023)

建议在加载器加载蚁剑时候可自定义蚁剑数据目录antData位置,或者加载器是否能开源呢?

ca3tie1 avatar Dec 17 '19 03:12 ca3tie1

加载器是开源的 https://www.virzz.com/2018/11/06/how_to_use_antsword.html

mozhu1024 avatar Dec 17 '19 05:12 mozhu1024

可以测试看看 https://github.com/AntSwordProject/antSword/tree/feature/antdata

asar e electron.asar electron
vim electron/browser/init.js
rm electron.asar
asar p electron electron.asar

electron/browser/init.js

const AS_LOADER_VER = "4.0.3";
var packageJson = null;
var searchPaths = [];
try {
  // 如果存在工作目录,则第一加载工作目录
  var _path = path.join(process.env.HOME, '.antSword.json');
  _path = fs.existsSync(_path) ? _path : path.join(process.resourcesPath, '.antSword.json');
  var AS_CONFIG = JSON.parse(fs.readFileSync(_path));
  var AS_WORKDIR = AS_CONFIG['workdir'];
  if (fs.existsSync(AS_WORKDIR)) {
    searchPaths.push(AS_WORKDIR);
    process.env.AS_WORKDIR = AS_WORKDIR;
    process.env.AS_LOADER_VER = AS_LOADER_VER;
  }
  var AS_DATADIR = AS_CONFIG['datadir'];
  if ((typeof AS_DATADIR === 'string') && AS_DATADIR.length > 0) {
    process.env.AS_DATADIR = AS_DATADIR;
  } else {
    process.env.AS_DATADIR = path.join(AS_WORKDIR, 'antData');
  }
} catch (e) { }

.antSword.json

{
    "workdir": "/path/to/src/",
    "datadir": "/path/to/antData/"
}

mozhu1024 avatar Dec 17 '19 06:12 mozhu1024

有两个小bug 更改后测试没有问题 config.js this.basePath = process.env.AS_DATADIR ? process.env.AS_DATADIR : path.join(process.env.AS_WORKDIR, 'antData'); 改成 this.basePath = path.join(process.env.AS_DATADIR ? process.env.AS_DATADIR : process.env.AS_WORKDIR, 'antData'); 否则除编码器之外的数据都直接在datadir下了

第二个 electron/browser/init.js的else分支process.env.AS_DATADIR = path.join(AS_WORKDIR, 'antData'); 改成process.env.AS_DATADIR = AS_WORKDIR 否则就会成antData/antData

ca3tie1 avatar Dec 17 '19 07:12 ca3tie1

@ca3tie1 然而我就是打算 datadir = /xxx/antData

mozhu1024 avatar Dec 17 '19 08:12 mozhu1024

主要source\modules\settings\encoders.js里每一项都加了antData了

ca3tie1 avatar Dec 17 '19 08:12 ca3tie1

然而都改了 https://github.com/AntSwordProject/antSword/compare/feature/antdata#diff-2ca41843f430bf70bcd5509f39b07959

mozhu1024 avatar Dec 17 '19 08:12 mozhu1024

嗦嘎 是我没注意看后面。。都ok 非常感谢!

ca3tie1 avatar Dec 17 '19 08:12 ca3tie1

先试用一段时间,合适就 merge 了

mozhu1024 avatar Dec 17 '19 08:12 mozhu1024

哈,这样就更方便了

yzddmr6 avatar Dec 18 '19 05:12 yzddmr6