Commit graph

48 commits

Author SHA1 Message Date
Mario Loriedo
988860edb7
Merge pull request #29211 from l0rd/win-installer-rm-is_upgrade
Windows installer: remove unused IS_UPGRADE property
2026-07-22 09:41:23 +02:00
Mario Loriedo
cee109e255 Windows installer: remove unused IS_UPGRADE property
This is a followup after @lstocchi comment:

https://github.com/podman-container-tools/podman/pull/29169#discussion_r3588942348

The property `IS_UPGRADE` isn't set and was a leftover of the legacy
windows installer.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-07-17 16:32:18 +02:00
Mario Loriedo
a572711c84 Fix Windows installer machine scope PATH update
Update Podman Windows installer to update the PATH for all users if
executed in machine scope mode.

Added a new test that checks if Podman installation folder is in PATH.

Fixes #29160

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-07-16 17:56:01 +02:00
Mario Loriedo
6ae463a9cd Windows installer tests: download v5.8.3 of the setup bundle
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-06-25 11:23:49 +02:00
Mario Loriedo
ff9f192f4d Update gh org from which releases are pulled in pswh scripts
Use https://api.github.com/repos/podman-container-tools/podman/releases.

That may eventually fix
https://github.com/podman-container-tools/podman/issues/28850 based on
https://docs.github.com/en/actions/concepts/security/github_token:

> The token's permissions are limited to the repository that contains your
> workflow.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-06-05 18:35:41 +02:00
Mario Loriedo
7c7d56a0fb Use GH token to download Podman release in utils.ps1
This is to avoid requests failing due to GitHub's non-authenticated
request rate limit.

See [this PR check
failure](https://github.com/podman-container-tools/podman-sandbox/actions/runs/26632208486/job/78483599334?pr=5)
for an example of such a failure.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-05-29 13:48:05 +02:00
Mario Loriedo
53fc1d902e Install WiX v5.0.2 to build the Windows installer
To avoid failures such as

https://github.com/containers/podman/actions/runs/24401569105/job/71274410909#step:10:78

use version v5.0.2 of WiX as we do in CI images:

fe80516848/win_images/win_packaging.ps1 (L27)

Related to issue https://github.com/containers/podman/issues/27042

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-04-14 18:44:58 +02:00
Mario Loriedo
f71465a025 Fix PowerShell Write-Error multi-line argument
This is a follow-up of d04c84e7 and fixes the error message that is
displayed if someone tries to run `contrib/win-installer/build.ps1` but
doesn't have the .NET SDK installed.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-01-27 15:06:51 +01:00
Jeff MAURY
d04c84e783
fix: generate correct error message if Wix is not installed
Fixes #27955

Signed-off-by: Jeff MAURY <jmaury@redhat.com>
2026-01-26 14:11:35 +01:00
Mario Loriedo
74043cf726 Remove legacy win installer files
The old setup bundle was still built and released to avoid breaking
downstream projects. This commit removes it and, starting from Podman
v6, only the installer that doesn't require elevated privileges will be
released.

This is a subtask of issue #27624.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2026-01-05 12:19:44 +01:00
Ashley Cui
ec5e40ae42 Allow RC Windows Installer to be built
The windows installer doesn't like -rc's because it's not strictly semver, but this error can be suppressed.

Signed-off-by: Ashley Cui <acui@redhat.com>
2025-10-29 17:32:31 -04:00
Mario Loriedo
dad3111a3d Fix Windows Installer GH release
Function `SignItem` used the helper `CheckCommand` that got removed as
part of #27284. As a result the GH release job failed
https://github.com/containers/podman/actions/runs/18792520254/job/53626352685

This commit address that.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-10-27 14:21:32 +01:00
Mario Loriedo
9dbc33bb25 Add a new Windows installer supporting user scope
Fixes #22994 and #25968

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-10-15 18:50:03 +02:00
Mario Loriedo
35e1c2033a Fix windows arm64 installer build
This is a followup of https://github.com/containers/podman/pull/26048

It fixes `process-release.ps1` that was always looking for the amd64 release
zip file, even if `$env:PODMAN_ARCH` was set to arm64. With this fix it looks
for the right zip file.

It fixes `winmake.ps1` that, when the `-arch` param was not passed, set `$env:PODMAN_ARCH`
to the empty string instead of the local `$env:GOARCH`.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-05-07 18:33:32 +02:00
Mario Loriedo
7fddbd4d4d Update winmake.ps1 to build arm64 artifacts
Winmake could only build amd64 artifacts (podman-remote, gvproxy,
win-sshproxy, podman.msi and podman-setup.exe).

This commit makes the necessary change to winmake so that it:
1) builds arm64 artifacts when executed on arm64
2) cross-compiles to arm64/amd64 with the  `-architecture` parameter

