When managing mixed-architecture environments (32-bit and 64-bit Windows systems), deploying the correct software version through Group Policy Objects (GPO) requires specific WMI filtering techniques. The naive approach of creating separate OUs for each architecture creates administrative overhead.
Create a single GPO with two WMI filters to target the correct architecture:
// 64-bit WMI Filter (Applies to 64-bit systems only)
SELECT * FROM Win32_Processor WHERE Architecture=9 AND AddressWidth=64
// 32-bit WMI Filter (Applies to 32-bit systems only)
SELECT * FROM Win32_Processor WHERE Architecture=0 AND AddressWidth=32
1. Create a new GPO for your software deployment
2. Navigate to Computer Configuration > Policies > Software Settings
3. Add both MSI packages (x86 and x64 versions)
4. For each package, set the appropriate WMI filter
For the x64 package assignment:
msiexec /i "\\server\share\7z1900-x64.msi" /qn ALLUSERS=1
For the x86 package assignment:
msiexec /i "\\server\share\7z1900.msi" /qn ALLUSERS=1
Use gpresult /h report.html
to verify policy application. Common issues include:
- Incorrect WMI filter syntax
- MSI package architecture mismatch
- Network access permissions
For EXE installers that don't support MSI deployment, use startup scripts with architecture detection:
@echo off
for /f "tokens=*" %%a in ('wmic os get osarchitecture ^| find "64"') do (
if "%%a"=="64-bit" (
start "" /wait "\\server\share\TortoiseSVN-1.14.1-x64-svn-1.14.1.exe" /silent
) else (
start "" /wait "\\server\share\TortoiseSVN-1.14.1-win32-svn-1.14.1.exe" /silent
)
)
Managing software deployments in environments with both 32-bit and 64-bit Windows systems can be tricky. Many common utilities like 7-Zip and TortoiseSVN offer separate installers for different architectures, but Group Policy Objects (GPO) don't natively distinguish between them during deployment.
The most straightforward method is using WMI filters with your GPOs. This allows you to target systems based on their architecture:
# 64-bit WMI Filter
SELECT * FROM Win32_Processor WHERE Architecture=9
# 32-bit WMI Filter
SELECT * FROM Win32_Processor WHERE Architecture=0
Create two separate GPOs - one for 64-bit systems with the 64-bit WMI filter, and another for 32-bit systems with the 32-bit filter. Each GPO should contain the appropriate MSI package.
For a more elegant solution, you can use a single GPO with a script that detects architecture and installs the correct version:
@echo off
setlocal
:: Check system architecture
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
start /wait msiexec /i "\\server\share\7zip-x64.msi" /qn
) else (
start /wait msiexec /i "\\server\share\7zip-x86.msi" /qn
)
For applications that only provide EXE installers (like TortoiseSVN), you'll need to use silent installation switches:
:: For 64-bit systems
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
"\\server\share\TortoiseSVN-1.14.1-x64-svn-1.14.2.msi" /quiet /norestart
)
:: For 32-bit systems
if "%PROCESSOR_ARCHITECTURE%"=="x86" (
"\\server\share\TortoiseSVN-1.14.1-x86-svn-1.14.2.msi" /quiet /norestart
)
- Always test deployment scripts on a small group of systems first
- Document which version is deployed to which systems
- Consider using a software inventory tool to verify deployments
- For large environments, consider using SCCM or other enterprise deployment tools
Watch out for these issues:
- 32-bit applications installing to Program Files (x86) on 64-bit systems
- Registry redirection in 64-bit systems affecting 32-bit installations
- Path variables that might differ between architectures