WelsonJS - Build a Windows app on the Windows built-in JavaScript engine
Go to file
Namhyeon, Go 28b6c094d3
Some checks are pending
CodeQL / Analyze (javascript) (push) Waiting to run
Deploy Jekyll with GitHub Pages dependencies preinstalled / build (push) Waiting to run
Deploy Jekyll with GitHub Pages dependencies preinstalled / deploy (push) Blocked by required conditions
Merge pull request #351 from gnh1201/dev
Update README links and sponsor image URLs
2025-11-25 14:47:50 +09:00
.github Create jekyll-gh-pages.yml 2025-07-15 09:33:42 +09:00
app Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
data Revise test descriptions and tags for clarity 2025-11-23 23:19:52 +09:00
examples Add Korea business area code checker example 2025-11-19 12:23:22 +09:00
lib Update lib/std.js 2025-11-23 23:59:20 +09:00
tmp Update README.md 2025-03-10 10:28:08 +09:00
WelsonJS.Toolkit Use 'using' statement for InstancesForm disposal 2025-11-20 17:31:50 +09:00
.appveyor.yml Download setup and ChakraCore in AppVeyor build 2025-09-27 22:52:13 +09:00
.gitignore Add new file to .gitignore 2025-11-19 10:26:53 +09:00
.gitmodules Add .gitmodules for ChakraCore submodule 2025-09-26 17:13:39 +09:00
.sonarcloud.properties Create .sonarcloud.properties 2024-07-10 15:20:48 +09:00
afterInstall.ps1 Improve error handling in afterInstall.ps1 2025-11-21 17:57:18 +09:00
app.hta Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
app.js Update app.js 2025-08-05 17:44:34 +09:00
bgloader.js Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
bootstrap.bat Update bootstrap.bat 2025-03-31 16:31:07 +09:00
bootstrap.js Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
CITATION.cff Update CITATION.cff 2024-05-30 12:08:59 +09:00
CNAME Create CNAME 2025-07-14 09:38:10 +09:00
CODE_OF_CONDUCT.md Add files via upload 2024-05-27 17:49:50 +09:00
CONTRIBUTING.md Update the contacts 2025-07-16 13:57:04 +09:00
defaultService.example.js Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
encryptor.js Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
helloworld.coffee Add support LiveScript 2022-11-29 14:42:34 +09:00
helloworld.js Refactor deploy time recording and improve instance setup 2025-11-20 17:09:43 +09:00
helloworld.js.enc Remove the package: html5media 2024-01-27 13:51:32 +09:00
helloworld.ls Add support LiveScript 2022-11-29 14:42:34 +09:00
helloworld.re [app] Add support ReasonML/Rescript #77 2023-08-02 16:06:08 +09:00
helloworld.ts Add support TypeScript 2022-12-22 16:17:10 +09:00
installService.bat Fix EXE_PATH case in service scripts 2025-11-21 11:01:10 +09:00
LICENSE Fix typo of the license and contributing files 2025-05-26 00:10:26 +09:00
LICENSE_MSRL Fix typo of the license and contributing files 2025-05-26 00:10:26 +09:00
officeloader.js Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
package-lock.json Bump js-yaml from 4.1.0 to 4.1.1 2025-11-15 10:58:07 +00:00
package.json Bump js-yaml from 4.1.0 to 4.1.1 2025-11-15 10:58:07 +00:00
README.md Update README.md 2025-11-25 14:07:05 +09:00
SECURITY.MD Update document links in SECURITY.MD 2025-11-25 11:03:34 +09:00
settings.example.ini Add the Bitmap Comparison with CRC32 hashing 2024-09-19 03:29:43 +09:00
setup.iss Update description for addtools component 2025-11-24 00:39:44 +09:00
shoutcut.js Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
startInteractiveService.bat Add startInteractiveService.bat, uninstallService.bat 2024-07-30 18:17:26 +09:00
testloader.js Replace the default SERP provider to SerpApi 2025-07-10 13:54:53 +09:00
uninstallService.bat Refactor installer components and registry handling 2025-11-24 00:34:10 +09:00
uriloader.js Update license headers, contact email, and fix broken files 2025-06-07 16:57:09 +09:00
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 Google Gemini available slideshare.net presentation YouTube promotion video Discord chat Trustpilot Open to work DeepWiki

WelsonJS logo with four diagonal stripes in red, green, blue, and yellow, overlaid with the letters JS. WelsonJS - Build a Windows app on the Windows built-in JavaScript engine.

A Cover Image: Windows in 1999

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

WelsonJS = Windows + Electron-like + Javascript(JS) + ❤️Contributions

Note: 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

System Requirements

  • Operating Systems: Windows XP SP3 or later (Currently, Windows 11 24H2)
  • For systems running Windows 2000 or earlier versions (e.g., 95, 98, Me), please contact us separately.

Why Choose WelsonJS?

WelsonJS is an advanced JavaScript framework designed to operate in extreme conditions where conventional solutions may fail. Unlike traditional JavaScript frameworks, WelsonJS focuses on executing scripts in constrained environments, ensuring reliable performance even with minimal system resources.

Key Features

  • Lightweight and Efficient: Optimized for environments with limited computing power, WelsonJS delivers efficient script execution without unnecessary overhead.
  • Windows ECMAScript Compatibility: Designed to run seamlessly on Windows-based systems, adhering to the ECMAScript standard while maintaining lightweight execution.
  • Standalone Execution: Unlike well-known JavaScript runtimes, which require external dependencies, a WelsonJS application can operate as a self-contained app, making it suitable for embedded systems and isolated environments.
  • Security-Oriented: Built with security in mind, ensuring controlled execution of scripts without compromising system integrity.
  • Minimalist Design: WelsonJS strips away unnecessary complexities, focusing on core functionalities that maximize performance and reliability.

Use Cases

  • Legacy System Integration: WelsonJS provides a practical solution for running JavaScript on older Windows environments where modern frameworks are not feasible.
  • Automation and Scripting: Ideal for executing scripts in constrained environments, enabling automated workflows and system-level scripting.
  • Embedded Applications: Suitable for devices and systems with strict resource constraints, such as industrial controllers and embedded platforms.
  • Security-Focused Environments: Useful in security-sensitive applications where dependencies on external network connections are limited.
  • Office Automation: Suitable for office automation tasks using Microsoft Office and various LLM-based AI (such as ChatGPT).

WelsonJS is tailored for developers who need a reliable, lightweight JavaScript framework in environments where traditional solutions are impractical. Whether working with legacy systems, embedded devices, or security-critical applications, WelsonJS ensures that JavaScript remains a viable and efficient option.

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

Quick start

1. Write a file lib/sayhello.js

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

exports.say = say;

exports.VERSIONINFO = "SayHello (sayhello.js) version 0.1";
exports.AUTHOR = "gnh1201@catswords.re.kr";
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 script on the console

C:\Users\JohnDoe\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. The setup profile (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 Service with JavaScript

(Screenshot 5) Template Matching on the computer screen

(Screenshot 6) The Launcher for WelsonJS Application Packages

(Screenshot 7) Microsoft Monaco Editor on WelsonJS Launcher

(Screenshot 8) You can run a .js file just like an executable by simply double-clicking it.

Thanks to

Report abuse

Join the community

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

Offline Distribution

You may request offline distribution if you are in a restricted environment, such as one without internet access or with specific security requirements.

Special channels

License

FOSSA Status