Skip to content

feat: add windows installer - #333

Merged
tgilon merged 32 commits into
masterfrom
feat/add-windows-installer
Jan 8, 2026
Merged

feat: add windows installer#333
tgilon merged 32 commits into
masterfrom
feat/add-windows-installer

Conversation

@coroa

@coroa coroa commented Dec 17, 2025

Copy link
Copy Markdown
Member

This PR closes #335

Changes proposed in this Pull Request

Adds an automatically built Windows installer (e.g., open-tyndp-0.4.0-pixi-Windows-x86_64.exe) with GitHub Actions automation for releases.

How It Works

  1. Installation: Copies pixi.exe to %LOCALAPPDATA%\open-tyndp
  2. Repository Setup: Bundles shallow repository clone directly in installer
  3. Environment Installation: Runs pixi install to download and set up conda environment
  4. Shortcuts: Creates Start Menu shortcuts that activate environment via pixi shell

Implementation Details

  • Installer script: NSIS-based installer in utils/windows-installer/installer.nsi
  • Build automation: .github/workflows/release-installer.yaml builds on release tags
  • Repository bundling: Installer includes shallow repository clone (ie is for one specific version)
  • Dependencies: Git added to Windows pixi environment for post-install updates

Notes

Users can still update via git after installation since git is included in the environment. The bundled repository ensures the installer always provides a working, tested version.

Tests

Installer ran successfully on virtualbox VM running Windows 10 Pro and on GCP Windows Server 2022.

Screenshots

Installing

image image

Shortcuts

image

Running

image

Uninstalling

image

