gaoshuaixing 4 лет назад
Родитель
Сommit
9ca55d4472
43 измененных файлов с 102 добавлено и 68 удалено
  1. 9 2
      app/controller/v1/example.js
  2. 0 0
      app/public/css/app.fe43ef51.css
  3. 7 0
      app/public/css/chunk-vendors.772973ad.css
  4. 0 7
      app/public/css/chunk-vendors.a1538f74.css
  5. 1 1
      app/public/index.html
  6. 0 0
      app/public/js/app.2415b90d.js
  7. 0 0
      app/public/js/app.2415b90d.js.map
  8. 0 0
      app/public/js/app.888a1909.js
  9. 0 0
      app/public/js/app.888a1909.js.map
  10. 0 2
      app/public/js/chunk-23265f79.d92214d0.js
  11. 0 0
      app/public/js/chunk-23265f79.d92214d0.js.map
  12. 2 0
      app/public/js/chunk-23265f79.dccf40ba.js
  13. 0 0
      app/public/js/chunk-23265f79.dccf40ba.js.map
  14. 0 2
      app/public/js/chunk-2d21dff5.42546cd8.js
  15. 0 0
      app/public/js/chunk-2d21dff5.42546cd8.js.map
  16. 2 0
      app/public/js/chunk-2d21dff5.d4e9132e.js
  17. 0 0
      app/public/js/chunk-2d21dff5.d4e9132e.js.map
  18. 0 0
      app/public/js/chunk-707f4980.46929655.js
  19. 0 0
      app/public/js/chunk-707f4980.46929655.js.map
  20. 0 0
      app/public/js/chunk-85272794.640722ac.js
  21. 0 0
      app/public/js/chunk-85272794.970e0865.js
  22. 0 0
      app/public/js/chunk-85272794.970e0865.js.map
  23. 0 0
      app/public/js/chunk-a6b58366.2e8aaddc.js
  24. 0 0
      app/public/js/chunk-a6b58366.2e8aaddc.js.map
  25. 2 0
      app/public/js/chunk-c46107aa.48db94b2.js
  26. 0 0
      app/public/js/chunk-c46107aa.48db94b2.js.map
  27. 0 0
      app/public/js/chunk-ef3e31dc.3818e3b8.js
  28. 0 0
      app/public/js/chunk-ef3e31dc.3818e3b8.js.map
  29. 2 0
      app/public/js/chunk-ef3e31dc.e9734e9a.js
  30. 0 0
      app/public/js/chunk-ef3e31dc.e9734e9a.js.map
  31. 0 0
      app/public/js/chunk-vendors.9d7d716c.js.map
  32. 0 0
      app/public/js/chunk-vendors.d177cae3.js
  33. 0 0
      app/public/js/chunk-vendors.d177cae3.js.map
  34. 3 2
      app/service/example.js
  35. 1 1
      app/view/index.ejs
  36. BIN
      build/extraResources/powershelld.exe
  37. 46 2
      electron/apis/example.js
  38. 0 22
      frontend/src/api/main.js
  39. 1 1
      frontend/src/views/Layout.vue
  40. 8 8
      frontend/src/views/example/Ipc.vue
  41. 5 6
      frontend/src/views/example/OpenDir.vue
  42. 6 9
      frontend/src/views/example/OpenSoftware.vue
  43. 7 3
      package.json

+ 9 - 2
app/controller/v1/example.js

@@ -82,6 +82,7 @@ class ExampleController extends BaseController {
 
     if (!shortcutObj['id'] || !shortcutObj['name'] || !shortcutObj['cmd']) {
       self.sendFail({}, 'param error', 100);
+      return;
     }
 
     await service.example.setShortcut(shortcutObj);
@@ -182,11 +183,17 @@ class ExampleController extends BaseController {
     this.sendSuccess(data);
   }
 
+  /**
+   * 调用其它程序
+   */
   async openSoftware() {
     const { service } = this;
     const data = {};
-    await service.example.openSoftware('powershell.exe');
-
+    const openResult = await service.example.openSoftware('powershell.exe');
+    if (!openResult) {
+      this.sendFail({}, '程序不存在', 100);
+      return;
+    }
     this.sendSuccess(data);
   }
 }

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/css/app.fe43ef51.css


Разница между файлами не показана из-за своего большого размера
+ 7 - 0
app/public/css/chunk-vendors.772973ad.css


Разница между файлами не показана из-за своего большого размера
+ 0 - 7
app/public/css/chunk-vendors.a1538f74.css


+ 1 - 1
app/public/index.html

@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>electron-egg</title><link href="/css/chunk-85272794.56abef7d.css" rel="prefetch"><link href="/js/chunk-23265f79.d92214d0.js" rel="prefetch"><link href="/js/chunk-2d21dff5.42546cd8.js" rel="prefetch"><link href="/js/chunk-707f4980.46929655.js" rel="prefetch"><link href="/js/chunk-85272794.640722ac.js" rel="prefetch"><link href="/js/chunk-ef3e31dc.3818e3b8.js" rel="prefetch"><link href="/css/app.c79dd55d.css" rel="preload" as="style"><link href="/css/chunk-vendors.a1538f74.css" rel="preload" as="style"><link href="/js/app.888a1909.js" rel="preload" as="script"><link href="/js/chunk-vendors.9d7d716c.js" rel="preload" as="script"><link href="/css/chunk-vendors.a1538f74.css" rel="stylesheet"><link href="/css/app.c79dd55d.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but electron-egg doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.9d7d716c.js"></script><script src="/js/app.888a1909.js"></script></body></html>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>electron-egg</title><link href="/css/chunk-85272794.56abef7d.css" rel="prefetch"><link href="/js/chunk-23265f79.dccf40ba.js" rel="prefetch"><link href="/js/chunk-2d21dff5.d4e9132e.js" rel="prefetch"><link href="/js/chunk-85272794.970e0865.js" rel="prefetch"><link href="/js/chunk-a6b58366.2e8aaddc.js" rel="prefetch"><link href="/js/chunk-c46107aa.48db94b2.js" rel="prefetch"><link href="/js/chunk-ef3e31dc.e9734e9a.js" rel="prefetch"><link href="/css/app.fe43ef51.css" rel="preload" as="style"><link href="/css/chunk-vendors.772973ad.css" rel="preload" as="style"><link href="/js/app.2415b90d.js" rel="preload" as="script"><link href="/js/chunk-vendors.d177cae3.js" rel="preload" as="script"><link href="/css/chunk-vendors.772973ad.css" rel="stylesheet"><link href="/css/app.fe43ef51.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but electron-egg doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.d177cae3.js"></script><script src="/js/app.2415b90d.js"></script></body></html>

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/app.2415b90d.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/app.2415b90d.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/app.888a1909.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/app.888a1909.js.map


+ 0 - 2
app/public/js/chunk-23265f79.d92214d0.js

