diff --git a/aardiowin/config.json b/aardiowin/config.json
new file mode 100644
index 0000000..5a4bce6
--- /dev/null
+++ b/aardiowin/config.json
@@ -0,0 +1,11 @@
+{
+ "app" : "awin",
+ "title" : "awin",
+ "icon" : "",
+ "backend" : "",
+ "frontend" : "",
+ "window" : {
+ "width" : 500,
+ "height" : 500
+ }
+}
\ No newline at end of file
diff --git a/aardiowin/default.aproj b/aardiowin/default.aproj
index b111c24..162eca4 100644
--- a/aardiowin/default.aproj
+++ b/aardiowin/default.aproj
@@ -1,10 +1,8 @@
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/aardiowin/lib/init.aardio b/aardiowin/lib/init.aardio
new file mode 100644
index 0000000..04665bb
--- /dev/null
+++ b/aardiowin/lib/init.aardio
@@ -0,0 +1,106 @@
+// init 初始化
+import log
+
+
+
+// 临时日志
+var gLog = log( "awin" );
+var gDebug = false;
+
+namespace init{
+ import fsys
+ import string
+ import web.json
+
+ // 日志对象
+ getDebug = function(){
+ return gDebug;
+ }
+
+ // 日志对象
+ getLog = function(){
+ return gLog;
+ }
+
+ // 配置载入函数
+ loadConfigs = function() {
+
+
+ gLog.print("dir");
+ var configs = {};
+ var currentPath = fsys.getCurDir();
+ gLog.print("currentPath", currentPath);
+ var appDataPath = string.getenv("APPDATA");
+ gLog.print("appDataPath", appDataPath);
+
+ // 读取当前路径下的 config.json
+ var currentConfigPath = currentPath ++ "/config.json";
+ if (io.exist(currentConfigPath)) {
+ var currentConfigContent = string.load(currentConfigPath);
+ configs = web.json.parse(currentConfigContent);
+ }
+
+ // 从当前路径下的 config.json 中读取 app 值
+ var appValue = configs.app;
+ if (!appValue) {
+ error("'app' value not found in the config file.");
+ }
+ gLog.print("app", appValue);
+
+ // 构建 %APPDATA%/%app% 路径
+ var appDir = appDataPath ++ "/" ++ appValue;
+ if (! io.exist( appDir )) {
+ fsys.createDir( appDir )
+ }
+ var appDataConfigPath = appDataPath ++ "/" ++ appValue ++ "/config.json";
+
+ // 读取 %APPDATA%/%app% 路径下的 config.json
+ if (io.exist(appDataConfigPath)) {
+ var appDataConfigContent = string.load(appDataConfigPath);
+ var appDataConfig = web.json.parse(appDataConfigContent);
+
+ // 合并配置,后读取的覆盖先读取的
+ object.merge(configs, appDataConfig, true);
+ }
+
+ return configs;
+ };
+
+ checkConfig = function (config){
+ if( ! config.window ){
+ config.window = {}
+ }
+ if( ! config.window.width ) {
+ config.window.width = 500
+ }
+ if( ! config.window.height ) {
+ config.window.height = 500
+ }
+ return config;
+ }
+
+ /*
+
+ 载入配置,配置文件读取顺序,后读的可以覆盖先读的值。
+ 1. 读取当前路径下的 config.json
+ 2. 读取 %APPDATA%/%app% 路径下的 config.json。其中 %APPDATA% 为操作系统提供的当前用户软件目录。
+ %app% 为当前路径下的 config.json 中配置的 app
+
+ */
+ init = function(){
+ gLog.print("init")
+ gConfig = {}
+ // 使用示例
+ try {
+ gLog.print("loadConfigs")
+ io.print("")
+ gConfig = loadConfigs()
+ io.print("2")
+ gConfig = checkConfig( gConfig )
+ gLog.print(configs);
+ } catch (e) {
+ io.print("错误会中断try语句块" ++ e)
+ gLog.print(e);
+ }
+ }
+}
diff --git a/aardiowin/lib/log.aardio b/aardiowin/lib/log.aardio
new file mode 100644
index 0000000..05d6cea
--- /dev/null
+++ b/aardiowin/lib/log.aardio
@@ -0,0 +1,40 @@
+// log 日志
+import fsys
+import fsys.log
+import time
+
+var getToday = function(){
+ var $now = time.now() //当前时间
+ return "" ++ $now.year ++ $now.month ++ $now.day
+}
+
+var todayLogFile = function( name ) {
+
+ var appDataPath = string.getenv("APPDATA");
+ var appPath = appDataPath ++ "/" ++ name;
+ if (! io.exist( appPath )) {
+ fsys.createDir( appPath )
+ }
+ return appPath ++ "/" ++ name ++ "." ++ getToday() ++ ".log"
+}
+
+
+class log {
+ ctor( name ){
+
+ path = todayLogFile(name);
+
+ this = ..fsys.log(path) //调用基类构造对象原型
+ this.basePrint = this.print;
+ };
+
+ print = function(...){
+ var t = ..time.now()
+ t.format="%Y%m%d-%H%M%S ";
+
+ var args = {...}
+ ..table.insert(args, tostring(t)) // 通常时间非重要信息,以...作视觉区分方便查看
+
+ this.basePrint( ..table.unpack(args) )
+ };
+}
\ No newline at end of file
diff --git a/aardiowin/main.aardio b/aardiowin/main.aardio
index 41efce4..d99e48b 100644
--- a/aardiowin/main.aardio
+++ b/aardiowin/main.aardio
@@ -1,85 +1,48 @@
-import win.ui;
-
-/*
-
-载入配置,配置文件读取顺序,后读的可以覆盖先读的值。
-1. 读取当前路径下的 config.json
-2. 读取 %APPDATA%/%app% 路径下的 config.json。其中 %APPDATA% 为操作系统提供的当前用户软件目录。
- %app% 为当前路径下的 config.json 中配置的 app
-
-*/
-gConfig = {}
-// 使用示例
-try {
- gConfig = loadConfigs()
- console.log(configs);
-} catch (e) {
- console.error(e.message);
-}
-
-/*DSG{{*/
-mainForm = win.form(text="awin";right=759;bottom=469)
-mainForm.add()
-/*}}*/
-
-import web.view;
-var theView = web.view(mainForm);
-
-//导出为 JavaScript 中的 aardio 对象
-theView.external = {
- onCounterUpdate = function(name,value){
- if(name!==null && value!==null){
- return "aardio 返回的值:网页中 React 状态值改变了:value:"+value;
- }
- };
-}
-
-import wsock.tcp.simpleHttpServer;
-/*
-如果导入 simpleHttpServer,则单个斜杠开头的路径会转换为嵌入式 HTTP 地址,
-如果同时文件名为 index.html ,则上级目录自动设为根目录,前端应用发布根目录使用默认的 "/" 即可,不需要改动。
-
-去掉下面的前端项目调试端口号 37151 或发布 EXE 后运行才会打开 "\web\index.html"。
-否则打开 http://localhost:37151
-*/
-theView.go("\web\index.html",37151);
-
-mainForm.show();
-win.loopMessage();
-
-
-// 配置载入函数
-function loadConfigs() {
- var configs = {};
- var currentPath = file.dir();
- var appDataPath = env.get("APPDATA");
-
- // 读取当前路径下的 config.json
- var currentConfigPath = file.path(currentPath, "config.json");
- if (file.exists(currentConfigPath)) {
- var currentConfigContent = file.read(currentConfigPath);
- configs = json.parse(currentConfigContent);
- }
-
- // 从当前路径下的 config.json 中读取 app 值
- var appValue = configs.app;
- if (!appValue) {
- error("'app' value not found in the config file.");
- }
-
- // 构建 %APPDATA%/%app% 路径
- var appDataConfigPath = file.path(appDataPath, appValue, "config.json");
-
- // 读取 %APPDATA%/%app% 路径下的 config.json
- if (file.exists(appDataConfigPath)) {
- var appDataConfigContent = file.read(appDataConfigPath);
- var appDataConfig = json.parse(appDataConfigContent);
-
- // 合并配置,后读取的覆盖先读取的
- object.merge(configs, appDataConfig, true);
- }
-
- return configs;
-}
-
-
+import win.ui;
+import init;
+
+
+// 初始化
+init.init();
+var gConfig = init.loadConfigs();
+var gDebug = init.getDebug();
+
+/*DSG{{*/
+mainForm = win.form(text="awin";right=gConfig.window.width;bottom=gConfig.window.height;border="thin";max=false;min=false)
+mainForm.add()
+/*}}*/
+
+
+// 启动界面
+var gLog = init.getLog();
+gLog.print("web view")
+import web.view;
+var theView = web.view(mainForm);
+
+//导出为 JavaScript 中的 aardio 对象
+theView.external = {
+ onCounterUpdate = function(name,value){
+ if(name!==null && value!==null){
+ return "aardio 返回的值:网页中 React 状态值改变了:value:"+value;
+ }
+ };
+}
+
+import wsock.tcp.simpleHttpServer;
+/*
+如果导入 simpleHttpServer,则单个斜杠开头的路径会转换为嵌入式 HTTP 地址,
+如果同时文件名为 index.html ,则上级目录自动设为根目录,前端应用发布根目录使用默认的 "/" 即可,不需要改动。
+
+去掉下面的前端项目调试端口号 37151 或发布 EXE 后运行才会打开 "\web\index.html"。
+否则打开 http://localhost:37151
+*/
+if( gDebug ){
+ theView.go("\web\index.html",37151);
+} else {
+ theView.go("\web\index.html");
+}
+
+
+mainForm.show();
+win.loopMessage();
+
diff --git a/aardiowin/web/index.html b/aardiowin/web/index.html
index 5ee197e..e425ad8 100644
--- a/aardiowin/web/index.html
+++ b/aardiowin/web/index.html
@@ -1,15 +1,34 @@
-
-
-
-
-
-
-请在工程中右键点击「网页源码」目录,
-然后在弹出菜单中点击「用外部编辑器」打开。
-
-在 VSCode 中打开以后,运行 npm install 安装依赖,
-然后再运行 npm run build 编译网页代码。
-
-最后在 aardio 中点击发布生成 EXE 文件。
-
+
+
+
+
+
+
+
+
+
+AWin 已经启动,但是 AWin 只是一个没有灵魂的外壳,这里需要被正确替换成真正的应用~
+
\ No newline at end of file