cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
SteveoChicago
Flexera Alumni

64 bit Program File copy

I'm trying to perform what I believe should be a simple task. I need to copy a file to the c:\Program Files\CoCreate\CoCreate Modeling 2008\dxfdwg folder on a 64 bit workstation. It needs to work on both 32 and 64 bit XP.

It works fine on the 32 bit but when it comes to the 64 bit, it changes the path to Program Files (x86) so it creates a whole new invalid folder. I perform a System Search for the file and it finds it ok. However, during the running of the msi, the property gets changed from Program Files to Program Files (x86).

Is there a way I can stop this from happening. It even changes the hard coded path in the Component Destination when I tried that.

MSI (s) (10:B8) [10:54:03:756]: PROPERTY CHANGE: Modifying MODELING property. Its current value is 'C:\Program Files\CoCreate\CoCreate Modeling 2008\dxfdwg\'. Its new value: 'C:\Program Files (x86)\CoCreate\CoCreate Modeling 2008\dxfdwg\'.
Labels (1)
0 Kudos
(5) Replies
datamine
Level 6

Is this file you're trying to copy a true 64-bit executable? If not, then Program Files (x86) is the correct place for it to be on a 64-bit Operating System. Similarly you may find some registry entries have mysteriously appeared under Wow6432Node - this is all perfectly normal and should work fine if your application is "32-bit running under 64-bit"
0 Kudos
Apoorv_Jain
Level 5

Can you try set Destination path for one component as [ProgramFiles64Folder] and add a condition VersionNT64 >= 500 on one component and on another component as [ProgramFilesFolder] with condition VersioNT >= 500

Or if you are copying file via script, can you try writing a code something like this
nSize=128;
MsiGetProperty(hMSI,"VersionNT64",szOS,nSize);
if(StrLength(szOS) > 0) then
ProgramFiles64Folder ^ "your path";
else
ProgramFilesFolder ^ "your path";
endif;
0 Kudos
SteveoChicago
Flexera Alumni

Thanks for the suggestions. It's basically a configuration file I want to copy so it's not a 64 bit file. I believe the issue has something to do with the fact that I created the package on a 32 bit workstation and have to update a 32 bit app and a 64 bit app on the 64 bit workstation. I hope that's not the case though.

I just tried adding the component destination of [ProgramFiles64Folder] with the condition of VersionNT64 >= 500 and it still gets changed to Program Files (x86).

MSI (s) (10:EC) [14:13:46:247]: PROPERTY CHANGE: Modifying ProgramFiles64Folder property. Its current value is 'C:\Program Files\'. Its new value: 'C:\Program Files (x86)\'.

I may end up writing a vbs to take care of this but I assumed InstallShield 9 would be able to do it.

Thanks
0 Kudos
MichaelU
Level 12 Flexeran
Level 12 Flexeran

Windows Installer makes ProgramFilesFolder and ProgramFiles64Folder refer to the x86 folder on 64-bit machines unless the MSI is marked as a 64-bit package. Unfortunately, if it's marked as a 64-bit package, it cannot be installed on 32-bit systems. So in short, you'll need to either make multiple packages (see Heath Stewart's blog on this), or do this outside the built-in functionality of Windows Installer.
0 Kudos
SteveoChicago
Flexera Alumni

Hi Mike, thanks for the info. That's exactly what I was trying to avoid. I will write a vb script to get it done because it would be easier to have one msi to deploy to both OS'. I'll let you know how that goes 🙂 Thanks goodness for vb sample scripts posted all over the internet!
0 Kudos