@@ -1,2 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-23265f79"],{"5cb9":function(t,e,n){"use strict";n.r(e);var o=function(){var t=this,e=t.$createElement,n=t._self._c||e;return n("div",[n("h3",{style:{marginBottom:"16px"}},[t._v(" demo1 打开文件夹实现 ")]),n("a-list",{attrs:{bordered:"","data-source":t.data},scopedSlots:t._u([{key:"renderItem",fn:function(e){return n("a-list-item",{on:{click:function(n){return t.openDirectry(e.id)}}},[t._v(" "+t._s(e.content)+" "),n("a-button",{attrs:{type:"link"}},[t._v(" 打开 ")])],1)}}])})],1)},a=[],u=n("a358"),c=[{content:"【下载】目录",id:"download"},{content:"【图片】目录",id:"picture"},{content:"【文档】目录",id:"doc"},{content:"【音乐】目录",id:"music"}],i={data:function(){return{data:c}},methods:{openDirectry:function(t){console.log("id:",t);var e={id:t};Object(u["c"])(e).then((function(t){if(0!==t.code)return!1})).catch((function(t){console.log("err:",t)}))}}},r=i,d=n("2877"),l=Object(d["a"])(r,o,a,!1,null,null,null);e["default"]=l.exports},a358:function(t,e,n){"use strict";n.d(e,"b",(function(){return u})),n.d(e,"c",(function(){return c})),n.d(e,"a",(function(){return i}));var o=n("b775"),a={outApi:"/api/v1/outApi",openDir:"/api/v1/example/openLocalDir",uploadFile:"/api/v1/example/uploadFile",executeJS:"/api/v1/example/executeJS",setShortcut:"/api/v1/example/setShortcut",autoLaunchEnable:"/api/v1/setting/autoLaunchEnable",autoLaunchDisable:"/api/v1/setting/autoLaunchDisable",autoLaunchIsEnabled:"/api/v1/setting/autoLaunchIsEnabled"};function u(t,e){return Object(o["b"])({url:a[t],method:"post",data:e})}function c(t){return Object(o["b"])({url:a.openDir,method:"post",data:t})}function i(t){return Object(o["b"])({url:a.executeJS,method:"post",data:t})}}}]);
-//# sourceMappingURL=chunk-23265f79.d92214d0.js.map

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-23265f79.d92214d0.js.map


+ 2 - 0
app/public/js/chunk-23265f79.dccf40ba.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-23265f79"],{"5cb9":function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("h3",{style:{marginBottom:"16px"}},[e._v(" demo1 打开文件夹实现 ")]),n("a-list",{attrs:{bordered:"","data-source":e.data},scopedSlots:e._u([{key:"renderItem",fn:function(t){return n("a-list-item",{on:{click:function(n){return e.openDirectry(t.id)}}},[e._v(" "+e._s(t.content)+" "),n("a-button",{attrs:{type:"link"}},[e._v(" 打开 ")])],1)}}])})],1)},o=[],i=n("a358"),c=[{content:"【下载】目录",id:"download"},{content:"【图片】目录",id:"picture"},{content:"【文档】目录",id:"doc"},{content:"【音乐】目录",id:"music"}],u={data:function(){return{data:c}},methods:{openDirectry:function(e){console.log("id:",e);var t={id:e};Object(i["a"])("openDir",t).then((function(e){if(0!==e.code)return!1})).catch((function(e){console.log("err:",e)}))}}},r=u,l=n("2877"),p=Object(l["a"])(r,a,o,!1,null,null,null);t["default"]=p.exports},a358:function(e,t,n){"use strict";n.d(t,"a",(function(){return i}));var a=n("b775"),o={outApi:"/api/v1/outApi",openDir:"/api/v1/example/openLocalDir",uploadFile:"/api/v1/example/uploadFile",executeJS:"/api/v1/example/executeJS",setShortcut:"/api/v1/example/setShortcut",autoLaunchEnable:"/api/v1/example/autoLaunchEnable",autoLaunchDisable:"/api/v1/example/autoLaunchDisable",autoLaunchIsEnabled:"/api/v1/example/autoLaunchIsEnabled",openSoftware:"/api/v1/example/openSoftware"};function i(e,t){return Object(a["b"])({url:o[e],method:"post",data:t})}}}]);
+//# sourceMappingURL=chunk-23265f79.dccf40ba.js.map

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-23265f79.dccf40ba.js.map


+ 0 - 2
app/public/js/chunk-2d21dff5.42546cd8.js

