Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 0 additions & 60 deletions .github/SETUP.md

This file was deleted.

8 changes: 3 additions & 5 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,17 +3,15 @@ updates:
- package-ecosystem: "pip"
directory: "."
schedule:
interval: "weekly"
day: "saturday"
interval: "monthly"
groups:
pip:
patterns:
- "*"
- package-ecosystem: "github-actions"
directory: ".github/"
directory: ".github"
schedule:
interval: "weekly"
day: "saturday"
interval: "monthly"
groups:
gha:
patterns:
Expand Down
69 changes: 69 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
name: Python CI

on:
pull_request:
branches:
- main

permissions:
contents: read
pull-requests: write

concurrency:
group: ${{ github.ref }}
cancel-in-progress: true

jobs:
test:
strategy:
matrix:
os:
- macos-26
- macos-26-intel
- ubuntu-24.04
# TODO: fails on ARM
# - ubuntu-24.04-arm
- windows-2025
- windows-11-arm
python-version:
- '3.14'
include:
- os: macos-26
display: MacOS 26 ARM
- os: macos-26-intel
display: MacOS 26 Intel
- os: ubuntu-24.04
display: Ubuntu 24.04 Intel
- os: ubuntu-24.04-arm
# TODO: fails on ARM
# display: Ubuntu 24.04 ARM
# - os: windows-2025
display: Windows 11 Intel
- os: windows-11-arm
display: Windows 11 (ARM)
fail-fast: false

name: ${{ matrix.display }} / Python ${{ matrix.python-version }}

runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4.2.2
- uses: actions/setup-python@v5.6.0
with:
python-version: ${{ matrix.python-version }}
cache: pip
- if: matrix.os == 'ubuntu-24.04' || matrix.os == 'ubuntu-24.04-arm'
uses: awalsh128/cache-apt-pkgs-action@v1.5.1
with:
packages: libegl1
version: 1.0
execute_install_scripts: true
- name: Install dependencies
run: python -m pip install -r requirements.txt
- name: Check for formatting errors
run: python -m ruff format ./**/*.py
# TODO: resolve all linting errors
# - name: Check for linting errors
# run: python -m ruff check ./**/*.py
- name: Run test suite
run: python -m pytest
31 changes: 0 additions & 31 deletions .github/workflows/e2e.yml

This file was deleted.

2 changes: 1 addition & 1 deletion LICENSE.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
The MIT License (MIT)

Copyright (c) 2015-2023 SimplyPixelated
Copyright (c) 2022-2023 NW.js Utilities
Copyright (c) 2022-2026 NW.js Utilities

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
Expand Down
74 changes: 20 additions & 54 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,16 +1,15 @@
> This repository is in maintainance mode. Bug fixes will be provided on a best effort basis. If you use this project, please consider contributing back.
# Web2Executable

Web2Executable
==============
> [!Note]
> This repository is in maintainance mode. Bug fixes will be provided on a best effort basis. If you use this project, please consider contributing back.

