Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
ca3tie1 opened this issue Dec 17, 2019 · 9 comments
Open

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

ca3tie1 opened this issue Dec 17, 2019 · 9 comments

Comments

@ca3tie1
Copy link
Contributor

ca3tie1 commented Dec 17, 2019

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

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

@mozhu1024
Copy link
Member

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

@mozhu1024
Copy link
Member

可以测试看看 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/"
}

@ca3tie1
Copy link
Contributor Author

ca3tie1 commented Dec 17, 2019

有两个小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

@mozhu1024
Copy link
Member

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

@ca3tie1
Copy link
Contributor Author

ca3tie1 commented Dec 17, 2019

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

@mozhu1024
Copy link
Member

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

@ca3tie1
Copy link
Contributor Author

ca3tie1 commented Dec 17, 2019

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

@mozhu1024
Copy link
Member

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

@yzddmr6
Copy link
Member

yzddmr6 commented Dec 18, 2019

哈,这样就更方便了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants