diff --git a/website/src/pages/downloads/windows.tsx b/website/src/pages/downloads/windows.tsx index 61519000212..7a50dfa8050 100644 --- a/website/src/pages/downloads/windows.tsx +++ b/website/src/pages/downloads/windows.tsx @@ -9,41 +9,78 @@ import { faMicrosoft, faWindows } from '@fortawesome/free-brands-svg-icons'; import { faDownload, faPaste, faTerminal } from '@fortawesome/free-solid-svg-icons'; async function grabfilenameforWindows( - setDownloadData: React.Dispatch>, + setDownloadData: React.Dispatch< + SetStateAction<{ + version: string; + binaryX64: string; + binaryArm64: string; + setupX64: string; + setupArm64: string; + airgapsetupX64: string; + airgapsetupArm64: string; + }> + >, ): Promise { const result = await fetch('https://api.github.com/repos/containers/podman-desktop/releases/latest'); const jsonContent = await result.json(); const assets = jsonContent.assets; - const windowsSetupAssets = assets.filter( - asset => (asset.name as string).endsWith('-setup.exe') && !asset.name.includes('airgap'), + const windowsX64SetupAssets = assets.filter( + asset => (asset.name as string).endsWith('-setup-x64.exe') && !asset.name.includes('airgap'), ); - if (windowsSetupAssets.length !== 1) { + if (windowsX64SetupAssets.length !== 1) { throw new Error('Unable to grab setup.exe'); } - const windowsSetupAsset = windowsSetupAssets[0]; - - const binaryOnlyWindowsAssets = assets.filter( - asset => - (asset.name as string).endsWith('.exe') && - !asset.name.includes('airgap') && - asset.name !== windowsSetupAsset.name, + const windowsArm64SetupAssets = assets.filter( + asset => (asset.name as string).endsWith('-setup-arm64.exe') && !asset.name.includes('airgap'), ); - const binaryAsset = binaryOnlyWindowsAssets[0]; + const setupX64Asset = windowsX64SetupAssets?.[0]; + const setupX64 = setupX64Asset?.browser_download_url; + const setupArm64Asset = windowsArm64SetupAssets?.[0]; + const setupArm64 = setupArm64Asset?.browser_download_url; + + const binaryOnlyX64WindowsAssets = assets.filter( + asset => + (asset.name as string).endsWith('x64.exe') && + !asset.name.includes('airgap') && + asset.name !== setupX64Asset?.name, + ); + const binaryX64 = binaryOnlyX64WindowsAssets?.[0]?.browser_download_url; + + const binaryOnlyArm64WindowsAssets = assets.filter( + asset => + (asset.name as string).endsWith('arm64.exe') && + !asset.name.includes('airgap') && + asset.name !== setupArm64Asset?.name, + ); + const binaryArm64 = binaryOnlyArm64WindowsAssets?.[0]?.browser_download_url; /* Find Windows installer for restricted environment */ - const windowsAirgapSetupAssets = assets.filter( + const windowsX64AirgapSetupAssets = assets.filter( asset => - (asset.name as string).endsWith('-setup.exe') && + (asset.name as string).endsWith('-setup-x64.exe') && asset.name.includes('airgap') && - asset.name !== windowsSetupAsset.name, + asset.name !== setupX64Asset?.name, ); - const windowsAirgapSetupAsset = windowsAirgapSetupAssets[0]; + + const airgapsetupX64 = windowsX64AirgapSetupAssets?.[0]?.browser_download_url; + + const windowsArm64AirgapSetupAssets = assets.filter( + asset => + (asset.name as string).endsWith('-setup-arm64.exe') && + asset.name.includes('airgap') && + asset.name !== setupArm64Asset?.name, + ); + + const airgapsetupArm64 = windowsArm64AirgapSetupAssets?.[0]?.browser_download_url; const data = { version: jsonContent.name, - binary: binaryAsset.browser_download_url, - setup: windowsSetupAsset.browser_download_url, - airgapsetup: windowsAirgapSetupAsset.browser_download_url, + binaryX64, + setupX64, + airgapsetupX64, + binaryArm64, + setupArm64, + airgapsetupArm64, }; setDownloadData(data); } @@ -51,9 +88,12 @@ async function grabfilenameforWindows( export function WindowsDownloads(): JSX.Element { const [downloadData, setDownloadData] = useState({ version: '', - binary: '', - setup: '', - airgapsetup: '', + binaryX64: '', + setupX64: '', + airgapsetupX64: '', + binaryArm64: '', + setupArm64: '', + airgapsetupArm64: '', }); const copyCliInstructions = async () => { @@ -76,28 +116,71 @@ export function WindowsDownloads(): JSX.Element {
+ to={downloadData.setupX64}> Download Now - Windows installer, version {downloadData.version} + Windows installer x64, version {downloadData.version}
-
Other downloads for Windows:
- - - Windows portable executable - - - - Windows installer for restricted environments - +
Other Windows downloads:
+ +
+
Installer:
+
+ + + x64 + + + + arm64 + +
+
+ +
+
Portable binary:
+
+ + + x64 + + + + arm64 + +
+
+ +
+
Installer for restricted environments:
+
+ + + x64 + + + + arm64 + +
+
+