diff --git a/app/electron/init.html b/app/electron/init.html
index 415196e4e..712d0eb93 100644
--- a/app/electron/init.html
+++ b/app/electron/init.html
@@ -383,6 +383,24 @@
}
const initPath = result.filePaths[0]
+ if (isPartitionRootPath(initPath)) {
+ let msg = '⚠️ Do not create the workspace in the partition root path, please create a new folder as the workspace'
+ if (isChinese(currentLang)) {
+ msg = '⚠️ 请勿在分区根路径上创建工作空间,请新建一个文件夹作为工作空间'
+ }
+ alert(msg)
+ return
+ }
+
+ if (!isWorkspaceDir(initPath) && !isEmptyDir(initPath)) {
+ let msg = '⚠️ This folder contains other files, please create a new folder as the workspace'
+ if (isChinese(currentLang)) {
+ msg = '⚠️ 该文件夹包含了其他文件,请新建一个文件夹作为工作空间'
+ }
+ alert(msg)
+ return
+ }
+
if (isICloudPath(initPath)) {
let msg = '⚠️ This folder is under the iCloud sync path, please change another path'
if (isChinese(currentLang)) {
@@ -417,6 +435,36 @@
})
})
+ const isPartitionRootPath = (absPath) => {
+ const path = require('path')
+ const parsedPath = path.parse(absPath)
+ return parsedPath.root === absPath
+ }
+
+ const isEmptyDir = (absPath) => {
+ const fs = require('fs')
+ let files;
+ try {
+ files = fs.readdirSync(absPath)
+ } catch (err) {
+ return false
+ }
+ return 0 === files.length
+ }
+
+ const isWorkspaceDir = (absPath) => {
+ const path = require('path');
+ const fs = require('fs');
+ const conf = path.join(absPath, 'conf', 'conf.json');
+ let data;
+ try {
+ data = fs.readFileSync(conf, 'utf8');
+ } catch (err) {
+ return false;
+ }
+ return data.includes('kernelVersion');
+ }
+
const isCloudDrivePath = (absPath) => {
const absPathLower = absPath.toLowerCase()
return -1 < absPathLower.indexOf("onedrive") || -1 < absPathLower.indexOf("dropbox") ||