{"id":29068840,"url":"https://github.com/aspectron/cargo-nw","last_synced_at":"2026-04-30T11:37:20.018Z","repository":{"id":64851453,"uuid":"572336153","full_name":"aspectron/cargo-nw","owner":"aspectron","description":"Redistributable package generator for NWJS supporting Windows, MacOS and Linux.","archived":false,"fork":false,"pushed_at":"2023-07-28T17:55:21.000Z","size":490,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2026-04-30T11:36:40.742Z","etag":null,"topics":["dmg","inno-setup","installer-automation","linux","macos","node-webkit","nwjs","rust","snap","windows"],"latest_commit_sha":null,"homepage":"https://aspectron.com/en/projects/cargo-nw.html","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aspectron.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-11-30T03:35:36.000Z","updated_at":"2023-09-15T19:47:01.000Z","dependencies_parsed_at":"2025-06-27T11:09:32.545Z","dependency_job_id":"c6995ed8-1f11-4ef2-babe-3512cc9358e8","html_url":"https://github.com/aspectron/cargo-nw","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/aspectron/cargo-nw","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspectron%2Fcargo-nw","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspectron%2Fcargo-nw/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspectron%2Fcargo-nw/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspectron%2Fcargo-nw/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aspectron","download_url":"https://codeload.github.com/aspectron/cargo-nw/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aspectron%2Fcargo-nw/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32463892,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-29T22:27:22.272Z","status":"online","status_checked_at":"2026-04-30T02:00:05.929Z","response_time":57,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dmg","inno-setup","installer-automation","linux","macos","node-webkit","nwjs","rust","snap","windows"],"created_at":"2025-06-27T11:09:28.995Z","updated_at":"2026-04-30T11:37:15.009Z","avatar_url":"https://github.com/aspectron.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# `cargo-nw`\n\nApplication deployment package builder for [Node-Webkit](https://nwjs.io)\n\n[\u003cimg alt=\"github\" src=\"https://img.shields.io/badge/github-aspectron/cargo--nw-8da0cb?style=for-the-badge\u0026labelColor=555555\u0026color=8da0cb\u0026logo=github\" height=\"20\"\u003e](https://github.com/aspectron/cargo-nw)\n[\u003cimg alt=\"crates.io\" src=\"https://img.shields.io/crates/v/cargo-nw.svg?maxAge=2592000\u0026style=for-the-badge\u0026color=fc8d62\u0026logo=rust\" height=\"20\"\u003e](https://crates.io/crates/cargo-nw)\n[\u003cimg alt=\"docs.rs\" src=\"https://img.shields.io/badge/docs.rs-cargo--nw-56c2a5?maxAge=2592000\u0026style=for-the-badge\u0026logo=docs.rs\" height=\"20\"\u003e](https://docs.rs/cargo-nw)\n\u003cimg alt=\"license\" src=\"https://img.shields.io/crates/l/workflow-nw.svg?maxAge=2592000\u0026color=6ac\u0026style=for-the-badge\u0026logoColor=fff\" height=\"20\"\u003e\n\n\n## Overview\n\n`cargo-nw` allows creation custom application deployment packages for NW applications by bundling application files with NW binaries.\nThis tool was created to build NW Rust WASM applications, but it can be used with any new or existing project.\n\nThe deployment is controlled by `nw.toml` manifest file that allows full customization of information packages in distributables, creation of additional actions (such as program executions during different stages of the build process), copying groups of files using globs or regex filters.\n\nFor application icons, only a single large-size `.png` file needs to be supplied - `cargo-nw` will automatically resize and generate all appropriate icon variations and file formats. Custom icons can be supplied for each OS.\n\n## OS support\n* MacOS: DMG, archive\n* Windows: InnoSetup, archive\n* Linux: SNAP, archive\n\nNOTE: To create a redistributable for each platform, you need to run `cargo-nw` on that specific platform.\n\n## Features\n* No external dependencies for basic functionality\n* Automatic download of NW distribution binaries (optionally SDK)\n* Automatic handling of application icons\n* Automatic creation of `.desktop` file on Linux\n* Automatic handling of DMG resources\n* Automatic handling of MacOS and Windows resource manifests\n* Custom strings for Windows resource manifests\n* SNAP support for different types of confinement\n* Creation of firewall rules during Windows installs\n* Optional inclusion of FFMPEG libraries\n\n## Dependencies\n* [Rust](https://www.rust-lang.org/tools/install)\n* [InnoSetup for Windows](https://jrsoftware.org/isdl.php) for creation of interactive Windows installers\n* [Wasmpack](https://rustwasm.github.io/wasm-pack/installer/) if building NW WASM applications in Rust\n* [SnapCraft](https://snapcraft.io/install/snapcraft/ubuntu) + [LXD](https://linuxcontainers.org/lxd/getting-started-cli/) \n\n## Installation\n```bash\ncargo install cargo-nw\n```\n\n## Documentation\n\nFor detailed documentation please see [Cargo NW Documentation](https://cargo-nw.aspectron.org)\n\n## Manifest\n\nThe `nw.toml` package manifest file contains TOML specification for the project. It is typically located in the project root.\n\n```toml\n[application]\nname = \"my-app\"\ntitle = \"My App\"\nversion = \"0.1.0\"\norganization = \"My Organization\"\n\n[description]\nshort = \"This is my app\" # max 78 chars\nlong = \"\"\"\nLorem ipsum dolor sit amet, consectetur adipiscing elit, \nsed do eiusmod tempor incididunt ut labore et dolore magna \naliqua. Ut enim ad minim veniam, quis nostrud exercitation \nullamco laboris nisi ut aliquip ex ea commodo consequat. \nDuis aute irure dolor in reprehenderit in voluptate velit \nesse cillum dolore eu fugiat nulla pariatur.\n\"\"\"\n\n[package]\nexclude = [\"resources/setup\"]\nexecute = [\n    { build = { cmd = \"my-package-script $OUTPUT\" } },\n]\n\n[nwjs]\nversion = \"0.70.1\"\nffmpeg = false\n\n[windows]\nuuid = \"95ba1908-ff47-4281-4dca-7461bc1ee058\"\ngroup = \"App Group\" # Windows start menu group\nrun_on_startup = \"everyone\"\nrun_after_setup = true\nresources = [\n    { Custom = { name = \"CustomString\", value = \"My Info\" }},\n]\n\n[languages]\nlanguages = [\"english\",\"french\"]\n\n[firewall]\napplication = \"in:out\"\nin = [ \"bin\\\\windows-x64\\\\my-utility.exe\" ]\nout = [ \"bin\\\\windows-x64\\\\test.exe\" ]\n```\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspectron%2Fcargo-nw","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faspectron%2Fcargo-nw","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faspectron%2Fcargo-nw/lists"}