@@ -1,2 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d21dff5"],{d44c:function(e,a,t){"use strict";t.r(a);var l=function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("div",[t("h3",{style:{marginBottom:"16px"}},[e._v(" demo2 上传文件到sm图床实现 ")]),t("a-upload-dragger",{attrs:{name:"file",multiple:!0,action:e.action_url},on:{change:e.handleChange}},[t("p",{staticClass:"ant-upload-drag-icon"},[t("a-icon",{attrs:{type:"inbox"}})],1),t("p",{staticClass:"ant-upload-text"},[e._v(" Click or drag file to this area to upload ")]),t("p",{staticClass:"ant-upload-hint"},[e._v(" Support for a single or bulk upload. Strictly prohibit from uploading company data or other band files ")])]),t("p"),0!==e.image_info.length?t("a-list",{attrs:{size:"small",bordered:"","data-source":e.image_info},scopedSlots:e._u([{key:"renderItem",fn:function(a){return t("a-list-item",{staticStyle:{"text-align":"left"}},[e._v(" "+e._s(a.id)+". "+e._s(a.imageUrlText)+": "),t("a",{attrs:{href:a.url,target:"_blank"}},[e._v(e._s(a.url))])])}}],null,!1,1795190281)}):e._e()],1)},i=[],o=(t("b0c0"),{data:function(){return{action_url:"/api/v1/example/uploadFile",image_info:[],num:0}},methods:{handleChange:function(e){var a=e.file.status;if("uploading"!==a&&console.log(e.file),"done"===a){var t=e.file.response;if(console.log("uploadRes:",t),"success"!==t.code)return this.$message.error("file upload failed ".concat(t.code," .")),!1;this.num++;var l=t.data;l.id=this.num,l.imageUrlText="image url",this.image_info.push(l),this.$message.success("".concat(e.file.name," file uploaded successfully."))}else"error"===a&&this.$message.error("".concat(e.file.name," file upload failed."))}}}),n=o,s=t("2877"),r=Object(s["a"])(n,l,i,!1,null,null,null);a["default"]=r.exports}}]);
-//# sourceMappingURL=chunk-2d21dff5.42546cd8.js.map

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-2d21dff5.42546cd8.js.map


+ 2 - 0
app/public/js/chunk-2d21dff5.d4e9132e.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d21dff5"],{d44c:function(e,a,t){"use strict";t.r(a);var l=function(){var e=this,a=e.$createElement,t=e._self._c||a;return t("div",[t("h3",{style:{marginBottom:"16px"}},[e._v(" demo2 上传文件到sm图床实现 ")]),t("a-upload-dragger",{attrs:{name:"file",multiple:!0,action:e.action_url},on:{change:e.handleChange}},[t("p",{staticClass:"ant-upload-drag-icon"},[t("a-icon",{attrs:{type:"inbox"}})],1),t("p",{staticClass:"ant-upload-text"},[e._v(" Click or drag file to this area to upload ")]),t("p",{staticClass:"ant-upload-hint"},[e._v(" Support for a single or bulk upload. Strictly prohibit from uploading company data or other band files ")])]),t("p"),0!==e.image_info.length?t("a-list",{attrs:{size:"small",bordered:"","data-source":e.image_info},scopedSlots:e._u([{key:"renderItem",fn:function(a){return t("a-list-item",{staticStyle:{"text-align":"left"}},[e._v(" "+e._s(a.id)+". "+e._s(a.imageUrlText)+":  "),t("a",{attrs:{href:a.url,target:"_blank"}},[e._v(e._s(a.url))])])}}],null,!1,1145998633)}):e._e()],1)},i=[],o=(t("b0c0"),{data:function(){return{action_url:"/api/v1/example/uploadFile",image_info:[],num:0}},methods:{handleChange:function(e){var a=e.file.status;if("uploading"!==a&&console.log(e.file),"done"===a){var t=e.file.response;if(console.log("uploadRes:",t),"success"!==t.code)return this.$message.error("file upload failed ".concat(t.code," .")),!1;this.num++;var l=t.data;l.id=this.num,l.imageUrlText="image url",this.image_info.push(l),this.$message.success("".concat(e.file.name," file uploaded successfully."))}else"error"===a&&this.$message.error("".concat(e.file.name," file upload failed."))}}}),n=o,s=t("2877"),r=Object(s["a"])(n,l,i,!1,null,null,null);a["default"]=r.exports}}]);
+//# sourceMappingURL=chunk-2d21dff5.d4e9132e.js.map

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-2d21dff5.d4e9132e.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-707f4980.46929655.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-707f4980.46929655.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-85272794.640722ac.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-85272794.970e0865.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-85272794.970e0865.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-a6b58366.2e8aaddc.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-a6b58366.2e8aaddc.js.map