It depends on https://github.com/containers/podman/pull/26023 that
removes the need to build `check.c` code (that is not used anyway).

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-05-02 20:22:28 +02:00
Mario Loriedo
9c5f7662d1 Remove providers checks from the Windows Installer
This PR removes the file `check.c` and the instructions
to build it. The file was still built but the resulting
dll was not used by the installer anymore (see
https://github.com/containers/podman/pull/25237).

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-04-30 14:21:00 +02:00
Arthur Sengileyev
ae9e85bfc5 Update "check.c" to be C23 compliant
Fixes compilation errors with GCC 15.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2025-04-29 11:10:45 +03:00
Mario Loriedo
91e4f6918a Remove the option to install WSL/HyperV
The Windows installer was able to automatically enable the
Windows features for WSL or HyperV when they were not
already enabled. This PR removes this capability.

Having the installer to automatically install the right prerequiste
(WSL or HyperV) was helpful as users won't have to do it manually to
use Podman after the installation. But it also made the code of
installer more complicated as it needed to manage the installation
of these OS features and a reboot. And we weren't able to automatically
test these scenarios that required a reboot.

In other words the Windows installer, that merely just extracted
some files in a folder, required, to support the installation of
WSL and HyperV, an advanced knowledge of WiX toolkit and of the
Windows Installer SDK, plus contributors-time to manually test
the scenarios that require a reboot.

We decided to remove this capability based on the following reasons:
- We had a couple of regressions in the last month that were hard to
  analyse and fix (#24624 and #24735)
- Podman maintainers currently have a scarce knowledge of the Windows Installer
  and there is no plan to invest in that
- Manually installing WSL or HyperV is not hard (e.g. run `wsl --install`) and
  are features that admins can manage on their fleet of Windows machines
- Competitors such as Docker Desktop don't automatically install these
  components
- Podman `machine init` currently verifies if WSL and HyperV are installed and
  guide the user to install them when they are not

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-02-07 16:10:54 +01:00
Mario Loriedo
3aa09dd521 Avoid upgrading from v5.3.1 on Windows
Added a condition in the Windows WiX bundle that
prevents upgrades from v5.3.1 and recommend the
user to upgrade to v5.3.2 first.

That's needed because version 5.3.1 of the installer
had a bug that got patched in v5.3.2 only.

c.f. https://github.com/containers/podman/issues/24735

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-01-27 15:52:18 +01:00
Mario Loriedo
969057bacc Stop creating a patch for v5.3.1 upgrades on windows
Removes the windows installer patch for upgrading
from v5.3.1 to v5.3.x that was introduced in
https://github.com/containers/podman/pull/24827.

We need to do that because windows patches are
allowed only for small and minor updates
https://learn.microsoft.com/en-us/windows/win32/msi/patching-and-upgrades.

We also need to start blocking upgrades from v5.3.1
to v5.4.x, which will be implemented in a separate commit.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2025-01-20 11:56:18 +01:00
openshift-merge-bot[bot]
f325054939
Merge pull request #24827 from l0rd/win-installer-patch
Add a Windows Installer patch to avoid unrequested reboots
2024-12-13 19:33:55 +00:00
Mario Loriedo
5f79cd3aef Revert "win-installer test: revert to v5.3.0"
This reverts commit 916b805f97.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-12-12 17:49:37 +01:00
Mario Loriedo
e3d2463a48 Avoid rebooting twice when installing WSL
For some reason, after upgrading to WiX v5, the forceReboot action
appeared before the Dism actions in the msi InstallExecuteSequence
table. As a consequence the user was asked to reboot before WSL or
Hyper-V installation and to reboot a second time after their
installation.

To avoid that the ForceReboot action field `Before=StopServices` is
replaced with `After=DismX86`

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-12-12 15:56:28 +01:00
Mario Loriedo
2bca5052f1 Avoid rebooting on Windows when upgrading and WSL isn't installed
When building an installer from main branch, and using it
to upgrade the latest Podman release on Windows, a reboot
is triggered if WSL is not installed.

This is a regression caused by an update of the condition
to execute `ForceReboot`.

This commit fixes the condition and updates some defaults
to make it even more unlikely that reboot happens withtout
a specific user request for it.

It doesn't fix the v5.3.1 to v5.3.2 upgrade though. v5.3.1
has been released already and this commit doesn't avoid that it
triggers a reboot when updated.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-12-12 15:56:28 +01:00
Mario Loriedo
af607d0de4 Add win installer patch
Adding a patch to the bundle so that the update from previous version
(v5.3.1) is a minor update, not a major one. A minor update prevents the
full uninstallation of v5.3.1 and an unrequested reboot of the machine.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-12-12 15:56:28 +01:00
Mario Loriedo
d582c39dc8 Bump WiX toolset version to 5.0.2
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-12-12 15:56:28 +01:00
Nicola Sella
2c58af0e6b Use latest version of VS BuildTools
When one or more versions of VS Build tools are installed the script
.\winmake.ps1 installer does not finish with error.

...
Done!
Invoke-Expression: C:\...\podman\contrib\cirrus\win-lib.ps1:101:5
Line |
 101 |      Invoke-Expression $command -OutVariable unformattedLog | Write-Output
     |      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
     | Cannot process argument transformation on parameter 'vsinstance'. Cannot convert the "System.Object[]" value of type "System.Object[]" to type
     | "Microsoft.VisualStudio.Setup.Instance".

Signed-off-by: Nicola Sella <nsella@redhat.com>
2024-12-09 12:18:06 +01:00
Paul Holzinger
916b805f97
win-installer test: revert to v5.3.0
Do not pull from a moving target, use a defined version so updates must
happen in a PR and do not break others.

Signed-off-by: Paul Holzinger <pholzing@redhat.com>
2024-11-22 17:35:37 +01:00
Mario Loriedo
07aaa7832a Update windows installer tests
The windows installer tests are command line / non interactive. To test as much as
possible the GUI / interactive scenario (that is what user do), update tests
need to use the installer with the default options. That's because when using the GUI
for an update, changing options is not possible.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-11-20 13:54:12 +01:00
Mario Loriedo
7162c58ba2 Windows: don't install WSL/HyperV on update
The condition `NOT Installed` had not effect and has been replaced with
`NOT WIX_UPGRADE_DETECTED` that is `true` during installation and
`false` during updates.

The `ExePackage` WSL Kernel Install is also not installed if Podman is
already present.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-11-20 13:47:05 +01:00
Mario Loriedo
c6549fc25b Switch to non-installing WSL by default
The Windows installer GUI has a checkbox to choose if WSL and HyperV
should be installed as part of the installation of Podman. Now, by
default, that checkbox is disabled for both WSL and HyperV.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-11-20 13:43:41 +01:00
Arthur Sengileyev
528b085438 Fix inconsistent line ending in win-installer project
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2024-11-04 16:56:20 +02:00
Mario Loriedo
cb03ca31b2 Add radio buttons to select WSL or Hyper-V in windows setup.exe
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-09-11 17:36:00 +02:00
Mario Loriedo
01d739a65e Change Windows installer MajorUpgrade Schedule
Use Schedule "afterInstallExecute" (instead of the
default "afterInstallValidate") in the Windows
installer MajorUpgrade element. That avoid
overriding eventual users changes to the podman
machine configuration file created by the
installer.

Fixes #23502

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-08-05 21:52:58 +02:00
Mario Loriedo
e429160e5b Temporarly disable failing Windows Installer CI test
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-08-05 11:51:46 +02:00
Mario Loriedo
2e4b640ad2 Fix windows installer deleting machine provider config file
Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-07-18 16:56:39 +02:00
Mario Loriedo
81250cc5a9 Visual Studio BuildTools as a MinGW alternative
Building the MSI hook on Windows
(`contrib/win-installer/podman-msihooks/check.c`)
currently requires MinGW. This commit updates the build
script so that, when MinGW is absent but the C compiler
included in Visual Studio BuildTools is installed, the
latter is used to build the MSI hook.

Other than that, `winmake.ps1` has a new `installertest`
target to run the Windows installer tests that are
currently verified by Cirrus CI.

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-07-08 17:18:15 +02:00
Lokesh Mandvekar
e2ff5d4e5d
Windows Installer: switch to wix5
The chocolatey tool that was fetching us wix v3 can no longer be used to
fetch wix v4+ so we had to switch to dotnet to fetch the latest wix.

This commit builds the installer with wix v5.
wix v5 is installed via the `dotnet` tool in the windows image itself
at https://github.com/containers/automation_images/pull/354.

Going forward, the `dotnet` tool will also be used to build the installer.

In the process, the wix v3 files were converted to wix v4+ using `wix
convert` followed by manual modifications along with switch to wixproj
builds with dotnet.

The GitHub Action to upload windows installer now builds the installer
using winmake.ps1.

Contributions from Mario Loriedo:
- bundle setup update to wix5
- updates to build and release process scripts
Ref: https://github.com/lsm5/podman/pull/3

- small fixes to windows installer theme
Ref: https://github.com/lsm5/podman/pull/4

- Better win-installer sidebar logo
Ref: https://github.com/lsm5/podman/pull/5

Resolves: RUN-2055

Co-authored-by: Mario Loriedo <mario.loriedo@gmail.com>
Signed-off-by: Lokesh Mandvekar <lsm5@redhat.com>
2024-07-05 15:28:19 -04:00
Mario Loriedo
fb4ddf86cc Add Hyper-V option in windows installer
podman.msi GUI has a radio-button to select WSL or Hyper-V

The checkbox in podman.msi GUI allow the user to specify if
the machine provider installation (WSL or Hyper-V) should
be part of podman installation or not.

podman-setup.exe supports 2 new variables: MachineProvider
(valid values are `wsl` and `hyperv`) and HyperVCheckbox
(valid values are `0` and `1`)

Installation creates the configuration file
`99-podman-machine-provider.conf` under folder
`%APPDATA\containers\containers.conf.d` with the selected
machine provider

Cirrus CI `win_installer_task` tests the installation with
both `hyperv` and `wsl` and verifies the configuration.
Uninstallation is tested too.

Note that podman-setup.exe GUI doesn't allow to choose the
provider yet. See https://github.com/containers/podman/issues/22492

Signed-off-by: Mario Loriedo <mario.loriedo@gmail.com>
2024-05-29 12:09:37 +02:00
Brent Baude
d7bc7b7b41 do not require policy.json
we are having second thoughts about *requiring* a policy.json on podman
machine hosts.  we are concerned that we need to work out some more use
cases to be sure we do not make choices now that limit us in the near
term future. for example, should the policy files be the same for
container images and machine images? And should one live on the host
machine and the other live in the machine?

therefore, if a policy.json *is* present in the correct location, we will use and honor it; however, if it does not, we will allow the machine image to be pulled without a policy.

Signed-off-by: Brent Baude <baude@redhat.com>
Co-authored-by: Paul Holzinger <45212748+Luap99@users.noreply.github.com>
Signed-off-by: Brent Baude <bbaude@redhat.com>
2024-03-13 09:07:51 -05:00
Jason T. Greene
d54a373996 Complete policy.json inclusion
- Sets default search location to always be the peer directory
  + make podman-remote now creates binaries that work the same as release zips
- Updates release zip to match expected search location
- Updates win installer to include the file if present in the repo cross-build
  archive

[NO NEW TESTS NEEDED]

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2024-03-07 14:05:22 -06:00
Ed Santiago
c2a2113bb6 new vms, with rc6 rawhide kernel
Source: https://github.com/containers/automation_images/pull/331#issuecomment-1966677347

Kludgy VM build, because rawhide rc6 kernel is still not stable.
I would like to merge this anyway, because the rawhide hang is
hurting us badly. (I am not guaranteeing that this fixes the hang).

Also: new Windows VM has WiX 3.14 (up from 3.11).

Signed-off-by: Ed Santiago <santiago@redhat.com>
2024-02-27 09:42:43 -07:00
Jason T. Greene
3b63432027 Fix windows installer
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-07-18 00:05:21 +01:00
Arthur Sengileyev
387f0ea2f6 Making gvproxy.exe optional for building Windows installer
Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-01-29 22:04:53 +02:00
Arthur Sengileyev
74c0909736 Add gvproxy to Windows packages
Updated build scripts and installer build scripts to include gvproxy.exe.
Includes tutorial on setting up a Podman VM with QEMU and gvproxy on Windows.

Signed-off-by: Arthur Sengileyev <arthur.sengileyev@gmail.com>
2023-01-29 22:01:00 +02:00
Jason T. Greene
54afda22bf Switch to C based msi hooks for win installer
Fixes automated WSL installation on ARM

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2023-01-05 01:49:49 -06:00
Jason T. Greene
d2ac99d65c Allow manual override of install location
Also reuse install location for previous installs if present

Example Usage: .\podman-4.3.2-setup.exe InstallFolder=C:\Other\Loc

Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-11-28 15:46:35 -06:00
Jason T. Greene
ecb9f99b88 Add new windows installer and build
Signed-off-by: Jason T. Greene <jason.greene@redhat.com>
2022-09-06 16:12:09 -05:00