Skip to content

Conversation

l0rd
Copy link
Member

@l0rd l0rd commented Oct 13, 2025

Fixes #22994 and #25968

This PR introduces a redesigned Windows installer for Podman that supports both user-level and machine-level installation scopes.

The new installer uses a simpler single MSI architecture compared to the legacy WiX Bundle-based approach, making it easier to maintain and debug.

new-legacy-compare control-panel-compare

New installer details

1. Installer Architecture

  • Single MSI design: Replaces the legacy WiX Bundle (burn.wxs) with a streamlined single MSI package
  • The legacy installer required a complex bootstrapper to manage multiple MSI packages
  • The new approach is more maintainable with fewer moving parts

2. Dual-Scope Support

Users can now choose between:

  • User scope: Installs Podman for the current user only (no admin privileges required) in %LOCALAPPDATA%\Programs\Podman (same path as Podman Desktop)
  • Machine scope: Installs Podman system-wide for all users (requires admin privileges) in %PROGRAMFILES%\Podman (no more Red Hat in the path)

3. Automated Testing

  • New test.ps1: validates both user and machine scope installations
  • Tests upgrade and uninstall scenarios

5. Build

  • Refactored contrib/win-installer/build.ps1 for better clarity
  • Updated winmake.ps1 to support new installer architecture

6. CI and release process

  • Modified CI workflows to build and publish both new and legacy installers (.github/workflows/release.yml, upload-win-installer.yml)
  • Updated Cirrus CI integration to build and test both new and legacy installer

Legacy Installer

The previous WiX Bundle-based installer has been moved to contrib/win-installer-legacy/ for reference and will be removed in a future release once the new installer is proven stable.

⚠️ Migration from Legacy Installer

Important: Users with existing Podman installations must uninstall Podman first before installing with the new installer.

The new installer will return an error if an existing installation is detected:

legacy-migration-error

The good news is that uninstalling Podman doesn't delete the data (containers, images, machines etc...). The uninstall process only removes the Podman binaries and installation files. After uninstalling the old version, you can install the new version and continue using your existing containers, images, and machines without any data loss.

Does this PR introduce a user-facing change?

Windows installer redesigned with a simpler single MSI architecture that supports both user-scope (no admin required) and machine-scope installations. Note: Users must uninstall existing Podman installations before using the new installer, but all containers, images, machines, and other data will be preserved.

Copy link
Contributor

openshift-ci bot commented Oct 13, 2025

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: l0rd

The full list of commands accepted by this bot can be found here.

The pull request process is described here

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@openshift-ci openshift-ci bot added the approved Indicates a PR has been approved by an approver from all required OWNERS files. label Oct 13, 2025
@l0rd l0rd force-pushed the rootless-win-installer-first-draft branch 2 times, most recently from b0a7c83 to 06b7c3a Compare October 13, 2025 15:36
@mheon
Copy link
Member

mheon commented Oct 13, 2025

I assume test.ps1 is running in our CI? I looked, but I couldn't find the code in the PR - probably just due to the amount of changes.

@l0rd l0rd force-pushed the rootless-win-installer-first-draft branch from 06b7c3a to bf0a47d Compare October 14, 2025 10:53
@l0rd
Copy link
Member Author

l0rd commented Oct 14, 2025

I assume test.ps1 is running in our CI? I looked, but I couldn't find the code in the PR - probably just due to the amount of changes.

Yes. The cirrus.yaml task win_installer_task executes contrib/cirrus/win-installer-main.ps1 (that hasn't changed).

And win-installer-main.ps1 has been modified so that now it calls both:

Copy link

[NON-BLOCKING] Packit jobs failed. @containers/packit-build please check. Everyone else, feel free to ignore.

-v531SetupExePath ".\contrib\win-installer\podman-5.3.1-dev-setup.exe" `
-provider hyperv
```
`` pwsh
Copy link
Member

Choose a reason for hiding this comment

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

Don't we need 3 of ` for block formatting here?

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes, you are right. But I removed that anyway.

Copy link
Member

@lsm5 lsm5 left a comment

Choose a reason for hiding this comment

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

LGTM as best I can tell.

@gbraad
Copy link
Member

gbraad commented Oct 14, 2025

@anjannath This might also be of interest to you/us.

@baude
Copy link
Member

baude commented Oct 14, 2025

@craigloewen-msft ptal

Copy link
Contributor

@lstocchi lstocchi left a comment

Choose a reason for hiding this comment

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

Tried on my machine. Works great 👍

if ($version[0] -eq "v") {
$version = $version.Substring(1)
# Check if WiX Toolset is installed
Invoke-Expression 'dotnet tool list --global wix' `
Copy link
Contributor

Choose a reason for hiding this comment

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

In the doc you added that one must install wix version 5.0.2 (dotnet tool install --global wix --version 5.0.2) but here there is no check about the version. Not sure if there was a reasoning behind it bc i generated the binary with wix version 6 and it worked fine but you could add a version check if it's important.

Copy link
Member Author

Choose a reason for hiding this comment

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

It's related to the new WiX licensing model. Currently we cannot use WiX 6 when releasing the Podman installer. If a user tests locally with WiX 6 it should work too though so I don't think it's worth adding a version check here. But I have added an explanation for the v5.0.2 suggestion.

@l0rd l0rd force-pushed the rootless-win-installer-first-draft branch from bf0a47d to 9b87a04 Compare October 15, 2025 15:42
@l0rd l0rd force-pushed the rootless-win-installer-first-draft branch from 9b87a04 to 9dbc33b Compare October 15, 2025 16:50
@baude baude added the 5.7 label Oct 15, 2025
@baude
Copy link
Member

baude commented Oct 15, 2025

LGTM as well.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

5.7 approved Indicates a PR has been approved by an approver from all required OWNERS files. release-note

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Windows podman installation without admin rights

7 participants