Checklist

  • I tested my contribution locally and it works as intended.
  • Code and workflow changes are sufficiently documented.
  • Changed dependencies are added to pixi.toml (git added for Windows).
  • Changes in configuration options are added in config/config.default.yaml.
  • Changes in configuration options are documented in doc/configtables/*.csv.
  • Changes in configuration options are added in config/test/*.yaml.
  • Open-TYNDP SPDX license header added to all touched files.
  • Sources of newly added data are documented in doc/data_sources.rst.
  • New rules are documented in the appropriate doc/*.rst files.
  • A release note doc/release_notes.rst is added.
  • Major features are documented with up-to-date information in README (installer README).
  • Module docstrings added to new Python scripts.

@coroa
coroa force-pushed the feat/add-windows-installer branch from c13868c to bcf3ce3 Compare December 18, 2025 11:23
@coroa

coroa commented Dec 18, 2025

Copy link
Copy Markdown
Member Author

Ok, this one is ready for review. Not sure, how you want to go about testing this and where, @lisazeyen ?

@lisazeyen

Copy link
Copy Markdown
Collaborator

Looks very nice! Maybe as a first step @cdgaete can test it?

@coroa

coroa commented Dec 18, 2025

Copy link
Copy Markdown
Member Author

Looks very nice! Maybe as a first step @cdgaete can test it?

Carlos, you can find a prepared installer at: https://drive.google.com/open?id=1_8PXajcZQm08n6e_C7sPO1f5peHalaiS&usp=drive_copy

@coroa
coroa force-pushed the feat/add-windows-installer branch from 34204d9 to 4bf6d8a Compare January 5, 2026 18:08
@coroa

coroa commented Jan 5, 2026

Copy link
Copy Markdown
Member Author

@tgilon @lisazeyen I split out the few small fixes like normalizing the line endings into #357 . This should make the review of this PR quite a bit easier.

pyogrio >=0.12.0 returns JSON fields directly as dicts/lists, so that loading them again
as json fails.

refer to https://github.com/geopandas/pyogrio/releases/tag/v0.12.0 .
@coroa
coroa requested review from lisazeyen and tgilon January 5, 2026 20:46

@tgilon tgilon left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @coroa for this PR! This is a significant step forward to improve the cross-platform compatibility of our work. I haven't tested the installer myself, but the code looks good.

Some additional comments:

  • Could you specify somewhere the Windows version you used to test things? I think it's important for reproducibility purposes.
  • Could you also add this as a new feature in both in README and in index.rst?
  • There is a typo in the PR description. It's not pixi_installer.nsi but installer.nsi.

Comment thread utils/windows-installer/build_installer.sh
Comment thread utils/windows-installer/build_installer.sh Outdated
Comment thread utils/windows-installer/build_installer.sh Outdated
Comment thread utils/windows-installer/README.md Outdated
Comment thread utils/windows-installer/installer.nsi
Comment thread pixi.toml
Comment thread utils/windows-installer/build_installer.sh Outdated

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is difficult to review. Have you tested it?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, this is still untested. it would need to be run on an existing release. i think i could run it on 0.4.1.

@coroa coroa Jan 7, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd propose to merge this and #357 now and try to create a 0.4.2a1 release, ie. an alpha release.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good for me to release an alpha. Following the SemVer convention, I would suggest v0.4.2-alpha and mark it as a pre-release.

@coroa coroa Jan 8, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As always everyone has their own ideas about how stuff ideally looks like: Python packaging user guide, but python is flexible and will be fine with your suggestion too, ie check the section on normalization.

Comment thread doc/installation.rst
Windows Installer (Recommended for Windows)
============================================

For Windows users, the easiest way to install Open-TYNDP is using the automated installer. Download the latest installer executable (e.g., ``open-tyndp-0.4.0-pixi-Windows-x86_64.exe``) from the `GitHub releases page <https://github.com/open-energy-transition/open-tyndp/releases>`__ and run it.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What do you think about releasing a v0.4.2 to get the installer attached to the latest release?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

that would be ideal i think.

Comment thread doc/installation.rst Outdated
@coroa

coroa commented Jan 7, 2026

Copy link
Copy Markdown
Member Author

Ok, i think i addressed everything except for:

  • Could you also add this as a new feature in both in README and in index.rst?

@tgilon What do you mean by that?

@coroa

coroa commented Jan 7, 2026

Copy link
Copy Markdown
Member Author

Zenodo making waves again: PyPSA/powerplantmatching#276 . We did not change anything in the PR commits. I'd merge w/o waiting for CI.

@tgilon

tgilon commented Jan 7, 2026

Copy link
Copy Markdown
Member
  • Could you also add this as a new feature in both in README and in index.rst?

@tgilon What do you mean by that?

We usually document major features in the documentation itself. I think that this PR is one of them. I suggest adding it to the list of major features in both doc/index.rst and README.

@coroa

coroa commented Jan 7, 2026

Copy link
Copy Markdown
Member Author
  • Could you also add this as a new feature in both in README and in index.rst?

@tgilon What do you mean by that?

We usually document major features in the documentation itself. I think that this PR is one of them. I suggest adding it to the list of major features in both doc/index.rst and README.

I unfortunately broke my open-tyndp time budget for at least this week already. Maybe can get to it next week.

@daniel-rdt

Copy link
Copy Markdown
Member
  • Could you also add this as a new feature in both in README and in index.rst?

@tgilon What do you mean by that?

We usually document major features in the documentation itself. I think that this PR is one of them. I suggest adding it to the list of major features in both doc/index.rst and README.

I unfortunately broke my open-tyndp time budget for at least this week already. Maybe can get to it next week.

Maybe @tgilon or I can address the last change in the README and index.rst, so we can merge sooner? Or am I missing any other open tasks on this PR? @coroa

@tgilon

tgilon commented Jan 8, 2026

Copy link
Copy Markdown
Member

Maybe @tgilon or I can address the last change in the README and index.rst, so we can merge sooner? Or am I missing any other open tasks on this PR? @coroa

I just did it in 73b9de1. I'm currently running the tests locally.

@daniel-rdt

Copy link
Copy Markdown
Member

Maybe @tgilon or I can address the last change in the README and index.rst, so we can merge sooner? Or am I missing any other open tasks on this PR? @coroa

I just did it in 73b9de1. I'm currently running the tests locally.

Ah great! Thanks!

@tgilon

tgilon commented Jan 8, 2026

Copy link
Copy Markdown
Member

As reported in PyPSA/powerplantmatching#276, powerplantmatching has retrieval issues. Local tests passed with d121000

@coroa

coroa commented Jan 8, 2026

Copy link
Copy Markdown
Member Author

As reported in PyPSA/powerplantmatching#276, powerplantmatching has retrieval issues. Local tests passed with d121000

Fine with me to merge then! Thanks for the assist

@tgilon

tgilon commented Jan 8, 2026

Copy link
Copy Markdown
Member

As reported in PyPSA/powerplantmatching#276, powerplantmatching has retrieval issues. Local tests passed with d121000

Same on d76983c, merging now

@tgilon
tgilon merged commit 5486e7e into master Jan 8, 2026
4 of 5 checks passed
@tgilon
tgilon deleted the feat/add-windows-installer branch January 8, 2026 18:20
@coroa coroa mentioned this pull request Jan 13, 2026
2 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[SUB] Create a windows installer

4 participants