Archive: CopyFiles not using file system redirector for $SYSDIR on x64 Windows versions


CopyFiles not using file system redirector for $SYSDIR on x64 Windows versions
This code is called in .onInit:

CopyFiles $PLUGINSDIR\KEY.dll $SYSDIR\KEY.DLL
CopyFiles $PLUGINSDIR\License.dll $SYSDIR\License.dll

This should store the files in C:\Windows\SysWOW64, but this code above always stored the files in C:\Windows\system32 regardless of any of setting made for folder redirection on x64 Version of Windows Vista and Windows 7.

I included x64.nsh and enabled File Redirection as shown in header file documentation - but nothing changed.

${EnableX64FSRedirection}

CopyFiles $PLUGINSDIR\KEY.dll $SYSDIR\KEY.DLL
CopyFiles $PLUGINSDIR\License.dll $SYSDIR\License.dll


After reading this page in MSDN (http://msdn.microsoft.com/en-us/library/aa384187(VS.85).aspx) I changed it to:

CopyFiles $PLUGINSDIR\KEY.dll $WINDIR\system32\KEY.DLL
CopyFiles $PLUGINSDIR\License.dll $WINDIR\system32\License.dll

But still the same. No redirection to SysWOW64.

At last I changed the code to this and it worked. And all examples I found regarding this topic always had FILE commands.

SetOverwrite on
SetOutPath $SYSDIR
File License\KEY.dll
File License\License.dll

This is strange behaviour.Any comments of core NSIS people? What am I missing?


CopyFiles uses SHFileOperation. Maybe the shell does something extra regarding redirection. But it does sound weird...