As part of my transition into using 64 bit windows I keep running into a problem with some scripts.
I have a whole set of Powershell scripts that are dedicated to ensuring certain programs are installed on all of my dev machines. Or that certain customizations are needed. A lot of these do file existence checks inside of Program Files.
Unfortunately in 64 bit windows there are actually two Program Files folders. One for 64 bit programs and a separate one for 32 bit programs that operate in Wow64 mode. All code which uses $env:ProgramFiles will point to the 64 bit version. Most of the programs I custom install (i.e. gvim are actually 32 bit programs).
Getting the 32 bit Program Files directory is simple enough: ${env:ProgramFiles(x86)}. Yet it’s not portable back to a 32 bit version of windows. Yet another function to the rescue
function Get-ProgramFiles32() {
if (Test-Win64 ) {
return ${env:ProgramFiles(x86)}
}
return $env:ProgramFiles
}