Desktop apps for Windows XP in 2025

Intro Inspired by the Action Retro YouTube channel trying to get Spotify to run on Windows XP, I thought I'd share a quick walk through of using NW.js for Windows XP development. NW.js is a modified Chromium browser with Node.js built in. It has an older "Long Term Support" (LTS) release (v0.14.7) that supports "Legacy Operating Systems", like Windows XP and OSX 10.6. However, it is pretty old at this point and has some caveats. But we'll get there. Boot up XP First off I'm going to boot up my old Win Pro SP3 virtual machine. I'd recommend setting up your own, there are guides online for that, or just using real hardware. Download NW.js Go to this archive for version 0.14.7: http://dl.nwjs.io/v0.14.7 I'll explain the different flavors: "nwjs-sdk-symbol*" and "nwjs-symbol*" files are for advanced use cases, you won't need these. "nwjs-sdk-v0.14.7*" Is NW.js with Chromium dev tools built in "nwjs-v0.14.7*" Is the same thing, just without the dev tools, so it is slightly smaller. This is for distribution to end users Then they'll have the operating system (win, lin, osx) And then the architecture, 32-Bit (ia32) and 64-Bit (x64) I assume you'll want nwjs-sdk-v0.14.7-win-ia32.zip. But if you plan on distributing this for others to download, they probably won't need the dev tools, so you can use the slightly smaller version for them. The 32-bit version will run on both 32 and 64-bit versions of Windows just fine. It will also run on XP, Vista, 7, 8, 8.1, 10, 11, and 12, and likely anything else in the future as Microsoft has always prioritized backwards compatibility. But who knows, 11 and 12 are so bad I wouldn't be surprised at what they do anymore. Honestly, having to use 11 so much recently and then booting up this XP VM is just pissing me off at much better XP is. Setting it up You downloaded a zip file, good job! You should be able to open it and drag the folder out to your desktop or wherever. Feel free to rename the folder from "nwjs-sdk-v0.14.7-win-ia32" to "MyApp" or whatever. Inside the folder is all the files NW.js needs to run, it doesn't need installed, it works sort of like a portable app. So you can just double-click on nw.exe to see a window pop up, then you can close the window. The nw.exe file can be renamed to whatever you want, MyApp.exe for example, and you can even use a tool like ResourceHacker to edit it and change the icon to any ICO file you want. You can grab a random ICO file from the IconArchive website, or use a tool like Greenfish Icon Editor to convert any image file to an ICO. All of that runs fine on Windows XP+. Creating an app Inside your "MyApp" folder, create a new folder called package.nw. All of your code and files will live inside this folder. Which makes it easy to copy it around to other versions of NW.js later. As long as the package.nw folder is next to the nw.exe (or whatever you renamed it to), it will work. Then, inside the package.nw folder create a package.json file. This is the first thing the nw.exe file will look for when it launches. It tells it what to do next. Inside the file there are only 2 required fields so we'll start with those: name - This is the name of your app. It is required because any time you open NW.js, Chromium will control showing a window, and Chromium needs to make a bunch of user-specific files. So for Windows XP that would be at C:\Documents and Settings\YourUserName\Local Settings\Application Data\my-app. The "my-app" part is whatever you put in this name field. It must be a url and file-system safe name. I'd recommend all lowercase and hyphens instead of spaces. main - This tells NW.js what to load in the window when it launches. Usually you'd set it to index.html and then create that file and put whatever you want in it to make your app. However you can also set it to a URL, so we'll start there, as it will show an XP specific problem we'll need to solve. MyApp\package.nw\package.json { "name": "my-app", "main": "https://google.com" } With that in place, now when you run nw.exe, it will open a window and take you to Google.com. Or at least, that's what it would do, but instead you'll see this: Chromium dropped support for XP a long time ago. So we must use a very old version that still works with XP. However, the certificate it ships with is now long expired. We can work around this by adding one more item to the package.json file: { "name": "my-app", "main": "https://google.com", "chromium-args": "--ignore-certificate-errors" } Save that, and re-run nw.exe and now it should launch a window with Google loaded inside it. There are a bunch of other settings you can put in the package.json, including adjusting the starting window size and position. More information can be found in the docs: https://nwjs.readthedocs.io/en/latest/References/Manifest%20Format/ Version stuff At this point you can make whatever you

Feb 10, 2025 - 22:50
 0
Desktop apps for Windows XP in 2025

Intro

Inspired by the Action Retro YouTube channel trying to get Spotify to run on Windows XP, I thought I'd share a quick walk through of using NW.js for Windows XP development.

NW.js is a modified Chromium browser with Node.js built in. It has an older "Long Term Support" (LTS) release (v0.14.7) that supports "Legacy Operating Systems", like Windows XP and OSX 10.6.

However, it is pretty old at this point and has some caveats. But we'll get there.

Boot up XP