[![Github Releases (by Release)](https://img.shields.io/github/downloads/jyapayne/Web2Executable/latest/total.svg)]()
![Github Releases (by Release)](https://img.shields.io/github/downloads/jyapayne/Web2Executable/latest/total.svg)

[Releases (Downloads)](https://github.com/jyapayne/Web2Executable/releases) (new!)
![Releases (Downloads)](https://github.com/jyapayne/Web2Executable/releases)

[![Github All Releases](https://img.shields.io/github/downloads/jyapayne/Web2Executable/total.svg)]()
![Github All Releases](https://img.shields.io/github/downloads/jyapayne/Web2Executable/total.svg)

What is it?
-----------
## What is it?

Web2Executable is a friendly command line and GUI application that can transform your Nodejs (or any other JS/HTML) app into an executable (and libraries) that can run in a contained, desktop-like style. It can export to Mac OS X, Windows and Linux all from one platform, so no need to go out and buy expensive hardware.

Expand All @@ -20,14 +19,11 @@ If you have an idea for a feature, please create a new issue with a format like

On the other hand, if you have any annoyances with the application and want to contribute to making it better for everyone, please file an issue with "Annoyance:" as the first part of the title. Sometimes it's hard to know what is annoying for people and input is much appreciated :)

What About Electron?
--------------------
## What About Electron?

If you want to export using Electron instead of NW.js, try [Electrify](https://github.com/jyapayne/Electrify), my other app based on Web2Executable.


Who's Using It?
---------------
## Who's Using It?

Lots of people! There are currently thousands of downloads and several articles written about using Web2Executable.

Expand All @@ -45,9 +41,7 @@ Some articles include:

If you have a project you'd like to see listed here that was successfully built using Web2Executable or you have written an article that mentions it, feel free to send me an email with a link and I'd be super stoked to paste it here :)


Features
--------
## Features

- Cross platform to Mac, Windows, Linux
- Working media out of the box (sound and video)
Expand All @@ -61,27 +55,23 @@ Features
- A command line utility with functionality equivalent to the GUI. Useful for automated builds.
- Compression of executables with upx

Planned New Features
--------------------
## Planned New Features

- The ability to add external files to the project
- Minifying JS and HTML


Getting Started
---------------
## Getting Started

### Using Prebuilt Binaries

When using the prebuilt binaries for Windows, Mac, or Ubuntu, there are NO dependencies or extra applications needed. Simply download Web2Exe for the platform of your choice, extract, and double click the app/exe/binary to start. This applies to both the command-line version and the GUI version.

**NOTE!**: Some people report needing the Microsoft Visual C++ 2008/2010 SP1 and regular Redistributable package. I don't have a machine to test this, but just know that you might need the package if the application won't open or spits out the following error:

```
```shell
Error: The application has failed to start because the side by side configuration is incorrect please see the application event log or use the command line sxstrace.exe tool for more detail.
```


### Building from Source

Requires the PySide library and Python 3.4.3 or higher. If you want to replace the icon in the Windows Exe's, this will do it automatically with the latest code if you have PIL or Pillow installed.
Expand All @@ -94,27 +84,27 @@ Run the command_line.py with the --help option to see a list of export options.

Example usage (if using the prebuilt binary, replace `python3.4 command_line.py` with the exe name):

```
```shell
python3.4 command_line.py /var/www/html/CargoBlaster/ --main html/index.html --export-to linux-x64 windows mac --width 900 --height 700 --nw-version 0.10.5
```

### GUI

Install dependencies:

```
```shell
pip install -r requirements.txt
```

Initiate submodules:

```
```shell
git submodule update --init --recursive
```

Run with:

```
```shell
python3.4 main.py
```

Expand All @@ -125,42 +115,18 @@ General Instructions for exporting:
3. Choose at least one export platform and then the Export button should be enabled (as long as the field names marked with a star are filled out and all files in the fields exist).
4. Click the export button and once it's done, click the "Open Export Folder" button to go to the folder where your exported project will be.


### Issues?

If you have an issue, please check the FAQ before filing an issue to see if it helps.

[FAQ](https://github.com/jyapayne/Web2Executable/wiki/FAQ)


### Additional Info
## Additional Info

[Changelog](https://github.com/jyapayne/Web2Executable/releases)

[Screenshots](https://github.com/jyapayne/Web2Executable/wiki/Screenshots)

## License

License
-------

The MIT License (MIT)

Copyright (c) 2015 SimplyPixelated

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
MIT.
4 changes: 2 additions & 2 deletions files/env_vars.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
PROJECT_DIR = "{proj_dir}"
PROJECT_NAME = "{proj_name}"
EXPORT_DIR = "{export_dir}"
EXPORT_DIRS = {export_dirs}
EXPORT_DIRS = "{export_dirs}"
MAC64_EXPORT_DIR = "{mac-x64_dir}"
MAC32_EXPORT_DIR = "{mac-x32_dir}"
WIN64_EXPORT_DIR = "{windows-x64_dir}"
WIN32_EXPORT_DIR = "{windows-x32_dir}"
LINUX64_EXPORT_DIR = "{linux-x64_dir}"
LINUX32_EXPORT_DIR = "{linux-x32_dir}"
NUM_DIRS = {num_dirs}
NUM_DIRS = "{num_dirs}"
2 changes: 1 addition & 1 deletion files/settings.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ linux_64_dir_prefix = 'nwjs-v{}-linux-x64'
required=True
type='string'
description='The name in the internal package.json. Must be alpha-numeric with no spaces.'
filter=r'[a-z0-9_\\-\.]+'
filter=r'[a-z0-9_\-\.]+'
filter_action='lower'
[[[app_name]]]
display_name='App Name'
Expand Down
Loading
Loading