WelsonJS - Build a Windows app on the Windows built-in JavaScript engine
Go to file
2024-09-27 10:18:32 +09:00
.github/workflows Create codeql-analysis.yml 2022-03-04 15:19:29 +09:00
app Fix the Tab UI bug, and fix stdout/stderr clear issue 2024-09-26 19:35:43 +09:00
data fix and test ok #143 2024-09-25 18:21:55 +09:00
examples Update certchecker.js 2024-09-25 14:46:53 +09:00
lib Fix the Tab UI bug, and fix stdout/stderr clear issue 2024-09-26 19:35:43 +09:00
tmp Create README.md 2022-04-15 14:44:06 +09:00
WelsonJS.Toolkit Update MainForm.cs 2024-09-23 02:06:49 +09:00
.appveyor.yml Update .appveyor.yml 2024-09-23 22:21:15 +09:00
.gitignore Update defaultService.example.js, .gitignore 2024-09-20 11:50:29 +09:00
.gitmodules Update ScreenMatch.cs 2024-09-04 13:26:20 +09:00
.sonarcloud.properties Create .sonarcloud.properties 2024-07-10 15:20:48 +09:00
app.hta Update app.hta, app/index.js, app/signin.html, app/test.html 2023-10-30 16:58:29 +09:00
app.js Update ScreenMatch.cs and related files 2024-09-20 16:53:50 +09:00
bgloader.js Update bgloader.js 2020-12-10 11:27:05 +09:00
bootstrap.bat Update build configurations 2024-08-15 17:47:29 +09:00
bootstrap.js Update app.js and clean up files 2024-07-23 04:26:38 +09:00
CITATION.cff Update CITATION.cff 2024-05-30 12:08:59 +09:00
CODE_OF_CONDUCT.md Add files via upload 2024-05-27 17:49:50 +09:00
CONTRIBUTING.md Update CONTRIBUTING.md 2024-05-27 17:59:55 +09:00
defaultService.example.js Update ScreenMatch.cs and related files 2024-09-20 16:53:50 +09:00
encryptor.js Update encryptor.js 2024-03-19 18:00:08 +09:00
FUNDING.yml Update FUNDING.yml 2024-08-12 21:17:55 +09:00
helloworld.coffee Add support LiveScript 2022-11-29 14:42:34 +09:00
helloworld.js Update WelsonJS.Service and related files 2024-07-23 13:13:33 +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 Update installService.bat 2024-07-27 21:38:38 +09:00
LICENSE Change GPLv2 to GPLv3 2023-09-09 01:33:02 +09:00
LICENSE_MSRL Rename LICENSE to LICENSE_MSRL 2023-07-18 16:03:23 +09:00
officeloader.js msoffice #93 2023-12-19 06:47:48 +09:00
package-lock.json Bump requirejs from 2.3.6 to 2.3.7 2024-07-26 08:25:56 +00:00
package.json Update package.json 2024-04-01 18:14:11 +09:00
README.md Update README.md 2024-09-27 10:18:32 +09:00
SECURITY.MD Update SECURITY.MD 2024-09-15 23:30:40 +09:00
settings.example.ini Add the Bitmap Comparison with CRC32 hashing 2024-09-19 03:29:43 +09:00
setup.iss Update setup.iss 2024-07-31 16:19:08 +09:00
shoutcut.js msoffice #93 2023-12-19 06:47:48 +09:00
startInteractiveService.bat Add startInteractiveService.bat, uninstallService.bat 2024-07-30 18:17:26 +09:00
testloader.js Update testloader.js 2024-09-26 01:26:06 +09:00
uninstallService.bat Add startInteractiveService.bat, uninstallService.bat 2024-07-30 18:17:26 +09:00
uriloader.js Remove non-free, non-microsoft, and no-updates in uriloader.js 2024-08-27 01:03:24 +09:00
webloader.js Update webloader.js and the screenshot 2024-09-26 18:45:23 +09:00

welsonjs

FOSSA Status AppVeyor Status DOI

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

(This is 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

Partnerships

These partnerships are based on existing cases of integration with this project. The proceeds are used to support this project.

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/HTTPS client with XHR(MSXML), cURL, BITS, CERT, and Web Proxy API)
  • 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?

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

  • 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

Report abuse

License

FOSSA Status