First off I'm going to boot up my old Win Pro SP3 virtual machine. I'd recommend setting up your own, there are guides online for that, or just using real hardware.

Download NW.js

Go to this archive for version 0.14.7:

I'll explain the different flavors:

  • "nwjs-sdk-symbol*" and "nwjs-symbol*" files are for advanced use cases, you won't need these.
  • "nwjs-sdk-v0.14.7*" Is NW.js with Chromium dev tools built in
  • "nwjs-v0.14.7*" Is the same thing, just without the dev tools, so it is slightly smaller. This is for distribution to end users
  • Then they'll have the operating system (win, lin, osx)
  • And then the architecture, 32-Bit (ia32) and 64-Bit (x64)

I assume you'll want nwjs-sdk-v0.14.7-win-ia32.zip. But if you plan on distributing this for others to download, they probably won't need the dev tools, so you can use the slightly smaller version for them.

The 32-bit version will run on both 32 and 64-bit versions of Windows just fine. It will also run on XP, Vista, 7, 8, 8.1, 10, 11, and 12, and likely anything else in the future as Microsoft has always prioritized backwards compatibility. But who knows, 11 and 12 are so bad I wouldn't be surprised at what they do anymore. Honestly, having to use 11 so much recently and then booting up this XP VM is just pissing me off at much better XP is.

Setting it up

You downloaded a zip file, good job! You should be able to open it and drag the folder out to your desktop or wherever. Feel free to rename the folder from "nwjs-sdk-v0.14.7-win-ia32" to "MyApp" or whatever.

Inside the folder is all the files NW.js needs to run, it doesn't need installed, it works sort of like a portable app. So you can just double-click on nw.exe to see a window pop up, then you can close the window.

The nw.exe file can be renamed to whatever you want, MyApp.exe for example, and you can even use a tool like ResourceHacker to edit it and change the icon to any ICO file you want. You can grab a random ICO file from the IconArchive website, or use a tool like Greenfish Icon Editor to convert any image file to an ICO. All of that runs fine on Windows XP+.

Creating an app

Inside your "MyApp" folder, create a new folder called package.nw. All of your code and files will live inside this folder. Which makes it easy to copy it around to other versions of NW.js later. As long as the package.nw folder is next to the nw.exe (or whatever you renamed it to), it will work.

Then, inside the package.nw folder create a package.json file. This is the first thing the nw.exe file will look for when it launches. It tells it what to do next. Inside the file there are only 2 required fields so we'll start with those:

  • name - This is the name of your app. It is required because any time you open NW.js, Chromium will control showing a window, and Chromium needs to make a bunch of user-specific files. So for Windows XP that would be at C:\Documents and Settings\YourUserName\Local Settings\Application Data\my-app. The "my-app" part is whatever you put in this name field. It must be a url and file-system safe name. I'd recommend all lowercase and hyphens instead of spaces.
  • main - This tells NW.js what to load in the window when it launches. Usually you'd set it to index.html and then create that file and put whatever you want in it to make your app. However you can also set it to a URL, so we'll start there, as it will show an XP specific problem we'll need to solve.

MyApp\package.nw\package.json

{
  "name": "my-app",
  "main": "https://google.com"
}

With that in place, now when you run nw.exe, it will open a window and take you to Google.com. Or at least, that's what it would do, but instead you'll see this:

Your clock is ahead warning

Chromium dropped support for XP a long time ago. So we must use a very old version that still works with XP. However, the certificate it ships with is now long expired.

We can work around this by adding one more item to the package.json file:

{
  "name": "my-app",
  "main": "https://google.com",
  "chromium-args": "--ignore-certificate-errors"
}

Save that, and re-run nw.exe and now it should launch a window with Google loaded inside it.

Google.com successfully loaded in the window

There are a bunch of other settings you can put in the package.json, including adjusting the starting window size and position. More information can be found in the docs:

Version stuff

At this point you can make whatever you want. Well kind of. NW.js v0.14.7 was released on 2016-07-22 and comes with Chromium 50 and Node.js 5.11.1. Both of these are very old now. If you are used to modern webdev tooling, writing code for them will be more difficult.

Fortunately we have tools like PostCSS and Babel, that let you target your specific Browser version, and they'll do their best to transpile and polyfill your code to work with that version. This alone will do a lot of the heavy lifting for you if you are working with a lot of code. However, if you are just writing out a few HTML, CSS, and JS files, then that would be overkill and you can just figure out what code to use by consulting CanIUse.com.

Be aware, that many new web technologies have been added to the browser since 2016. Some specific websites, may not load. For example, using "main": "https://spotify.com" will load their site, but it will tell you that your browser doesn't support Widevine. Widevine is a DRM technology they use for playing audio files that wasn't added into Chromium until years after they dropped support for XP. So sadly, you can't just point to any website and expect it to work. Though, most sites actually still work with this older version of Chromium, overtime more and more will adopt new technologies not available in this old version of Chromium. The march of progress is sad for our friend XP. Fortunately, for just browsing the web MyPal, an XP focused fork of Firefox, is available.

