#SYSTEMPATH always pointing to SysWOW64 on 64bit systems

Jul 25, 2011 at 1:43 PM


I have an installcheck check_file element for verifying the version of a file from the System folder, using the #SYSTEMPATH path variable. On 64bit systems that file is in the 64bit System folder (that is C:\Windows\System32) but dotNetInstaller searches the file in C:\Windows\SysWOW64\. I set the disable_wow64_fs_redirection of the parent component to true, but I got the same result. I used the hardcoded path (C:\Windows\System32\) instead of #SYSTEMPATH, but the result was the same.  I am using the dotNetInstaller v. 2.0.673.0


Jul 25, 2011 at 2:28 PM

DNI uses Win32 GetSystemDirectoryW to get this path. We'll need some code that calls a shell SH* function to get what you're trying to get on SysWOW64 or something like that. Feel free to add the functionality and send a patch. Do file a feature request either way.

Oct 30, 2013 at 4:36 PM
Edited Oct 30, 2013 at 4:57 PM
You can use #SYSTEMWINDOWSPATH\sysnative to access the real system32 folder on an x64 system. This is a virtual folder that is included in Windows Vista and above (XP with a hotfix). The virtual folder is only available as a part of the file system redirection that goes on when a 32-bit process is running on a 64-bit OS. It won't be present when running on a 32-bit OS, so if you need to support installing on x86 OSes as well, I suggest duplicating the component and having one target x64 and the other x86.