WelsonJS - Build a Windows app on the Windows built-in JavaScript engine
Go to file
2025-01-29 18:06:25 +09:00
.github Rename FUNDING.yml to .github/FUNDING.yml 2024-11-13 16:23:47 +09:00
app Add the server-side script files 2025-01-01 21:12:42 +09:00
data Update apikey.json 2025-01-28 00:19:06 +09:00
examples Create hanoi.ai.js 2025-01-22 13:55:45 +09:00
lib Update language-inference-engine.js 2025-01-29 17:41:29 +09:00
tmp
WelsonJS.Toolkit Update AnsiX923Padding.cs, PKCS5Padding.cs 2024-12-10 18:31:31 +09:00
.appveyor.yml Update .appveyor.yml 2024-11-05 20:45:21 +09:00
.gitignore Update .gitignore 2025-01-15 14:00:57 +09:00
.gitmodules Update ScreenMatch.cs 2024-09-04 13:26:20 +09:00
.sonarcloud.properties
app.hta
app.js Update LIE(Language Inference Engine) integraton of the app.js 2025-01-28 09:53:55 +09:00
bgloader.js
bootstrap.bat Update bootstrap.bat 2025-01-09 16:03:00 +09:00
bootstrap.js
CITATION.cff
CODE_OF_CONDUCT.md
CONTRIBUTING.md
defaultService.example.js Update defaultService.example.js 2024-10-15 03:00:06 +09:00
encryptor.js Change the API name DecryptStringHIGHT to DecryptString and EncryptStringHIGHT to EncryptString 2024-11-05 20:01:34 +09:00
helloworld.coffee
helloworld.js
helloworld.js.enc
helloworld.ls
helloworld.re
helloworld.ts
installService.bat
LICENSE
LICENSE_MSRL
officeloader.js
package-lock.json
package.json Update package.json 2024-11-07 23:39:51 +09:00
README.md Update README.md 2025-01-29 18:06:25 +09:00
SECURITY.MD Update SECURITY.MD 2025-01-09 16:59:31 +09:00
settings.example.ini Add the Bitmap Comparison with CRC32 hashing 2024-09-19 03:29:43 +09:00
setup.iss
shoutcut.js
startInteractiveService.bat
testloader.js Update testloader.js 2025-01-15 16:18:06 +09:00
uninstallService.bat
uriloader.js
webloader.js Update webloader.js and the screenshot 2024-09-26 18:45:23 +09:00

welsonjs

FOSSA Status AppVeyor Status DOI 10.5281/zenodo.11382384 ChatGPT available Anthropic available Grok available slideshare.net presentation YouTube promotion video Open to work

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

A 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.

Sponsors

Structure

The structure of the WelsonJS framework can be extended based on whether it operates in a console (command prompt) environment, a GUI (with HTML/CSS) environment, or a service environment, with the app.js file at its core.

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(S) client with XHR(MSXML), cURL, BITS, CERT, Web Proxy, SEO/SERP, and more...)
  • 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 #
    • NuGet package available
  • 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).
  • LLM AI services integrations: (ChatGPT, Claude, Grok, LLaMA (on Groq), Gemini, Mistral, DeepSeek, Kimi
  • Aviation Data (AviationStack, SearchApi Google Flight) integration
  • OVFTool (OVF export tool for Broadcom/VMware virtualization infrastructures) 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?

The WelsonJS framework suggests the following application release methods:

  • Compress to Zip, and use the launcher: Compress the files and directories necessary for running the project into a Zip file, and distribute it along with the WelsonJS.Launcher.
  • Build a setup file: Use Inno Setup. Information needed to create the setup file (the setup.iss file) is already included.
  • Copy all directories and files: This is the simplest and most straightforward method.

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

  • ❤️ Artwork (Logo image): @druidesse
  • ❤️ Artwork (Cover image): @_bag0@x.com
  • 😎 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
  • 👀 Facebook Group "Javascript Programming"(javascript4u)
  • 👀 morioh.com
  • 👀 CSDN
  • 👀 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
  • 👀 Hacker News
  • 👀 WebToolsWeekly
  • 👀 GeekNews in GeekNews Weekly (2024-09-30 ~ 2024-10-06)
  • 👀 daily.dev
  • 👀 PitchHut

Report abuse

Join the community

I am always open. Collaboration, opportunities, and community activities are all welcome.

Special channels

License

FOSSA Status