+ 2 - 0
app/public/js/chunk-c46107aa.48db94b2.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-c46107aa"],{"75b7":function(e,t,a){"use strict";a.r(t);var n=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",[a("h3",{style:{marginBottom:"16px"}},[e._v(" demo5 调用其它软件(exe、bash等可执行程序) ")]),e._v(" 注:请先将【powershell.exe】复制到【electron-egg/build/extraResources】目录中 "),a("a-list",{attrs:{bordered:"","data-source":e.data},scopedSlots:e._u([{key:"renderItem",fn:function(t){return a("a-list-item",{on:{click:function(a){return e.openSoft(t.id)}}},[e._v(" "+e._s(t.content)+" "),a("a-button",{attrs:{type:"link"}},[e._v(" 执行 ")])],1)}}])})],1)},o=[],u=a("a358"),i=[{content:"powershell.exe",id:"powershell"}],l={data:function(){return{data:i}},methods:{openSoft:function(e){var t=this;console.log("id:",e),Object(u["a"])("openSoftware",{}).then((function(e){if(0!==e.code)return t.$message.info(e.msg),!1})).catch((function(e){console.log("err:",e)}))}}},r=l,c=a("2877"),p=Object(c["a"])(r,n,o,!1,null,null,null);t["default"]=p.exports},a358:function(e,t,a){"use strict";a.d(t,"a",(function(){return u}));var n=a("b775"),o={outApi:"/api/v1/outApi",openDir:"/api/v1/example/openLocalDir",uploadFile:"/api/v1/example/uploadFile",executeJS:"/api/v1/example/executeJS",setShortcut:"/api/v1/example/setShortcut",autoLaunchEnable:"/api/v1/example/autoLaunchEnable",autoLaunchDisable:"/api/v1/example/autoLaunchDisable",autoLaunchIsEnabled:"/api/v1/example/autoLaunchIsEnabled",openSoftware:"/api/v1/example/openSoftware"};function u(e,t){return Object(n["b"])({url:o[e],method:"post",data:t})}}}]);
+//# sourceMappingURL=chunk-c46107aa.48db94b2.js.map

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-c46107aa.48db94b2.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-ef3e31dc.3818e3b8.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-ef3e31dc.3818e3b8.js.map


+ 2 - 0
app/public/js/chunk-ef3e31dc.e9734e9a.js

@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-ef3e31dc"],{a358:function(e,t,n){"use strict";n.d(t,"a",(function(){return l}));var a=n("b775"),o={outApi:"/api/v1/outApi",openDir:"/api/v1/example/openLocalDir",uploadFile:"/api/v1/example/uploadFile",executeJS:"/api/v1/example/executeJS",setShortcut:"/api/v1/example/setShortcut",autoLaunchEnable:"/api/v1/example/autoLaunchEnable",autoLaunchDisable:"/api/v1/example/autoLaunchDisable",autoLaunchIsEnabled:"/api/v1/example/autoLaunchIsEnabled",openSoftware:"/api/v1/example/openSoftware"};function l(e,t){return Object(a["b"])({url:o[e],method:"post",data:t})}},a90d:function(e,t,n){"use strict";n.r(t);var a=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",[n("div",[n("h3",{style:{marginBottom:"16px"}},[e._v(" demo3-1 渲染进程与主进程IPC通信 ")]),n("a-list",{attrs:{bordered:""}},[n("a-input-search",{on:{search:e.helloHandle},model:{value:e.content,callback:function(t){e.content=t},expression:"content"}},[n("a-button",{attrs:{slot:"enterButton"},slot:"enterButton"},[e._v(" send ")])],1)],1)],1),n("div",{staticStyle:{"margin-top":"20px"}},[n("h3",{style:{marginBottom:"16px"}},[e._v(" demo3-2 主进程API执行网页函数 ")]),n("a-list",{attrs:{bordered:""}},[n("a-input-search",{on:{search:e.executeJSHandle},model:{value:e.content2,callback:function(t){e.content2=t},expression:"content2"}},[n("a-button",{attrs:{slot:"enterButton"},slot:"enterButton"},[e._v(" send ")])],1)],1)],1)])},o=[],l=n("a358"),c={data:function(){return{content:"hello",content2:"hello world",reply:""}},methods:{helloHandle:function(e){var t=this;this.$callMain("example.hello",e).then((function(e){t.$message.info(e)}))},executeJSHandle:function(e){Object(l["a"])("executeJS",{str:e}).then((function(e){0==e.code&&console.log(e.data)})).catch((function(e){console.log("err:",e)}))}}},u=c,i=n("2877"),r=Object(i["a"])(u,a,o,!1,null,null,null);t["default"]=r.exports}}]);
+//# sourceMappingURL=chunk-ef3e31dc.e9734e9a.js.map

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-ef3e31dc.e9734e9a.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-vendors.9d7d716c.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-vendors.d177cae3.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
app/public/js/chunk-vendors.d177cae3.js.map