Your own app

In the example above we just loaded a website, but as mentioned, you can also create your own apps from scratch. Let's do a quick example.

MyApp\package.nw\package.json

{
  "name": "my-app",
  "main": "index.html",
  "chromium-args": "--ignore-certificate-errors"
}

MyApp\package.nw\index.html



  
    </span>My App<span class="nt">
    
  
  
    

Hello World

id="example">

Hello world example

In this example code we are:

  • Styling the app with CSS
  • Setting the window title with the </code> tag</li> <li>Use Node.js's <code>require</code> function to access the computer's File System (fs)</li> <li>Using <code>fs</code> to get a list of all the items in the current directory (<code>.</code>)</li> <li>Targeting an element in the DOM by ID and updating its inner text value to be the list of comma-separated files.</li> </ul> <p>You will be able to use any of the built-in Node modules, or any 3rd party modules you would <code>npm install</code> that are compatible with Node.js v5.11.1 (basically stuff from around 2013-2017). <p>But just using the built-ins alone, you have access to the hardware (CPU, memory, etc), file system (Read/Write/Create/Delete files), executables (child processes, spawns, forks), and more. <p>The cool part is, if your app code doesn't use any windows specific code (like calling powershell or something), then it will be possible to ship your app on Linux and OSX too! <h2> Installing Node </h2> <p>Installing Node.js on your machine is not a requirement for using NW.js. If you want to use 3rd party Node modules, you will need to install them via the "Node Package Manager", or <code>npm</code>. Node.js comes with npm when installed. Most likely all you'll need to do is download and run this installer: <ul> <li><a href="https://nodejs.org/dist/v5.11.1/node-v5.11.1-x86.msi" rel="noopener noreferrer">https://nodejs.org/dist/v5.11.1/node-v5.11.1-x86.msi</a></li> </ul> <p>Run it to globally install the same version of Node.js (5.11.1) that is built in to NW.js (0.14.7). You'll run into less issues if they match. <p>If you have issues installing Node, you can look into the other Node downloads for that version: <ul> <li><a href="https://nodejs.org/dist/v5.11.1/" rel="noopener noreferrer">https://nodejs.org/dist/v5.11.1/</a></li> </ul> <p>Or you can try <a href="https://volta.sh/" rel="noopener noreferrer">Volta</a>. Which I've gotten to work on XP in the past, but don't know how. Volta is a Node version manager that works on all platforms and is really great. <p>Also, depending on the updates you've done to your XP machine, you may be on an older version of "Windows Installer". You can check by running <code>msiexec</code> to see the version. If you want to install version 4.5, just go to Microsoft's website and, ha ha, just kidding, that will take you to a 404 page. So instead, go to <a href="https://archive.org/details/windows-xp-kb-942288-v-3-x-86_202309" rel="noopener noreferrer">The Internet Archive</a> to get the update. Then <a href="https://archive.org/donate" rel="noopener noreferrer">donate</a> to them. <h2> Distributing your app </h2> <p>When you are ready to share your app with other cool XP users, just zip up your MyApp folder and send it to them. It's that easy. Then they just unzip it and double click on the <code>nw.exe</code> (which you probably renamed). Or you can download the non-sdk version of NW.js and move your <code>package.nw</code> folder over to get a slightly smaller file size. Then zip and ship it. <p>There are other options too. Another one is to use WinRAR to create a self-extracting executable (google a tutorial). That will make a small installer file for your app. <h2> Conclusion </h2> <p>Have fun making apps! <p>Check out <a href="https://nwutils.io/" rel="noopener noreferrer">NW Utils</a> for additional NW.js resources (libraries, tutorials, boilerplates, examples, etc). <p>Here's an old XP compatible NW.js framework for making GUIs for CLI's: <ul> <li><a href="https://ugui.io/" rel="noopener noreferrer">UGUI: Universal Graphical User Interface</a></li> </ul> </div> <div class="d-flex flex-row-reverse mt-4"> <a href="https://dev.to/thejaredwilcurt/desktop-apps-for-windows-xp-in-2025-2cpc" class="btn btn-md btn-custom" target="_blank" rel="nofollow"> Read More <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="m-l-5" viewBox="0 0 16 16"> <path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z"/> </svg> </a> </div> <div class="d-flex flex-row post-tags align-items-center mt-5"> <h2 class="title">Tags:</h2> <ul class="d-flex flex-row"> </ul> </div> <div class="post-next-prev mt-5"> <div class="row"> <div class="col-sm-6 col-xs-12 left"> <div class="head-title text-end"> <a href="https://newsworldstream.com/pt-br-entendendo-o-gnulinux-um-ecossistema-de-liberdade-e-inovacao"> <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-left" viewBox="0 0 16 16"> <path fill-rule="evenodd" d="M15 8a.5.5 0 0 0-.5-.5H2.707l3.147-3.146a.5.5 0 1 0-.708-.708l-4 4a.5.5 0 0 0 0 .708l4 4a.5.5 0 0 0 .708-.708L2.707 8.5H14.5A.5.5 0 0 0 15 8z"/> </svg> Previous Article </a> </div> <h3 class="title text-end"> <a href="https://newsworldstream.com/pt-br-entendendo-o-gnulinux-um-ecossistema-de-liberdade-e-inovacao">[pt-BR] Entendendo o GNU/Linux: Um Ecossistema de Liberdade e Inovação</a> </h3> </div> <div class="col-sm-6 col-xs-12 right"> <div class="head-title text-start"> <a href="https://newsworldstream.com/combining-aws-monitoring-services-a-basic-example"> Next Article <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-arrow-right" viewBox="0 0 16 16"> <path fill-rule="evenodd" d="M1 8a.5.5 0 0 1 .5-.5h11.793l-3.147-3.146a.5.5 0 0 1 .708-.708l4 4a.5.5 0 0 1 0 .708l-4 4a.5.5 0 0 1-.708-.708L13.293 8.5H1.5A.5.5 0 0 1 1 8z"/> </svg> </a> </div> <h3 class="title text-start"> <a href="https://newsworldstream.com/combining-aws-monitoring-services-a-basic-example">Combining AWS Monitoring Services: A Basic Example</a> </h3> </div> </div> </div> <section class="section section-related-posts mt-5"> <div class="row"> <div class="col-12"> <div class="section-title"> <div class="d-flex justify-content-between align-items-center"> <h3 class="title">Related Posts</h3> </div> </div> <div class="section-content"> <div class="row"> <div class="col-sm-12 col-md-6 col-lg-4"> <div class="post-item"> <div class="image ratio"> <a href="https://newsworldstream.com/i-have-questions"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAEYAQMAAAD1c2RPAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAACVJREFUaN7twQEBAAAAgqD+r26IwAAAAAAAAAAAAAAAAAAAACDoP3AAASZRMyIAAAAASUVORK5CYII=" data-src="https://media2.dev.to/dynamic/image/width%3D1000,height%3D500,fit%3Dcover,gravity%3Dauto,format%3Dauto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F35n4n9ilcilyicvh21n4.png" alt="I have questions" class="img-fluid lazyload" width="269" height="160"/> </a> </div> <h3 class="title fsize-16"><a href="https://newsworldstream.com/i-have-questions">I have questions</a></h3> <p class="small-post-meta"> <span>Feb 7, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> <div class="col-sm-12 col-md-6 col-lg-4"> <div class="post-item"> <div class="image ratio"> <a href="https://newsworldstream.com/qiskit-in-2025-pioneering-quantum-solutions-across-industries"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAEYAQMAAAD1c2RPAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAACVJREFUaN7twQEBAAAAgqD+r26IwAAAAAAAAAAAAAAAAAAAACDoP3AAASZRMyIAAAAASUVORK5CYII=" data-src="https://www.javacodegeeks.com/wp-content/uploads/2012/10/software-development-2-logo.jpg" alt="Qiskit in 2025: Pioneering Quantum Solutions Across Industries" class="img-fluid lazyload" width="269" height="160"/> </a> </div> <h3 class="title fsize-16"><a href="https://newsworldstream.com/qiskit-in-2025-pioneering-quantum-solutions-across-industries">Qiskit in 2025: Pioneering Quantum Solutions Across Ind...</a></h3> <p class="small-post-meta"> <span>Mar 14, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> <div class="col-sm-12 col-md-6 col-lg-4"> <div class="post-item"> <div class="image ratio"> <a href="https://newsworldstream.com/how-to-run-edge-as-administrator-on-windows-11-5-best-ways"> <img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAcIAAAEYAQMAAAD1c2RPAAAAA1BMVEUAAACnej3aAAAAAXRSTlMAQObYZgAAACVJREFUaN7twQEBAAAAgqD+r26IwAAAAAAAAAAAAAAAAAAAACDoP3AAASZRMyIAAAAASUVORK5CYII=" data-src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fwinsides.com%2Fwp-content%2Fuploads%2F2025%2F01%2FSearch-for-Edge-right-click-and-click-Run-as-Administrator.webp" alt="How to Run Edge as Administrator on Windows 11? 5+ Best Ways!" class="img-fluid lazyload" width="269" height="160"/> </a> </div> <h3 class="title fsize-16"><a href="https://newsworldstream.com/how-to-run-edge-as-administrator-on-windows-11-5-best-ways">How to Run Edge as Administrator on Windows 11? 5+ Best...</a></h3> <p class="small-post-meta"> <span>Feb 15, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> </div> </div> </div> </section> <section class="section section-comments mt-5"> <div class="row"> <div class="col-12"> <div class="nav nav-tabs" id="navTabsComment" role="tablist"> <button class="nav-link active" data-bs-toggle="tab" data-bs-target="#navComments" type="button" role="tab">Comments</button> </div> <div class="tab-content" id="navTabsComment"> <div class="tab-pane fade show active" id="navComments" role="tabpanel" aria-labelledby="nav-home-tab"> <form id="add_comment"> <input type="hidden" name="parent_id" value="0"> <input type="hidden" name="post_id" value="428942"> <div class="form-row"> <div class="row"> <div class="form-group col-md-6"> <label>Name</label> <input type="text" name="name" class="form-control form-input" maxlength="40" placeholder="Name"> </div> <div class="form-group col-md-6"> <label>Email</label> <input type="email" name="email" class="form-control form-input" maxlength="100" placeholder="Email"> </div> </div> </div> <div class="form-group"> <label>Comment</label> <textarea name="comment" class="form-control form-input form-textarea" maxlength="4999" placeholder="Leave your comment..."></textarea> </div> <div class="form-group"> <script src="https://www.google.com/recaptcha/api.js?hl=en"></script><div class="g-recaptcha" data-sitekey="6LdPZ7IqAAAAAHccklF1YxzrgBnZ-2f6Qklxx6kB" data-theme="dark"></div> </div> <button type="submit" class="btn btn-md btn-custom">Post Comment</button> </form> <div id="message-comment-result" class="message-comment-result"></div> <div id="comment-result"> <input type="hidden" value="5" id="post_comment_limit"> <div class="row"> <div class="col-sm-12"> <div class="comments"> <ul class="comment-list"> </ul> </div> </div> </div> </div> </div> </div> </div> </div> </section> </div> </div> <div class="col-md-12 col-lg-4"> <div class="col-sidebar sticky-lg-top"> <div class="row"> <div class="col-12"> <div class="sidebar-widget"> <div class="widget-head"><h4 class="title">Popular Posts</h4></div> <div class="widget-body"> <div class="row"> <div class="col-12"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/peta-calls-to-end-groundhog-day-tradition-replace-punxsutawney-phil-with-vegan-weather-reveal-cake"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://a57.foxnews.com/static.foxnews.com/foxnews.com/content/uploads/2025/01/931/523/copy-of-right-inset-7.png?ve=1&tl=1#" alt="PETA calls to end Groundhog Day tradition, replace Punxsutawney Phil with 'vegan weather reveal cake'" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/peta-calls-to-end-groundhog-day-tradition-replace-punxsutawney-phil-with-vegan-weather-reveal-cake">PETA calls to end Groundhog Day tradition, replace...</a></h3> <p class="small-post-meta"> <span>Jan 28, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> <div class="col-12"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/get-more-leads-more-customers-more-revenue-the-power-of-email-list-builders-74"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://www.dewassoc.com/wp-content/uploads/2024/03/Email-List-Builder.webp" alt="Get More Leads, More Customers, More Revenue ─ The Power of Email List Builders" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/get-more-leads-more-customers-more-revenue-the-power-of-email-list-builders-74">Get More Leads, More Customers, More Revenue ─ The...</a></h3> <p class="small-post-meta"> <span>Jan 26, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> <div class="col-12"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/2025-brier-scores-standings-and-schedule"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://www.sportsnet.ca/wp-content/uploads/2025/02/gushue_brad1280.jpg?#" alt="2025 Brier: Scores, standings and schedule" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/2025-brier-scores-standings-and-schedule">2025 Brier: Scores, standings and schedule</a></h3> <p class="small-post-meta"> <span>Mar 1, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> <div class="col-12"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/california-sheriff-puts-accused-hardened-criminals-to-work-at-taxpayers-benefit"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://a57.foxnews.com/static.foxnews.com/foxnews.com/content/uploads/2025/02/931/523/072518-egg-production_6866-scaled.jpg?ve=1&tl=1#" alt="California sheriff puts accused hardened criminals to work at taxpayers’ benefit" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/california-sheriff-puts-accused-hardened-criminals-to-work-at-taxpayers-benefit">California sheriff puts accused hardened criminals...</a></h3> <p class="small-post-meta"> <span>Feb 24, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> <div class="col-12"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/how-to-integrate-custom-authentication-from-your-existing-website-using-flarum-api-flarum-sso-and-js-cookie"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://media2.dev.to/dynamic/image/width%3D1000,height%3D500,fit%3Dcover,gravity%3Dauto,format%3Dauto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuq0z1xtwsjh4rnwzt883.png" alt="How to Integrate Custom Authentication from Your Existing Website Using Flarum API, Flarum-SSO, and JS-Cookie" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/how-to-integrate-custom-authentication-from-your-existing-website-using-flarum-api-flarum-sso-and-js-cookie">How to Integrate Custom Authentication from Your E...</a></h3> <p class="small-post-meta"> <span>Feb 14, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> </div> </div> </div> <div class="sidebar-widget"> <div class="widget-head"><h4 class="title">Recommended Posts</h4></div> <div class="widget-body"> <div class="row"> <div class="col-12"> <div class="tbl-container post-item-small post-item-no-image"> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/a-comprehensive-guide-to-business-setup-in-saudi-arabia">A Comprehensive Guide to Business Setup in Saudi A...</a></h3> <p class="small-post-meta"> <span>Jan 30, 2025</span> <span><i class="icon-comment"></i> 1</span> </p> </div> </div> </div> <div class="col-12"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/Computer-Vision-as-a-Service-CVaaS"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://macgence.com/wp-content/uploads/2025/01/Computer-Vision-as-a-Service-CVaaS.png" alt="Computer Vision as a Service (CVaaS): Redefining AI Innovation" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/Computer-Vision-as-a-Service-CVaaS">Computer Vision as a Service (CVaaS): Redefining A...</a></h3> <p class="small-post-meta"> <span>Jan 29, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> <div class="col-12"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/Why-Domain-Specific-Data-Matters-for-AI-Agents"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://macgence.com/wp-content/uploads/2025/01/Domain-Specific-Data-for-AI-Agents.png" alt="Why Domain-Specific Data Matters for AI Agents" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/Why-Domain-Specific-Data-Matters-for-AI-Agents">Why Domain-Specific Data Matters for AI Agents</a></h3> <p class="small-post-meta"> <span>Jan 28, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </div> </section> <style> .post-text img { display: none !important; } .post-content .post-summary { display: none; } </style> <script type="application/ld+json">[{ "@context": "http://schema.org", "@type": "Organization", "url": "https://newsworldstream.com", "logo": {"@type": "ImageObject","width": 190,"height": 60,"url": "https://newsworldstream.com/assets/img/logo.svg"},"sameAs": [] }, { "@context": "http://schema.org", "@type": "WebSite", "url": "https://newsworldstream.com", "potentialAction": { "@type": "SearchAction", "target": "https://newsworldstream.com/search?q={search_term_string}", "query-input": "required name=search_term_string" } }] </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "NewsArticle", "mainEntityOfPage": { "@type": "WebPage", "@id": "https://newsworldstream.com/desktop-apps-for-windows-xp-in-2025" }, "headline": "Desktop apps for Windows XP in 2025", "name": "Desktop apps for Windows XP in 2025", "articleSection": "Programming", "image": { "@type": "ImageObject", "url": "https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8ir0c4ln7oxhgorwza5q.png", "width": 750, "height": 500 }, "datePublished": "2025-02-10T22:50:42+0100", "dateModified": "2025-02-10T22:50:42+0100", "inLanguage": "en", "keywords": "Desktop, apps, for, Windows, 2025", "author": { "@type": "Person", "name": "tedwalid" }, "publisher": { "@type": "Organization", "name": "NewsWorldStream", "logo": { "@type": "ImageObject", "width": 190, "height": 60, "url": "https://newsworldstream.com/assets/img/logo.svg" } }, "description": " Intro Inspired by the Action Retro YouTube channel trying to get Spotify to run on Windows XP, I thought I'd share a quick walk through of using NW.js for Windows XP development. NW.js is a modified Chromium browser with Node.js built in. It has an older "Long Term Support" (LTS) release (v0.14.7) that supports "Legacy Operating Systems", like Windows XP and OSX 10.6. However, it is pretty old at this point and has some caveats. But we'll get there. Boot up XP First off I'm going to boot up my old Win Pro SP3 virtual machine. I'd recommend setting up your own, there are guides online for that, or just using real hardware. Download NW.js Go to this archive for version 0.14.7: http://dl.nwjs.io/v0.14.7 I'll explain the different flavors: "nwjs-sdk-symbol*" and "nwjs-symbol*" files are for advanced use cases, you won't need these. "nwjs-sdk-v0.14.7*" Is NW.js with Chromium dev tools built in "nwjs-v0.14.7*" Is the same thing, just without the dev tools, so it is slightly smaller. This is for distribution to end users Then they'll have the operating system (win, lin, osx) And then the architecture, 32-Bit (ia32) and 64-Bit (x64) I assume you'll want nwjs-sdk-v0.14.7-win-ia32.zip. But if you plan on distributing this for others to download, they probably won't need the dev tools, so you can use the slightly smaller version for them. The 32-bit version will run on both 32 and 64-bit versions of Windows just fine. It will also run on XP, Vista, 7, 8, 8.1, 10, 11, and 12, and likely anything else in the future as Microsoft has always prioritized backwards compatibility. But who knows, 11 and 12 are so bad I wouldn't be surprised at what they do anymore. Honestly, having to use 11 so much recently and then booting up this XP VM is just pissing me off at much better XP is. Setting it up You downloaded a zip file, good job! You should be able to open it and drag the folder out to your desktop or wherever. Feel free to rename the folder from "nwjs-sdk-v0.14.7-win-ia32" to "MyApp" or whatever. Inside the folder is all the files NW.js needs to run, it doesn't need installed, it works sort of like a portable app. So you can just double-click on nw.exe to see a window pop up, then you can close the window. The nw.exe file can be renamed to whatever you want, MyApp.exe for example, and you can even use a tool like ResourceHacker to edit it and change the icon to any ICO file you want. You can grab a random ICO file from the IconArchive website, or use a tool like Greenfish Icon Editor to convert any image file to an ICO. All of that runs fine on Windows XP+. Creating an app Inside your "MyApp" folder, create a new folder called package.nw. All of your code and files will live inside this folder. Which makes it easy to copy it around to other versions of NW.js later. As long as the package.nw folder is next to the nw.exe (or whatever you renamed it to), it will work. Then, inside the package.nw folder create a package.json file. This is the first thing the nw.exe file will look for when it launches. It tells it what to do next. Inside the file there are only 2 required fields so we'll start with those: name - This is the name of your app. It is required because any time you open NW.js, Chromium will control showing a window, and Chromium needs to make a bunch of user-specific files. So for Windows XP that would be at C:\\Documents and Settings\\YourUserName\\Local Settings\\Application Data\\my-app. The "my-app" part is whatever you put in this name field. It must be a url and file-system safe name. I'd recommend all lowercase and hyphens instead of spaces. main - This tells NW.js what to load in the window when it launches. Usually you'd set it to index.html and then create that file and put whatever you want in it to make your app. However you can also set it to a URL, so we'll start there, as it will show an XP specific problem we'll need to solve. MyApp\\package.nw\\package.json { "name": "my-app", "main": "https://google.com" } With that in place, now when you run nw.exe, it will open a window and take you to Google.com. Or at least, that's what it would do, but instead you'll see this: Chromium dropped support for XP a long time ago. So we must use a very old version that still works with XP. However, the certificate it ships with is now long expired. We can work around this by adding one more item to the package.json file: { "name": "my-app", "main": "https://google.com", "chromium-args": "--ignore-certificate-errors" } Save that, and re-run nw.exe and now it should launch a window with Google loaded inside it. There are a bunch of other settings you can put in the package.json, including adjusting the starting window size and position. More information can be found in the docs: https://nwjs.readthedocs.io/en/latest/References/Manifest%20Format/ Version stuff At this point you can make whatever you" } </script> <footer id="footer"> <div class="footer-inner"> <div class="container-xl"> <div class="row justify-content-between"> <div class="col-sm-12 col-md-6 col-lg-4 footer-widget footer-widget-about"> <div class="footer-logo"> <img src="https://newsworldstream.com/assets/img/logo-footer.svg" alt="logo" class="logo" width="240" height="90"> </div> <div class="footer-about"> NewsWorldStream provides you with real-time access to the latest global news from various sources in all available languages. Stay updated on world events, all in one place. </div> </div> <div class="col-sm-12 col-md-6 col-lg-4 footer-widget"> <h4 class="widget-title">Most Viewed Posts</h4> <div class="footer-posts"> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/glenn-close-grapples-with-ai-threat-in-hollywood-what-is-going-to-be-truth"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://nypost.com/wp-content/uploads/sites/2/2025/01/glenn-close-sundance-film-festival-97288899.jpg?w=1024#" alt="Glenn Close grapples with AI threat in Hollywood: ‘What is going to be truth?’" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/glenn-close-grapples-with-ai-threat-in-hollywood-what-is-going-to-be-truth">Glenn Close grapples with AI threat in Hollywood: ...</a></h3> <p class="small-post-meta"> <span>Jan 27, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/peta-calls-to-end-groundhog-day-tradition-replace-punxsutawney-phil-with-vegan-weather-reveal-cake"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://a57.foxnews.com/static.foxnews.com/foxnews.com/content/uploads/2025/01/931/523/copy-of-right-inset-7.png?ve=1&tl=1#" alt="PETA calls to end Groundhog Day tradition, replace Punxsutawney Phil with 'vegan weather reveal cake'" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/peta-calls-to-end-groundhog-day-tradition-replace-punxsutawney-phil-with-vegan-weather-reveal-cake">PETA calls to end Groundhog Day tradition, replace...</a></h3> <p class="small-post-meta"> <span>Jan 28, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> <div class="tbl-container post-item-small"> <div class="tbl-cell left"> <div class="image"> <a href="https://newsworldstream.com/non-sanctuary-coastal-enclave-sues-california-for-right-to-enforce-its-own-laws"> <img src="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==" data-src="https://a57.foxnews.com/static.foxnews.com/foxnews.com/content/uploads/2025/01/931/523/huntington-beach.jpg?ve=1&tl=1#" alt="'Non-sanctuary' coastal enclave sues California for right to enforce its own laws" class="img-fluid lazyload" width="130" height="91"/> </a> </div> </div> <div class="tbl-cell right"> <h3 class="title"><a href="https://newsworldstream.com/non-sanctuary-coastal-enclave-sues-california-for-right-to-enforce-its-own-laws">'Non-sanctuary' coastal enclave sues California fo...</a></h3> <p class="small-post-meta"> <span>Jan 28, 2025</span> <span><i class="icon-comment"></i> 0</span> </p> </div> </div> </div> </div> <div class="col-sm-12 col-md-6 col-lg-4 footer-widget"> <h4 class="widget-title">Newsletter</h4> <div class="newsletter"> <p class="description">Join our subscribers list to get the latest news, updates and special offers directly in your inbox</p> <form id="form_newsletter_footer" class="form-newsletter"> <div class="newsletter-inputs"> <input type="email" name="email" class="form-control form-input newsletter-input" maxlength="199" placeholder="Email"> <button type="submit" name="submit" value="form" class="btn btn-custom newsletter-button">Subscribe</button> </div> <input type="text" name="url"> <div id="form_newsletter_response"></div> </form> </div> <div class="footer-social-links"> <ul> </ul> </div> </div> </div> </div> </div> <div class="footer-copyright"> <div class="container-xl"> <div class="row align-items-center"> <div class="col-sm-12 col-md-6"> <div class="copyright text-start"> Copyright 2025 NewsWorldStream.com - All Rights Reserved </div> </div> <div class="col-sm-12 col-md-6"> <div class="nav-footer text-end"> <ul> <li><a href="https://newsworldstream.com/publish-with-us">Publish With Us </a></li> <li><a href="https://newsworldstream.com/terms-conditions">Terms & Conditions </a></li> <li><a href="https://newsworldstream.com/news-source">News Source </a></li> <li><a href="https://newsworldstream.com/cookies-policy">Cookies Policy </a></li> <li><a href="https://newsworldstream.com/privacy-policy">Privacy Policy </a></li> <li><a href="https://newsworldstream.com/download-app">Download App </a></li> <li><a href="https://newsworldstream.com/delete-your-account">Delete Your Account </a></li> </ul> </div> </div> </div> </div> </div> </footer> <a href="#" class="scrollup"><i class="icon-arrow-up"></i></a> <div class="cookies-warning"> <button type="button" aria-label="close" class="close" onclick="closeCookiesWarning();"> <svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" fill="currentColor" class="bi bi-x" viewBox="0 0 16 16"> <path d="M4.646 4.646a.5.5 0 0 1 .708 0L8 7.293l2.646-2.647a.5.5 0 0 1 .708.708L8.707 8l2.647 2.646a.5.5 0 0 1-.708.708L8 8.707l-2.646 2.647a.5.5 0 0 1-.708-.708L7.293 8 4.646 5.354a.5.5 0 0 1 0-.708z"/> </svg> </button> <div class="text"> <p>This site uses cookies. By continuing to browse the site you are agreeing to our use of cookies.</p> </div> <button type="button" class="btn btn-md btn-block btn-custom" aria-label="close" onclick="closeCookiesWarning();">Accept Cookies</button> </div> <script src="https://newsworldstream.com/assets/themes/magazine/js/jquery-3.6.1.min.js "></script> <script src="https://newsworldstream.com/assets/vendor/bootstrap/js/bootstrap.bundle.min.js "></script> <script src="https://newsworldstream.com/assets/themes/magazine/js/plugins-2.3.js "></script> <script src="https://newsworldstream.com/assets/themes/magazine/js/script-2.3.min.js "></script> <script>$("form[method='post']").append("<input type='hidden' name='sys_lang_id' value='1'>");</script> <script>if ('serviceWorker' in navigator) {window.addEventListener('load', function () {navigator.serviceWorker.register('https://newsworldstream.com/pwa-sw.js').then(function (registration) {}, function (err) {console.log('ServiceWorker registration failed: ', err);}).catch(function (err) {console.log(err);});});} else {console.log('service worker is not supported');}</script> <!-- Matomo --> <script> var _paq = window._paq = window._paq || []; /* tracker methods like "setCustomDimension" should be called before "trackPageView" */ _paq.push(['trackPageView']); _paq.push(['enableLinkTracking']); (function() { var u="//analytics.djaz.one/"; _paq.push(['setTrackerUrl', u+'matomo.php']); _paq.push(['setSiteId', '24']); var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0]; g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s); })(); </script> <!-- End Matomo Code --> </body> </html>