Ifyou're talking about an installer, you really should not hard-code the path to the system folder. Instead, let Windows take care of it for you based on whether or not your installer is running on the emulation layer.
You do not ever install your dlls, or third party dlls into \system32\ or \syswow64. If you have to statically load, you put your dlls in your exe dir (where they will be found). If you cannot predict the exe dir (e.g. some other exe is going to call your dll), you may have to put your dll dir into the search path (avoid this if at all poss!)
system32 and syswow64 are for Windows provided files... not for anyone elses files. The only reason folks got into the bad habit of putting stuff there is because it is always in the search path, and many apps/modules use static linking. (So, if you really get down to it, the real sin is static linking -- this is a sin in native code and managed code -- always always always dynamically link!)
I was taught to use Windows 3.1 and DOS, remember those days? Shortly after I worked with Macintosh computers strictly for some time, then began to sway back to Windows after buying a x64-bit machine.
System32 is where Windows historically placed all 32bit DLLs, and System was for the 16bit DLLs. When microsoft created the 64 bit OS, everyone I know of expected the files to reside under System64, but Microsoft decided it made more sense to put 64bit files under System32. The only reasoning I have been able to find, is that they wanted everything that was 32bit to work in a 64bit Windows w/o having to change anything in the programs -- just recompile, and it's done. The way they solved this, so that 32bit applications could still run, was to create a 32bit windows subsystem called Windows32 On Windows64. As such, the acronym SysWOW64 was created for the System directory of the 32bit subsystem. The Sys is short for System, and WOW64 is short for Windows32OnWindows64.
Since windows 16 is already segregated from Windows 32, there was no need for a Windows 16 On Windows 64 equivalence. Within the 32bit subsystem, when a program goes to use files from the system32 directory, they actually get the files from the SysWOW64 directory. But the process is flawed.
It's a horrible design. And in my experience, I had to do a lot more changes for writing 64bit applications, that simply changing the System32 directory to read System64 would have been a very small change, and one that pre-compiler directives are intended to handle.
Other folks have already done a good job of explaining this ridiculus conundrum ... and I think Chris Hoffman did an even better job here: -the-difference-between-the-system32-and-syswow64-folders-in-windows/
We all make stupid short-sighted mistakes in life. When Microsoft named their (at the time) Win32 DLL directory "System32", it made sense at the time ... they just didn't take into consideration what would happen if/when a 64-bit (or 128-bit) version of their OS got developed later - and the massive backward compatibility issue such a directory name would cause. Hindsight is always 20-20, so I can't really blame them (too much) for such a mistake. ...HOWEVER... When Microsoft did later develop their 64-bit operating system, even with the benefit of hindsight, why oh why would they make not only the exact same short-sighted mistake AGAIN but make it even worse by PURPOSEFULLY giving it such a misleading name?!? Shame on them!!! Why not AT LEAST actually name the directory "SysWin32OnWin64" to avoid confusion?!? And what happens when they eventually produce a 128-bit OS ... then where are they going to put their 32-bit, 64-bit, and 128-bit DLLs?!?
All of this logic still seems completely flawed to me. On 32-bit versions of Windows, System32 contains 32-bit DLLs; on 64-bit versions of Windows, System32 contains 64-bit DLLs ... so that developers wouldn't have to make code changes, correct? The problem with this logic is that those developers are either now making 64-bit apps needing 64-bit DLLs or they're making 32-bit apps needing 32-bit DLLs ... either way, aren't they still screwed? I mean, if they're still making a 32-bit app, for it to now run on a 64-bit Windows, they'll now need to make a code change to find/reference the same ol' 32-bit DLL they used before (now located in SysWOW64). Or, if they're working on a 64-bit app, they're going to need to re-write their old app for the new OS anyway ... so a recompile/rebuild was going to be needed anyway!!!
I'm actually in a similar situation as @mark_devlin. Our work IT administration has standardized on 64-bit Windows and 32-bit Office, and we have had a need to use RODBC to connect to Access databases . I'm unclear on whether we could replace RODBC with odbc for this purpose or not, and how that might interact (or not!) with R builds.
The considerations can be more complex: for example 32/64-bit RODBC need 32/64-bit ODBC drivers respectively, and where both exist they may not be able to be installed together. An extreme example is the Microsoft Access/Excel ODBC drivers: if you have installed 64-bit Microsoft Office you can only install the 64-bit drivers and so need to use 64-bit RODBC and hence R. (And similarly for 32-bit Microsoft Office.)
RStudio is the IDE I have used for the past four years in developing a wide variety of R scripts, some of which interact with MS Access databases using 32-bit ODBC drivers. The decision to stop supporting 32-bit versions of R is most unfortunate for those like me who have no choice but to use 32-bit R when using 32-bit ODBC drivers. I will not be able to use RStudio version 1.2 to maintain any of the scripts concerned. This is a retrograde step in the development of such a good IDE IMHO.
Please, make it available to work with a 32-bit R version along with RStudio v1.2 and above. Thanks for supporting Stan on those versions. Unfortunately, I am stuck at work with a 32-bit driver to access data with RODBC.
Sorry for the "me too", but this indeed means that we will be unable to use RStudio 1.2, and will have to stick with 1.1 for as long as it is supported. The reason is the same: we have to play nice with with MS Access data, and we use 32-bit MS Office now and for the next 5 years at least, therefore we cannot completely switch to R x64.
@kevinushey was this changed with the final version? I have the same issue - even using ODBC, I can't access the 32 bit version of microsoft access using the 64 bit version of R (I have 64 bit windows 10, 32bit access 2016 (which I can't change).
I was really hoping to upgrade to 1.2, but without the ability to use 32bit R, I can't access my databases.
FYI: When I try to setup the connection to the DSN when 64 bit R is connected, I get this error
I too would like 32 bit support.
I found myself in a catch 22. I would like to use python with RStudio specifically for the arcpy package. I need RStudio v1.2 for python support, however I need 32 bit architecture for python 2.7 (for arcpy).
3a8082e126