+ 3 - 2
app/service/example.js

@@ -79,8 +79,9 @@ class ExampleService extends BaseService {
   }
 
   async openSoftware(softName) {
-    let result = await this.ipcCall('example.openSoftware', softName);
-    return result;
+    const callResult = await this.ipcCall('example.openSoftware', softName);
+    
+    return callResult.data;
   }
 }
 

+ 1 - 1
app/view/index.ejs

@@ -1 +1 @@
-<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>electron-egg</title><link href="/css/chunk-85272794.56abef7d.css" rel="prefetch"><link href="/js/chunk-23265f79.d92214d0.js" rel="prefetch"><link href="/js/chunk-2d21dff5.42546cd8.js" rel="prefetch"><link href="/js/chunk-707f4980.46929655.js" rel="prefetch"><link href="/js/chunk-85272794.640722ac.js" rel="prefetch"><link href="/js/chunk-ef3e31dc.3818e3b8.js" rel="prefetch"><link href="/css/app.c79dd55d.css" rel="preload" as="style"><link href="/css/chunk-vendors.a1538f74.css" rel="preload" as="style"><link href="/js/app.888a1909.js" rel="preload" as="script"><link href="/js/chunk-vendors.9d7d716c.js" rel="preload" as="script"><link href="/css/chunk-vendors.a1538f74.css" rel="stylesheet"><link href="/css/app.c79dd55d.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but electron-egg doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.9d7d716c.js"></script><script src="/js/app.888a1909.js"></script></body></html>
+<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="/favicon.ico"><title>electron-egg</title><link href="/css/chunk-85272794.56abef7d.css" rel="prefetch"><link href="/js/chunk-23265f79.dccf40ba.js" rel="prefetch"><link href="/js/chunk-2d21dff5.d4e9132e.js" rel="prefetch"><link href="/js/chunk-85272794.970e0865.js" rel="prefetch"><link href="/js/chunk-a6b58366.2e8aaddc.js" rel="prefetch"><link href="/js/chunk-c46107aa.48db94b2.js" rel="prefetch"><link href="/js/chunk-ef3e31dc.e9734e9a.js" rel="prefetch"><link href="/css/app.fe43ef51.css" rel="preload" as="style"><link href="/css/chunk-vendors.772973ad.css" rel="preload" as="style"><link href="/js/app.2415b90d.js" rel="preload" as="script"><link href="/js/chunk-vendors.d177cae3.js" rel="preload" as="script"><link href="/css/chunk-vendors.772973ad.css" rel="stylesheet"><link href="/css/app.fe43ef51.css" rel="stylesheet"></head><body><noscript><strong>We're sorry but electron-egg doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id="app"></div><script src="/js/chunk-vendors.d177cae3.js"></script><script src="/js/app.2415b90d.js"></script></body></html>

