Is it possible to make Node-RED into a windows portable app

I came across https://sourceforge.net/projects/nodejsportable/ and it made me think - if node.js can be made to run off a USB drive - could Node-RED be run from the same USB drive?

When I mean "possible" I mean by a suitable 2nd degree wizard - not Nick or Dave :slight_smile:

It's definitely possible ... If you want a dashboard, you could start with the Node-Red-Electron app:

And then from there it looks like there are some config examples to make Electron portable:

If you don't care about having a UI there are a ton of examples of packaging and running a Node.js script as a portable app, or just run the portable version of Node.js configured to run node-red.

UP.
Where you able to get it working? I´m very interested.

It looked beyond my abilities to do

however - I just had an idea and it seemed to work

I had previously installed Node-RED Desktop

(a packaged up version of Node-RED) on my win10 machine.

I found the folder it was installed to

C:\Users\Simon\AppData\Local\Programs

and copied the node-red-desktop folder to another folder, then ran the unistaller inside the old location

Simply launching the .exe from the new location launched it fine

I need to test it out on a completely clean machine but I think it should work

Here is a zipped copy of the folder - if you have a win machine - try it out and see what happens

You could also try the alternative installer that I just released. It will let you install Node-RED anywhere. Though you still need Node.js installed so it isn't a complete solution. But a little tweaking and a manual unpack of Node.js to the memory stick would work.

@TotallyInformation
Can you show me how to do it or point me to where I can get more info?

Hopefully the README should explain everything. If not, please add to the announcement thread and I will try to make it clearer:

Worked here. I also have node installed.

1 Like

Ta for info :slight_smile:

I'm going to try it out in the school I help out with on machines that don't have it and see what happens - I think it will work though

1 Like

There is also this packaging tool:

It creates a single executable of your code and all its dependencies for all major platforms, NodeJS is included. We successfully use it for deployments of our software at work.

I gave it a quick shot with Node-RED, but was unsuccessful. I imagine it needs some manual tweaks, like including the web resources at the proper location. However, I haven't had the time to try again, yet.

Hmm, interesting. However, looking at the details, it seems to me as though many Nodes would fail to be properly packaged due to the way that it moves assets around. Might be a lot of work to get going.

Worth a try though.

Yes, that's where I hit a dead end with Node-RED. You can include additional assets into the package's internal filesystem manually. I haven't invested much time into this, as there were other more important issues at work.

However, getting a single executable for Node-RED without any further dependencies would be a great plus for deployments.

While true, it might be easier to dump node.js executables into the same parent project folder (if using my style installation). I must have a look at that to see if it is feasible.

My electron project can be built into a single exe if required https://github.com/dceejay/electron-node-red
The project is made for Mac so builds on that platform, but should be adaptable for others (and I would happily take contributions to improve it)

It´s working nicely. Just tried at another computer.
I´ll play a little to see if it everything works.

What is "it" as we now have 3 options in the thread :slight_smile:

Sorry. Was talking about this

I just made a portable version of the node-red by:

  • Downloading a portable version of Node.js
  • Running npm install -g nodered

I also needed to edit the $env:Path in the node-red.ps1 file.

example:

if (!($env:Path -contains $basedir)) {
    Write-Host Adding basedir to Path Env variable.
    $env:Path += ";" + $basedir
}

$basedir variable was already in the ps1 script.

Then I created a shortcut pointing to:
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe "\Path\To\Nodejs\node-red.ps1 -u 'Path\To\UserDir'"

Hope it helps.