diff --git a/.cirrus.yml b/.cirrus.yml index 05e1656dd2..2f0c84cf9f 100644 --- a/.cirrus.yml +++ b/.cirrus.yml @@ -33,7 +33,7 @@ env: DEBIAN_NAME: "debian-13" # Image identifiers - IMAGE_SUFFIX: "c20240701t155130z-f40f39d13" + IMAGE_SUFFIX: "c20240702t180702z-f40f39d13" # EC2 images FEDORA_AMI: "fedora-aws-${IMAGE_SUFFIX}" diff --git a/.github/workflows/upload-win-installer.yml b/.github/workflows/upload-win-installer.yml index c818c6a826..843293071c 100644 --- a/.github/workflows/upload-win-installer.yml +++ b/.github/workflows/upload-win-installer.yml @@ -78,17 +78,20 @@ jobs: # The podman release process requires a cross-compile of the windows binaries be uploaded to # the release page as a hard-coded filename. If non-existent, this workflow will fail in # non-obvious ways with a non-obvious error message. Address that here. - - name: Confirm upload_asset_name is non-empty - if: ${{ steps.check.outputs.upload_asset_name == '' }} - run: | - Write-Output "::error::check.ps1 script failed to find manually uploaded podman-remote-release-windows_amd64.zip github release asset for version ${{steps.getversion.outputs.version}}." - Exit 1 + # TODO: Remove this in a future PR once verified to not cause artifact issues + #- name: Confirm upload_asset_name is non-empty + # if: steps.check.outputs.upload_asset_name == '' && github.event_name != 'pull_request' + # run: | + # Write-Output "::error::check.ps1 script failed to find manually uploaded podman-remote-release-windows_amd64.zip github release asset for version ${{steps.getversion.outputs.version}}." + # Exit 1 - name: Set up Go uses: actions/setup-go@v5 # N/B: already-exists may be an empty-string or "false", handle both cases. if: steps.check.outputs.already-exists != 'true' || steps.actual_dryrun.outputs.dryrun == 'true' with: go-version: stable + - name: Set up WiX + run: dotnet tool install --global wix - name: Setup Signature Tooling if: steps.Check.outputs.already-exists != 'true' || steps.actual_dryrun.outputs.dryrun == 'true' run: | @@ -98,20 +101,18 @@ jobs: echo "APP_ID=${{secrets.AZ_APP_ID}}" | Out-File -FilePath $env:GITHUB_ENV -Append echo "TENANT_ID=${{secrets.AZ_TENANT_ID}}" | Out-File -FilePath $env:GITHUB_ENV -Append echo "CLIENT_SECRET=${{secrets.AZ_CLIENT_SECRET}}" | Out-File -FilePath $env:GITHUB_ENV -Append + - name: Pandoc Setup + uses: r-lib/actions/setup-pandoc@v2 + with: + pandoc-version: '3.1.11' - name: Build id: build if: steps.check.outputs.already-exists != 'true' || steps.actual_dryrun.outputs.dryrun == 'true' run: | - Push-Location contrib\win-installer - .\build.ps1 ${{steps.getversion.outputs.version}} prod - $code = $LASTEXITCODE - if ($code -eq 2) { - Write-Output "artifact-missing=true" | Out-File -FilePath $env:GITHUB_OUTPUT -Append - Pop-Location - Exit 0 - } - Pop-Location - Exit $code + .\winmake.ps1 podman + .\winmake.ps1 win-gvproxy + .\winmake.ps1 docs + .\winmake.ps1 installer - name: Artifact if: steps.check.outputs.already-exists != 'true' || steps.actual_dryrun.outputs.dryrun == 'true' uses: actions/upload-artifact@v4 diff --git a/.gitignore b/.gitignore index 7ea6620913..d1813cc8fb 100644 --- a/.gitignore +++ b/.gitignore @@ -35,6 +35,7 @@ release.txt /test/copyimg/copyimg /test/goecho/goecho /test/version/version +/test/version/version.exe /test/testvol/testvol /test/tools/build /test/e2e/ginkgo-node-* @@ -45,12 +46,14 @@ result /*runner_stats.log .generate-bindings contrib/win-installer/artifacts/ +contrib/win-installer/current/ contrib/win-installer/docs/ +contrib/win-installer/en-US/ contrib/win-installer/fetch/ -contrib/win-installer/podman.msi contrib/win-installer/podman-*setup.exe contrib/win-installer/engine.exe +contrib/win-installer/obj/ contrib/win-installer/shasums -contrib/win-installer/pages.wxs contrib/win-installer/*.wixobj contrib/win-installer/*.wixpdb +contrib/win-installer/*.log diff --git a/build_windows.md b/build_windows.md index 5a93faca7b..e523e62ffc 100644 --- a/build_windows.md +++ b/build_windows.md @@ -10,7 +10,7 @@ Windows. - [OS requirements](#os-requirements) - [Git and go](#git-and-go) - [Pandoc](#pandoc) - - [WiX Toolset v3](#wix-toolset-v3) + - [.NET SDK](#net-sdk) - [Virtualization Provider](#virtualization-provider) - [WSL](#wsl) - [Hyper-V](#hyper-v) @@ -70,14 +70,22 @@ Pandoc can be installed from https://pandoc.org/installing.html. When performing the Pandoc installation one, has to choose the option "Install for all users" (to put the binaries into "Program Files" directory). -### WiX Toolset v3 +### .NET SDK -[WiX Toolset](https://wixtoolset.org) **v3** is used to develop and build the -Podman Windows installer. It's not required for the Podman Windows client. -Version 3 of the WiX Toolset can be obtained from -https://wixtoolset.org/docs/wix3/. Installing it into a clean VM might require -an additional installation of .NET Framework 3.5 in advance -([instructions for adding .NET Framework 3.5 via enabling the Windows feature](https://learn.microsoft.com/en-us/dotnet/framework/install/dotnet-35-windows#enable-the-net-framework-35-in-control-panel)) +[.NET SDK](https://learn.microsoft.com/en-us/dotnet/core/sdk), version 6 or +later, is required to develop and build the Podman Windows installer. It's not +required for the Podman Windows client. + +```pwsh +winget install -e Microsoft.DotNet.SDK.8 +``` + +[WiX Toolset](https://wixtoolset.org) **v5**, distributed as a .NET SDK tool, is +used too and can be installed using `dotnet install`: + +```pwsh +dotnet tool install --global wix +``` ### Virtualization Provider @@ -304,9 +312,9 @@ The `installer` target of `winmake.ps1` runs the script - `build-hooks.bat`: builds `podman-wslkerninst.exe` (WSL kernel installer) and `podman-msihooks.dll` (helper that checks if WSL and Hyper-V are installed). -- `build-msi.bat`: builds `podman.msi` from the WiX source files `podman.wxs`, +- `dotnet build podman.wixproj`: builds `podman.msi` from the WiX source files `podman.wxs`, `pages.wxs`, `podman-ui.wxs` and `welcome-install-dlg.wxs`. -- `build-burn.bat`: builds `podman-setup.exe` file from +- `dotnet build podman-setup.wixproj`: builds `podman-setup.exe` file from [WiX Burn bundle](https://wixtoolset.org/docs/tools/burn/) `burn.wxs`. ### Test the Windows installer @@ -340,21 +348,20 @@ Podman is released (it's included in the `podman-setup.exe` bundle), it can be faster to build and test that rather than the full bundle during the development phase. -Run the script `contrib\win-installer\build-msi.bat` to build the standalone -`podman.msi` file: +Run the command `dotnet build` to build the standalone `podman.msi` file: ```pwsh Push-Location .\contrib\win-installer\ -.\build-msi.bat 9.9.9 +dotnet build podman.wixproj /property:DefineConstants="VERSION=9.9.9" -o . Pop-Location ``` -It creates the file `.\contrib\win-installer\podman.msi`. Test it using the +It creates the file `.\contrib\win-installer\en-US\podman.msi`. Test it using the [Microsoft Standard Installer](https://learn.microsoft.com/en-us/windows/win32/msi/standard-installer-command-line-options) command line tool: ```pwsh -msiexec /package contrib\win-installer\podman.msi /l*v podman-msi.log +msiexec /package contrib\win-installer\en-US\podman.msi /l*v podman-msi.log ``` To run it in quiet, non-interactive mode, open the terminal **as an @@ -364,7 +371,7 @@ of the installation, `0` otherwise) and `WITH_HYPERV` (`1` to install Hyper-V as part of the installation, `0` otherwise): ```pwsh -msiexec /package contrib\win-installer\podman.msi /l*v podman-msi.log /quiet MACHINE_PROVIDER=wsl WITH_WSL=0 WITH_HYPERV=0 +msiexec /package contrib\win-installer\en-US\podman.msi /l*v podman-msi.log /quiet MACHINE_PROVIDER=wsl WITH_WSL=0 WITH_HYPERV=0 ``` :information_source: `podman.msi` GUI dialogs, defined in the file @@ -390,12 +397,12 @@ Test-Path -Path "$ENV:PROGRAMFILES\RedHat\Podman\podman.exe" # Check the generation of the podman configuration file Test-Path -Path "$ENV:PROGRAMDATA\containers\containers.conf.d\99-podman-machine-provider.conf" # Check that the installer configured the right provider -Get-Content '$ENV:PROGRAMDATA\containers\containers.conf.d\99-podman-machine-provider.conf' | Select -Skip 1 | ConvertFrom-StringData | % { $_.provider } +Get-Content "$ENV:PROGRAMDATA\containers\containers.conf.d\99-podman-machine-provider.conf" | Select -Skip 1 | ConvertFrom-StringData | % { $_.provider } # Check the creation of the registry key Test-Path -Path "HKLM:\SOFTWARE\Red Hat\Podman" Get-ItemProperty "HKLM:\SOFTWARE\Red Hat\Podman" InstallDir # Check the podman.exe is in the $PATH -$env:PATH | Select-String -Pattern "$ENV:PROGRAMFILES\RedHat\Podman" +$env:PATH | Select-String -Pattern "Podman" ``` :information_source: Podman CI uses script diff --git a/contrib/cirrus/win-installer-main.ps1 b/contrib/cirrus/win-installer-main.ps1 index c951a01f68..54b55e5521 100644 --- a/contrib/cirrus/win-installer-main.ps1 +++ b/contrib/cirrus/win-installer-main.ps1 @@ -8,7 +8,7 @@ if ($Env:CI -eq "true") { } else { $WIN_INST_FOLDER = "$PSScriptRoot\..\win-installer" $ENV:WIN_INST_VER = "9.9.9" - $RELEASE_DIR = "$PSScriptRoot\..\.." + $RELEASE_DIR = "$PSScriptRoot\..\..\contrib\win-installer\current" $ENV:CONTAINERS_MACHINE_PROVIDER = "wsl" } @@ -18,7 +18,7 @@ $WindowsPathsToTest = @("C:\Program Files\RedHat\Podman\podman.exe", "$ConfFilePath", "HKLM:\SOFTWARE\Red Hat\Podman") -Set-Location $WIN_INST_FOLDER +Push-Location $WIN_INST_FOLDER # Build Installer # Note: consumes podman-remote-release-windows_amd64.zip from repo.tbz2 @@ -30,15 +30,18 @@ $ret = Start-Process -Wait -PassThru ".\podman-${ENV:WIN_INST_VER}-dev-setup.exe if ($ret.ExitCode -ne 0) { Write-Host "Install failed, dumping log" Get-Content inst.log + Pop-Location throw "Exit code is $($ret.ExitCode)" } $WindowsPathsToTest | ForEach-Object { if (! (Test-Path -Path $_) ) { + Pop-Location throw "Expected $_ but it's not present after uninstall" } } $machineProvider = Get-Content $ConfFilePath | Select-Object -Skip 1 | ConvertFrom-StringData | ForEach-Object { $_.provider } if ( $machineProvider -ne "`"$ENV:CONTAINERS_MACHINE_PROVIDER`"" ) { + Pop-Location throw "Expected `"$ENV:CONTAINERS_MACHINE_PROVIDER`" as default machine provider but got $machineProvider" } @@ -49,12 +52,15 @@ $ret = Start-Process -Wait -PassThru ".\podman-${ENV:WIN_INST_VER}-dev-setup.exe if ($ret.ExitCode -ne 0) { Write-Host "Uninstall failed, dumping log" Get-Content uninst.log + Pop-Location throw "Exit code is $($ret.ExitCode)" } $WindowsPathsToTest | ForEach-Object { if ( Test-Path -Path $_ ) { + Pop-Location throw "Path $_ is still present after uninstall" } } Write-Host "Uninstaller verification successful!" +Pop-Location diff --git a/contrib/win-installer/build-burn.bat b/contrib/win-installer/build-burn.bat deleted file mode 100644 index 637a4e7444..0000000000 --- a/contrib/win-installer/build-burn.bat +++ /dev/null @@ -1,7 +0,0 @@ -@if "%1" == "" ( - @echo "usage: build-burn.bat " - @exit /b 1 -) - -candle -ext WixUIExtension -ext WixUtilExtension -ext WixBalExtension -arch x64 -dManSource="docs" -dVERSION="%1" burn.wxs || exit /b 1 -light -ext WixUIExtension -ext WixUtilExtension -ext WixBalExtension .\burn.wixobj -out podman-setup.exe || exit /b 1 diff --git a/contrib/win-installer/build-msi.bat b/contrib/win-installer/build-msi.bat deleted file mode 100644 index 28a77734de..0000000000 --- a/contrib/win-installer/build-msi.bat +++ /dev/null @@ -1,8 +0,0 @@ -@if "%1" == "" ( - @echo "usage: build-msi.bat " - @exit /b 1 -) - -heat dir docs -var var.ManSource -cg ManFiles -dr INSTALLDIR -gg -g1 -srd -out pages.wxs || exit /b 1 -candle -ext WixUIExtension -ext WixUtilExtension -ext .\artifacts\PanelSwWixExtension.dll -arch x64 -dManSource="docs" -dVERSION="%1" podman.wxs pages.wxs podman-ui.wxs welcome-install-dlg.wxs || exit /b 1 -light -ext WixUIExtension -ext WixUtilExtension -ext .\artifacts\PanelSwWixExtension.dll .\podman.wixobj .\pages.wixobj .\podman-ui.wixobj .\welcome-install-dlg.wixobj -out podman.msi || exit /b 1 diff --git a/contrib/win-installer/build.ps1 b/contrib/win-installer/build.ps1 index 6c5189d7f9..710748f35c 100644 --- a/contrib/win-installer/build.ps1 +++ b/contrib/win-installer/build.ps1 @@ -4,31 +4,6 @@ function ExitOnError() { } } -function FetchPanel() { - Remove-Item -Recurse -Force -Path fetch -ErrorAction SilentlyContinue | Out-Null - New-Item -Force -ItemType Directory fetch | Out-Null - Push-Location fetch - - $ProgressPreference = 'SilentlyContinue' - Invoke-WebRequest -UseBasicParsing -OutFile nuget.exe -ErrorAction Stop ` - -Uri https://dist.nuget.org/win-x86-commandline/latest/nuget.exe - # 3.3.3.224 generates invalid schema with RemoveFeature defaults. - # Lock the version to 211 until this issue is fixed (7/18/2023) - .\nuget.exe install PanelSwWixExtension -Version 3.3.3.211 - $code = $LASTEXITCODE - Pop-Location - if ($code -gt 0) { - Exit 1 - } - $loc = Get-ChildItem -Recurse -Path fetch -Name PanelSwWixExtension.dll - if (!$loc) { - Write-Host "Could not locate PanelSwWixExtension.dll" - Exit 1 - } - - Copy-Item -Path fetch/$loc -Destination artifacts/PanelSwWixExtension.dll -ErrorAction Stop -} - function SignItem() { param( [Parameter(Mandatory)] @@ -71,7 +46,7 @@ function CheckCommand() { function CheckRequirements() { CheckCommand "gcc" "MingW CC" - CheckCommand "candle" "WiX Toolset" + CheckCommand "wix" "WiX Toolset" CheckCommand "go" "Golang" } @@ -99,7 +74,7 @@ if ($args.Count -lt 1 -or $args[0].Length -lt 1) { } # Pre-set to standard locations in-case build env does not refresh paths -$Env:Path="$Env:Path;C:\Program Files (x86)\WiX Toolset v3.14\bin;C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin;;C:\Program Files\Go\bin" +$Env:Path="$Env:Path;C:\Users\micro\mingw64\bin;C:\ProgramData\chocolatey\lib\mingw\tools\install\mingw64\bin;;C:\Program Files\Go\bin;C:\Program Files\dotnet" CheckRequirements @@ -129,8 +104,6 @@ if ($ENV:INSTVER -eq "") { Exit 1 } -FetchPanel - .\build-hooks.bat; ExitOnError SignItem @("artifacts/win-sshproxy.exe", "artifacts/podman.exe", @@ -151,15 +124,18 @@ if ($gvExists) { # } else { # $env:IncludePolicyJSON = "Skip" # } -.\build-msi.bat $ENV:INSTVER; ExitOnError -SignItem @("podman.msi") +if (Test-Path ./obj) { + Remove-Item ./obj -Recurse -Force -Confirm:$false +} +dotnet build podman.wixproj /property:DefineConstants="VERSION=$ENV:INSTVER" -o .; ExitOnError +SignItem @("en-US\podman.msi") -.\build-burn.bat $ENV:INSTVER; ExitOnError -insignia -ib podman-setup.exe -o engine.exe; ExitOnError +dotnet build podman-setup.wixproj /property:DefineConstants="VERSION=$ENV:INSTVER" -o .; ExitOnError +wix burn detach podman-setup.exe -engine engine.exe; ExitOnError SignItem @("engine.exe") $file = "podman-$version$suffix-setup.exe" -insignia -ab engine.exe podman-setup.exe -o $file; ExitOnError +wix burn reattach -engine engine.exe podman-setup.exe -o $file; ExitOnError SignItem @("$file") if (Test-Path -Path shasums) { diff --git a/contrib/win-installer/burn.wxs b/contrib/win-installer/burn.wxs index 6a367c5457..0ac25a9100 100644 --- a/contrib/win-installer/burn.wxs +++ b/contrib/win-installer/burn.wxs @@ -1,50 +1,37 @@ - - - - - - - - - - - - - - - - - - - - - - - - - = v10.0 AND (CBNumber >= 19041 OR AllowOldWin = 1)]]> - - - 5 OR WixBundleInstalled OR WixBundleForcedRestartPackage OR PreviousVersion <> VERSION]]> - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/win-installer/podman-setup.wixproj b/contrib/win-installer/podman-setup.wixproj new file mode 100644 index 0000000000..361873a26c --- /dev/null +++ b/contrib/win-installer/podman-setup.wixproj @@ -0,0 +1,12 @@ + + + x64 + false + Bundle + + + + + + + diff --git a/contrib/win-installer/podman-theme.wxl b/contrib/win-installer/podman-theme.wxl index 7fea09054a..2afa59ef7e 100644 --- a/contrib/win-installer/podman-theme.wxl +++ b/contrib/win-installer/podman-theme.wxl @@ -2,67 +2,67 @@ - - [WixBundleName] [VERSION] Setup - [WixBundleName] [VERSION] - Welcome to [WixBundleName] Setup - Welcome to the [WixBundleName] [VERSION] setup wizard. This will install [WixBundleName] on your computer. + + + + + Version [WixBundleVersion] - Are you sure you want to cancel? - Previous version - Setup Help - /install | /repair | /uninstall | /layout [directory] - installs, repairs, uninstalls or +Finally, click install to continue, or Close to abort the installation." /> + + + + + &Close - [WixBundleName] <a href="#">license terms</a>. - I &agree to the license terms and conditions - &Options - &Install - &Close - Setup Options - Install location: - &Browse - &OK - &Cancel - Setup Progress - Processing: - Initializing... - &Cancel - Modify Setup - &Repair - &Uninstall - &Close - Repair Successfully Completed - Uninstall Successfully Completed - Installation Successfully Completed - Setup Successful - &Open Guide && Close - You must restart your computer before you can use the software. - &Restart - &Close - Setup Failed - Setup Failed - Uninstall Failed - Repair Failed - One or more issues caused the setup to fail. Please fix the issues and then retry setup. For more information see the <a href="#">log file</a>. - You must restart your computer to complete the rollback of the software. - &Restart - &Close - Files In Use - The following applications are using files that need to be updated: - Close the &applications and attempt to restart them. - &Do not close applications. A reboot will be required. - &OK - &Cancel - No action was taken as a system reboot is required. +/log log.txt - logs to a specific file. By default a log file is created in %TEMP%." /> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/contrib/win-installer/podman-theme.xml b/contrib/win-installer/podman-theme.xml index 8d7be5d722..8b62768dea 100644 --- a/contrib/win-installer/podman-theme.xml +++ b/contrib/win-installer/podman-theme.xml @@ -1,97 +1,123 @@ - + + - - #(loc.Title) Setup - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - Segoe UI - - Segoe UI - - - - #(loc.HelpHeader) - #(loc.HelpText) - - - - - #(loc.InstallHeader) - #(loc.InstallMessage) - - #(loc.InstallLicenseLinkText) - #(loc.InstallVersion) - Install WSL if not present - - - - - - - #(loc.OptionsHeader) - #(loc.OptionsLocationLabel) - - - - - - - - - #(loc.FilesInUseHeader) - #(loc.FilesInUseLabel) - - - - - - - - - - - #(loc.ProgressHeader) - #(loc.ProgressLabel) - #(loc.OverallProgressPackageText) - - - - - #(loc.Title) - - #(loc.ModifyHeader) - - - - - - #(loc.Title) - - #(loc.SuccessHeader) - #(loc.SuccessInstallHeader) - #(loc.SuccessRepairHeader) - #(loc.SuccessUninstallHeader) - - #(loc.SuccessRestartText) - - - - - - #(loc.FailureHeader) - #(loc.FailureInstallHeader) - #(loc.FailureUninstallHeader) - #(loc.FailureRepairHeader) - #(loc.FailureHyperlinkLogText) - - #(loc.FailureRestartText) - - - + + Segoe UI + Segoe UI + Segoe UI + Segoe UI + Segoe UI + Segoe UI + Segoe UI + + Segoe UI + + + + + + + + + + + + + + #(loc.InstallLicenseLinkText) + + Install WSL if not present + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + #(loc.FailureHyperlinkLogText) + + + + + + diff --git a/contrib/win-installer/podman-ui.wxs b/contrib/win-installer/podman-ui.wxs index 1270459500..c3122cfa99 100644 --- a/contrib/win-installer/podman-ui.wxs +++ b/contrib/win-installer/podman-ui.wxs @@ -1,4 +1,3 @@ - - + - - @@ -33,30 +30,19 @@ Patch dialog sequence: - - - 1 - - 1 - - 1 - - 1 - 1 - 1 - - Installed AND PATCH - Installed AND PATCH - + + + + + + + - Installed AND PATCH - (NOT Installed) AND NOT AFTERREBOOT + - - diff --git a/contrib/win-installer/podman.sln b/contrib/win-installer/podman.sln new file mode 100644 index 0000000000..33d9b6af92 --- /dev/null +++ b/contrib/win-installer/podman.sln @@ -0,0 +1,37 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.10.35004.147 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{B7DD6F7E-DEF8-4E67-B5B7-07EF123DB6F0}") = "podman", "podman.wixproj", "{3EBBAB4A-A15D-4986-98FF-FEC3892997DB}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Debug|ARM64.Build.0 = Debug|ARM64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Debug|x64.ActiveCfg = Debug|x64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Debug|x64.Build.0 = Debug|x64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Debug|x86.ActiveCfg = Debug|x86 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Debug|x86.Build.0 = Debug|x86 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Release|ARM64.ActiveCfg = Release|ARM64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Release|ARM64.Build.0 = Release|ARM64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Release|x64.ActiveCfg = Release|x64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Release|x64.Build.0 = Release|x64 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Release|x86.ActiveCfg = Release|x86 + {3EBBAB4A-A15D-4986-98FF-FEC3892997DB}.Release|x86.Build.0 = Release|x86 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {0F83E058-C6D8-49C2-95BD-645730145A9D} + EndGlobalSection +EndGlobal diff --git a/contrib/win-installer/podman.wixproj b/contrib/win-installer/podman.wixproj new file mode 100644 index 0000000000..7bccb56ffb --- /dev/null +++ b/contrib/win-installer/podman.wixproj @@ -0,0 +1,21 @@ + + + x64 + false + + + + ManFiles + INSTALLDIR + true + + + + + + + + + + + diff --git a/contrib/win-installer/podman.wxs b/contrib/win-installer/podman.wxs index d1590c85ef..0657978919 100644 --- a/contrib/win-installer/podman.wxs +++ b/contrib/win-installer/podman.wxs @@ -1,87 +1,64 @@ - - + - - - + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CREATE_MACHINE_PROVIDER_CONFIG_FILE - - - - - - - - - - - - - - - - - - - (NOT Installed) AND WSL_INSTALL = 1 - - - - - - - - (NOT Installed) AND HYPERV_INSTALL = 1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - WIXUI_EXITDIALOGOPTIONALCHECKBOX = 1 and NOT Installed - + + + + + + - - - - - (NOT Installed) - AND ((WSL_INSTALL = 1) OR (HYPERV_INSTALL = 1)) - AND (NOT AFTERREBOOT) - - - - + + + + + + + + + + + diff --git a/contrib/win-installer/process-release.ps1 b/contrib/win-installer/process-release.ps1 index 230ad7a43b..5392831632 100644 --- a/contrib/win-installer/process-release.ps1 +++ b/contrib/win-installer/process-release.ps1 @@ -111,11 +111,11 @@ try { } Write-Host "Old release, zip does not include win-sshproxy.exe, fetching via msi" DownloadOrSkip "$base_url/releases/download/$version/podman-$version.msi" "podman.msi" - dark -x expand ./podman.msi + wix msi decompile -x expand ./podman.msi if (!$?) { - throw "Dark command failed" + throw "wix msi decompile command failed" } - $loc = Get-ChildItem -Recurse -Path expand -Name 4A2AD125-34E7-4BD8-BE28-B2A9A5EDBEB5 + $loc = Get-ChildItem -Recurse -Path expand -Name WinSshProxyExecutableFile if (!$loc) { throw "Could not obtain win-sshproxy.exe" } diff --git a/contrib/win-installer/resources/podman-sidebar.png b/contrib/win-installer/resources/podman-sidebar.png index cc02497065..24058da95c 100644 Binary files a/contrib/win-installer/resources/podman-sidebar.png and b/contrib/win-installer/resources/podman-sidebar.png differ diff --git a/contrib/win-installer/welcome-install-dlg.wxs b/contrib/win-installer/welcome-install-dlg.wxs index 325cd74821..b49d74f35a 100644 --- a/contrib/win-installer/welcome-install-dlg.wxs +++ b/contrib/win-installer/welcome-install-dlg.wxs @@ -1,4 +1,4 @@ - + @@ -6,44 +6,30 @@ - - HIDE_PROVIDER_CHOICE - - + + - HIDE_PROVIDER_CHOICE - - - MACHINE_PROVIDER = "wsl" - MACHINE_PROVIDER = "hyperv" OR HIDE_PROVIDER_CHOICE - HAS_WSLFEATURE = 1 - - - MACHINE_PROVIDER = "hyperv" - MACHINE_PROVIDER = "wsl" OR HIDE_PROVIDER_CHOICE - HAS_HYPERVFEATURE = 1 + + + - !(wix.WixUICostingPopupOptOut) OR CostingComplete = 1 - 1]]> - OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND (PROMPTROLLBACKCOST="P" OR NOT PROMPTROLLBACKCOST) - OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D" - OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 0 AND PROMPTROLLBACKCOST="D" - (OutOfDiskSpace = 1 AND OutOfNoRbDiskSpace = 1) OR (OutOfDiskSpace = 1 AND PROMPTROLLBACKCOST="F") + + + + + + - 1 + - - - NOT Installed -