BIN
build/extraResources/powershelld.exe


+ 46 - 2
electron/apis/example.js

@@ -1,15 +1,24 @@
 'use strict';
 
 const path = require('path');
+const fs = require('fs');
+const {exec} = require('child_process');
 const {app, webContents, shell} = require('electron');
 const AutoLaunchManager = require('../lib/autoLaunch');
 const shortcut = require('../lib/shortcut');
+const eLogger = require('../lib/eLogger').get();
 
+/**
+ * app根目录
+ */
 exports.getPath = function () {
   const dir = app.getAppPath();
   return dir;
 }
 
+/**
+ * 打开目录
+ */
 exports.openDir = function (dir = '') {
   if (!dir) {
     return false;
@@ -19,12 +28,18 @@ exports.openDir = function (dir = '') {
   return true;
 }
 
+/**
+ * 执行js
+ */
 exports.executeJS = function (str) {
   let jscode = `(()=>{alert('${str}');return 'fromJs:${str}';})()`;
   console.log(jscode);
   return webContents.fromId(1).executeJavaScript(jscode);
 }
 
+/**
+ * 快捷键-注册
+ */
 exports.setShortcut = function (shortcutObj) {
   shortcut.register(shortcutObj, true, function (){
     MAIN_WINDOW.hide()
@@ -33,31 +48,60 @@ exports.setShortcut = function (shortcutObj) {
   return true;
 }
 
+/**
+ * 开机启动-开启
+ */
 exports.autoLaunchEnable = function () {
   const autoLaunchManager = new AutoLaunchManager()
   const enable = autoLaunchManager.enable()
   return enable
 }
 
+/**
+ * 开机启动-关闭
+ */
 exports.autoLaunchDisable = function () {
   const autoLaunchManager = new AutoLaunchManager()
   const disable = autoLaunchManager.disable()
   return disable
 }
 
+/**
+ * 开机启动-是否开启
+ */
 exports.autoLaunchIsEnabled = function () {
   const autoLaunchManager = new AutoLaunchManager()
   const isEnable = autoLaunchManager.isEnabled()
   return isEnable
 }
 
+/**
+ * 调用其它程序(exe、bash等可执行程序)
+ */
 exports.openSoftware = function (softName = '') {
   if (!softName) {
     return false;
   }
 
-  let powershellPath = path.join(app.getAppPath(), "..", "tmp", softName);
-  console.log(powershellPath);
+  // 资源路径不同
+  let softwarePath = '';
+  if (app.isPackaged) {
+    // 打包后
+    softwarePath = path.join(app.getAppPath(), "extraResources", softName);
+  } else {
+    // 打包前
+    softwarePath = path.join(app.getAppPath(), "build", "extraResources", softName);
+  }
+  console.log(softwarePath);
+  eLogger.info('[example] [openSoftware] softwarePath:', softwarePath);
+
+  // 检查程序是否存在
+  if (!fs.existsSync(softwarePath)) {
+    return false;
+  }
+  // 命令行字符串 并 执行
+  let cmdStr = 'start ' + softwarePath;
+  exec(cmdStr);
 
   return true;
 }

+ 0 - 22
frontend/src/api/main.js

@@ -36,17 +36,6 @@ export function localApi (uri, parameter) {
 }
 
 /**
- * openDir
- */
-export function openDir (parameter) {
-  return request({
-    url: mainApi.openDir,
-    method: 'post',
-    data: parameter
-  })
-}
-
-/**
  * uploadFile
  */
 export function uploadFile (parameter) {
@@ -55,15 +44,4 @@ export function uploadFile (parameter) {
     method: 'post',
     data: parameter
   })
-}
-
-/**
- * executeJS
- */
-export function executeJS (parameter) {
-  return request({
-    url: mainApi.executeJS,
-    method: 'post',
-    data: parameter
-  })
 }

+ 1 - 1
frontend/src/views/Layout.vue

@@ -75,7 +75,7 @@ export default {
             params: {},
           },
           'subMenu_5' : {
-            title: '打开其它软件',
+            title: '调用其它软件',
             pageName: 'OpenSoftware',
             params: {},
           }

+ 8 - 8
frontend/src/views/example/Ipc.vue

@@ -28,7 +28,7 @@
   </div>
 </template>
 <script>
-import { executeJS } from '@/api/main'
+import { localApi } from '@/api/main'
 export default {
   data() {
     return {
@@ -45,13 +45,13 @@ export default {
       })
     },
     executeJSHandle(value) {
-        executeJS({str: value}).then(res => {
-          if (res.code == 0) {
-            console.log(res.data);
-          }
-        }).catch(err => {
-          console.log('err:', err)
-        })
+      localApi('executeJS', {str: value}).then(res => {
+        if (res.code == 0) {
+          console.log(res.data);
+        }
+      }).catch(err => {
+        console.log('err:', err)
+      })
     }
   }
 }

+ 5 - 6
frontend/src/views/example/OpenDir.vue

@@ -14,7 +14,7 @@
   </div>
 </template>
 <script>
-import { openDir } from '@/api/main'
+import { localApi } from '@/api/main'
 
 const data = [
   {
@@ -47,14 +47,13 @@ export default {
       const params = {
         'id': id
       }
-      openDir(params).then(res => {
+      localApi('openDir', params).then(res => {
         if (res.code !== 0) {
           return false
         }
-
-        }).catch(err => {
-          console.log('err:', err)
-        })
+      }).catch(err => {
+        console.log('err:', err)
+      })
     },
   }
 };

+ 6 - 9
frontend/src/views/example/OpenSoftware.vue

@@ -1,13 +1,14 @@
 <template>
   <div>
     <h3 :style="{ marginBottom: '16px' }">
-      demo5 打开其它软件
+      demo5 调用其它软件(exe、bash等可执行程序)
     </h3>
+    注:请先将【powershell.exe】复制到【electron-egg/build/extraResources】目录中
     <a-list bordered :data-source="data">
       <a-list-item @click="openSoft(item.id)" slot="renderItem" slot-scope="item">
         {{ item.content }}
         <a-button type="link">
-          打开
+          执行
         </a-button>
       </a-list-item>
     </a-list>
@@ -31,16 +32,12 @@ export default {
   },
   methods: {
     openSoft (id) {
-      console.log('id:', id)
-      const params = {
-        'id': id
-      }
-			localApi('openSoftware', params).then(res => {
+      console.log('id:', id);
+			localApi('openSoftware', {}).then(res => {
 				if (res.code !== 0) {
-					// this.$message.info('error')
+					this.$message.info(res.msg)
 					return false
 				}
-				this.$message.info('成功')
 			}).catch(err => {
 				console.log('err:', err)
 			})

+ 7 - 3
package.json

@@ -29,6 +29,10 @@
     "files": [
       "**/*"
     ],
+    "extraResources":  {
+      "from": "./build/extraResources/",
+      "to": "extraResources"
+    },
     "electronDownload": {
       "mirror": "https://npm.taobao.org/mirrors/electron/"
     },
@@ -50,7 +54,7 @@
       }
     ],
     "mac": {
-      "icon": "build/icons/icon.icns",
+      "icon": "./build/icons/icon.icns",
       "artifactName": "${productName}-macos-${version}.${ext}",
       "target": [
         "dmg",
@@ -58,7 +62,7 @@
       ]
     },
     "win": {
-      "icon": "build/icons/icon.ico",
+      "icon": "./build/icons/icon.ico",
       "artifactName": "${productName}-windows-${version}.${ext}",
       "target": [
         {
@@ -67,7 +71,7 @@
       ]
     },
     "linux": {
-      "icon": "build/icons/256x256.png",
+      "icon": "./build/icons/256x256.png",
       "artifactName": "${productName}-linux-${version}.${ext}",
       "target": [
         "deb"

Некоторые файлы не были показаны из-за большого количества измененных файлов