welsonjs/README.md
2024-09-15 23:29:51 +09:00

12 KiB

welsonjs

FOSSA Status AppVeyor Status DOI

WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.

(Cover Image) Windows in 1999

Now, You can build an Windows desktop app with JavaScript, TypeScript, CoffeeScript, ReScript, and HTML/CSS on Windows built-in ECMAScript engine.

WelsonJS = Windows + Electron-like + Javascript(JS) + Your contribution

Dual license notice: The default license for this project is GPL 3.0. However, if the GPL 3.0 license is not compatible with Microsoft products, it is subject to the MS-RL license.

Structure

Structure Overview

Specifications

Included modules

  • lib/std (Standard library)
  • lib/system (System interface)
  • lib/base64 (BASE64 encode and decode)
  • lib/file (File I/O interface)
  • lib/http (HTTP client with XHR(MSXML), cURL, BITS, CERT)
  • lib/registry (Windows Registry interface)
  • lib/security (Windows Security Policy interface)
  • lib/shell (Windows Shell (Command Prompt) interface)
  • lib/powershell (Windows Powershell interface)
  • lib/service (Windows Service interface)
  • lib/browser (Modern web compatibility layer)
  • lib/uri (URI scheme interface)
  • lib/winlibs (Windows DLL(Dynamic-link library) interface)
  • lib/autohotkey (AutoHotkey interface)
  • lib/autoit (AutoIt3/AutoItX interface)
  • lib/msoffice (Microsoft Office (e.g. Excel, PowerPoint, Word) interface)
  • lib/gtk (GTK-server and GladeXML supported GUI interface)
  • lib/chrome (Chrome DevTools Protocol based Chrome/Chromium web browser testing interface)
  • lib/pipe-ipc (PIPE (e.g., File IO, Standard IO) based IPC(Inter-Process Communication) implementation)
  • WelsonJS.Toolkit (DLL/COM component with .NET 2.0, For all Windows based systems)
    • User prompt methods (e.g., alert, confirm) implementation
    • Useful tools to control the windows and window handle (find, attach, trigger events. e.g., Virtual Human Interface
    • Cryptography (ISO/IEC 18033-3:2010 aka. HIGHT)
    • Named Shared Memory based IPC(Inter-Process Communication) implementation #
  • WelsonJS.Service (Windows Service Application, For recent Windows based systems)
    • Write a Windows Service Application with JavaScript
    • File Event Monitor: Trace file creation, network connections, and registry modifications.
    • Screen Time Feature: Find an image position on the computer screens or windows.
  • WelsonJS.Launcher (Launcher Application, For recent Windows based systems)
    • This is a launcher app designed to easily distribute WelsonJS application packages (based on ZIP compression files).
  • lib/chatgpt (ChatGPT integration)
  • Everything you can imagine.

Make your own sayhello example

1. Write a file lib/sayhello.js

// lib/sayhello.js
function say() {
    console.log("hello");
}

exports.say = say;

exports.VERSIONINFO = "SayHello Library (sayhello.js) version 0.1";
exports.AUTHOR = "abuse@catswords.net";   // e.g. YOUR EMAIL ADDRESS
exports.global = global;
exports.require = global.require;

2. Write a file sayhello.js

// sayhello.js
var SayHello = require("lib/sayhello");

function main() {
    console.log("calling say()");
    SayHello.say();
    console.log("ended say()");
}

exports.main = main;

3. Execute file on the command prompt

C:\Users\knh94\Documents\GitHub\welsonjs> cscript app.js sayhello
calling say()
hello
ended say()

How to release my application?

Method 1. Compress to Zip, and Use WelsonJS.Launcher

There have been various attempts at EXE packaging for WelsonJS, and I've reviewed as much feedback as possible. This includes not only usability but also whether the process is relatively secure.

I have tentatively concluded that a launcher method, where a ZIP file is distributed and then executed, would be effective. Therefore, I have begun distributing the WelsonJS.Launcher artifact.

You can download and run the release or upstream source code of this project from GitHub in ZIP file format.

Method 2. Build a setup file with Inno Setup

Please check setup.iss file it could be compile with Inno Setup

Method 3. Copy all directories and files

This is so cool and so simple.

Screenshots

(Screenshot 1) GUI environment

(Screenshot 2) Command-line environment

(Screenshot 3) WelsonJS with Microsoft Excel

(Screenshot 4) Write a Windows Services with JavaScript

(Screenshot 5) Template Matching on the computer screen

(Screenshot 6) The Launcher for WelsonJS Application Packages

Thanks to

  • Open Software Portal, Korea National Industry Promotion Agency - Awarded Prize
  • Heavy-industry specialized CSP(Cloud Service Provider) in Republic of Korea - Use case establishment
  • Live-commerce specialized online advertisement companies in Republic of Korea - Use case establishment
  • Information security companies in Republic of Korea - Use case establishment
  • morioh.com - Mentioned
  • CSDN - Mentioned
  • Qiita - Knowledge-base about WSH environment
  • Redsky Software - PoC(Proof of Concept) of the CommonJS on WSH environment
  • Inspired by a small-sized JavaScript payload demonstrated by a cybersecurity related group.
  • Inspired by the use of Named Shared Memory in an inter-language IPC implementation devised by an unidentified developer.
  • Fediverse - Mentioned
  • Hacker News - Mentioned
  • GitHub Sponsors

Report abuse

License

FOSSA Status