cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
Leon999
Level 3

Cannot get a 64 bit dll to install to the correct system directory

I am running with InstallShield 12 (no longer supported) and have created a Installscript project (using the IsCmdBld.exe command) that contains a 64 bit
dll that should be installed to the Windows\System32 area. I have verified that the dll really is 64 bit (using the dumpbin /headers command from VS2010
Command Line) and also I have verified in the installshiled project under the file properties that the "Destination" property is set to WINDIR\system32,
which should point to the same Windows\System32 area on both Win7 32 and 64 bit PCs. But when the project is installed on a Win7 64bit PC the file is
installed to the Windows\sysWOW64 area which is for 32 bit applications. I am aware that Installshield is a 32 bit application, my Installshield is running
on 32 bit PC and that there can be problems when using InstallShield System Variables (e.g WINSYSDIR) to denote destination folders, but I am not doing this,
WINDIR is the same for both 32 bit and 64 bit PCs (C:\Windows). So I am not sure what the problem is.
Any advice would be greatly appreciated.

Thanks and Regards
Leon999
Labels (1)
0 Kudos
(4) Replies
KingVoodoo
Level 7

Check if your project is a 64 or 32 bit project and check if the component is a 64 (it should be) or 32 bit component.
0 Kudos
Leon999
Level 3

KingVoodoo wrote:
Check if your project is a 64 or 32 bit project and check if the component is a 64 (it should be) or 32 bit component.


My project is a 32 bit project, component is a 64 bit dll
0 Kudos
KingVoodoo
Level 7

Leon999 wrote:
My project is a 32 bit project, component is a 64 bit dll


The component is either 64 or 32 bit regardless of what you have in the component, it can still be 32 bit.
0 Kudos
DebbieL
Level 17

More recent versions of InstallShield have improvements in 64-bit support for InstallScript projects. From the InstallShield 2012 Spring release notes:
Support for 64-Bit Components in InstallScript Installations

InstallScript projects now have support for installing files to WINSYSDIR64 (the InstallScript variable that maps to the 64-bit System32 folder), and for installing registry data to the 64-bit registry locations, without requiring you to modify your InstallScript code. If you have files or registry data that need to be installed to these 64-bit locations, you can add the files and registry data to a component, and select Yes for that component’s new 64-Bit Component setting. At run time, the installation automatically disables file system redirection for the component’s System32 files, and it prevents redirection for the component’s 64-bit registry data.

Previously, to install files to WINSYSDIR64, it was necessary to override the Installing and Installed events for features that contained components that installed to that location. In the Installing event, it was necessary to use the WOW64FSREDIRECTION constant with the Disable function to disable file system redirection; in the Installed event, it was necessary to use WOW64FSREDIRECTION with the Enable function to re-enable file system redirection for other parts of the installation. The same sort of disabling and enabling was necessary for the UnInstalling and UnInstalled events to ensure that those files were removed correctly during uninstallation.

If file system redirection is not disabled when an InstallScript installation installs to WINSYSDIR64, 64-bit Windows automatically redirects the file transfers to the 32-bit System32 folder (SysWOW64).

Also previously, to install registry data to a 64-bit area of the registry, it was necessary to use the InstallScript registry functions to create registry data with REGDB_OPTION_WOW64_64KEY set in REGDB_OPTIONS. Then it was necessary to use REGDB_OPTION_USE_DEFAULT_OPTIONS with REGDB_OPTIONS to re-enable registry redirection for other parts of the installation.

If registry redirection is not disabled when an InstallScript installation installs to a 64-bit registry location (HKEY_LOCAL_MACHINE\Software), 64-bit Windows automatically redirects the registry changes to the equivalent 32-bit registry location (HKEY_LOCAL_MACHINE\Software\Wow6432Node).


To learn more, see Targeting 64-Bit Operating Systems with InstallScript Installations.

If you can't upgrade, try using the WOW64FSREDIRECTION constant with the Disable and Enable functions.

I hope that helps.
0 Kudos