Commit Graph

35 Commits

Author SHA1 Message Date
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