This website uses cookies. By clicking Accept, you consent to the use of cookies. Click Here to learn more about how we use cookies.
Turn on suggestions
Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.
- Revenera Community
- :
- InstallShield
- :
- InstallShield Forum
- :
- how to set INSTALLDIR to programfiles64folder for 64 bit machine
Subscribe
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Subscribe
- Mute
- Printer Friendly Page
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 10, 2013
08:29 AM
64 bit uninstallation issues
Hi
We have setup in which we have defined both 32bit and 64bit projects under release for compilation to create EXE. When we are using 32bit executable it is removing all files and folders as per below custom install script-
unction deletethindir(hMSI)
STRING szDir;
begin
szDir = INSTALLDIR
DeleteDir(szDir,ALLCONTENTS);
end;
But for 64 bit machine uninstallation is leaving residues means few files,dll,config files etc. For our 64 bit machine setup, we have defined Program64bitFolder so this script should remove files fine like 32 bit but it is actually not. Can you please help with what can be issue.?
We have setup in which we have defined both 32bit and 64bit projects under release for compilation to create EXE. When we are using 32bit executable it is removing all files and folders as per below custom install script-
unction deletethindir(hMSI)
STRING szDir;
begin
szDir = INSTALLDIR
DeleteDir(szDir,ALLCONTENTS);
end;
But for 64 bit machine uninstallation is leaving residues means few files,dll,config files etc. For our 64 bit machine setup, we have defined Program64bitFolder so this script should remove files fine like 32 bit but it is actually not. Can you please help with what can be issue.?
(7) Replies
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 10, 2013
08:52 AM
by the way i have also given condition in custom action to execute it when REMOVE= "ALL"
mailfromsaurabh wrote:
Hi
We have setup in which we have defined both 32bit and 64bit projects under release for compilation to create EXE. When we are using 32bit executable it is removing all files and folders as per below custom install script-
unction deletethindir(hMSI)
STRING szDir;
begin
szDir = INSTALLDIR
DeleteDir(szDir,ALLCONTENTS);
end;
But for 64 bit machine uninstallation is leaving residues means few files,dll,config files etc. For our 64 bit machine setup, we have defined Program64bitFolder so this script should remove files fine like 32 bit but it is actually not. Can you please help with what can be issue.?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 10, 2013
09:39 AM
For testing only, can you add a MessageBox(szDir, MB_OK), to your CA to see if szDir is what you expect it to be?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 13, 2013
05:22 AM
phill_mn wrote:
For testing only, can you add a MessageBox(szDir, MB_OK), to your CA to see if szDir is what you expect it to be?
It Populated "C:\Programfiles\[productfolder]" on 64 bit machine, however product was installed on c:\[productfolder]. Hence, I can see it is not saving custom path choose by user in 64 bit machine during installation and hence it is leaving residues during uninstallation from control panel. Any idea about fix? or is it the known issue in install shield with 64 bit machines?
Note: Same script is able to save custom installation path in 32 bit machine and able to uninstall/remove product contents folder completely.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 13, 2013
07:54 AM
mailfromsaurabh wrote:
It Populated "C:\Programfiles\[productfolder]" on 64 bit machine, however product was installed on c:\[productfolder]. Hence, I can see it is not saving custom path choose by user in 64 bit machine during installation and hence it is leaving residues during uninstallation from control panel. Any idea about fix? or is it the known issue in install shield with 64 bit machines?
Note: Same script is able to save custom installation path in 32 bit machine and able to uninstall/remove product contents folder completely.
Well,
I checked this registry-
\software\microsoft\windows\currentversion\uninstall\
And found out that Install Location even after custom chosen path during installation has not been updated in 64 bit machine. So, eventually while uninstalling it is removing default install location folder which is set to [INSTALLDIR] in installshield project setup. It means this is uninstaller is working fine in default install location and is having only issue in custom install location during run time.
Any idea how we can set user chosen INSTALL LOCATION in registry during run time in 64 bit?
Also, I have no clue why same thing is working perfectly fine in 32 bit machines and able to save custom chosen path. May be INSTALLDIR is not being correctly set in 64 bit machine? Is it? How can i set it up?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 13, 2013
09:02 AM
This may just be a wild guess, but when installing on the x64 bit target, the code that saves the user's selection path, is it running in a 64 bit or a 32 bit process? My understanding is that InstallScript is going to run in a 32 bit process, so unless you use the REGDB_OPTIONS REGDB_OPTION_WOW64_64KEY the saved registry info will be under the Wow6432Node.
\software\microsoft\windows\Wow6432Node\currentversion\uninstall\
If using a C++ (or other language) CA in MSI then I think you are running in a 64 bit process and would expect the entries to be written where you are looking. Also in the Uninstall, if you are using a MSI table to read the registry, msiexec.exe would most likely default to a 64 bit process and not look under the Wow6432Node unless you redirected to that location. I do not have much experience with MSI so I hope I am not misleading you.
\software\microsoft\windows\Wow6432Node\currentversion\uninstall\
If using a C++ (or other language) CA in MSI then I think you are running in a 64 bit process and would expect the entries to be written where you are looking. Also in the Uninstall, if you are using a MSI table to read the registry, msiexec.exe would most likely default to a 64 bit process and not look under the Wow6432Node unless you redirected to that location. I do not have much experience with MSI so I hope I am not misleading you.
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 14, 2013
02:36 AM
phill_mn wrote:
This may just be a wild guess, but when installing on the x64 bit target, the code that saves the user's selection path, is it running in a 64 bit or a 32 bit process? My understanding is that InstallScript is going to run in a 32 bit process, so unless you use the REGDB_OPTIONS REGDB_OPTION_WOW64_64KEY the saved registry info will be under the Wow6432Node.
\software\microsoft\windows\Wow6432Node\currentversion\uninstall\
If using a C++ (or other language) CA in MSI then I think you are running in a 64 bit process and would expect the entries to be written where you are looking. Also in the Uninstall, if you are using a MSI table to read the registry, msiexec.exe would most likely default to a 64 bit process and not look under the Wow6432Node unless you redirected to that location. I do not have much experience with MSI so I hope I am not misleading you.
Well, I will look into wow6432node registry as well but my guess is that when I have setup property under custom actions for 64 bit folder there could be issue. Means it is setting up default INSTALLDIR permanently to [programfiles64folder] and not changing post user changed it. I have setup this after "ISSetAllusers". Is this correct way to set it?
- Mark as New
- Subscribe
- Mute
- Permalink
- Report Inappropriate Content
‎May 15, 2013
06:32 AM
phill_mn wrote:
This may just be a wild guess, but when installing on the x64 bit target, the code that saves the user's selection path, is it running in a 64 bit or a 32 bit process? My understanding is that InstallScript is going to run in a 32 bit process, so unless you use the REGDB_OPTIONS REGDB_OPTION_WOW64_64KEY the saved registry info will be under the Wow6432Node.
\software\microsoft\windows\Wow6432Node\currentversion\uninstall\
If using a C++ (or other language) CA in MSI then I think you are running in a 64 bit process and would expect the entries to be written where you are looking. Also in the Uninstall, if you are using a MSI table to read the registry, msiexec.exe would most likely default to a 64 bit process and not look under the Wow6432Node unless you redirected to that location. I do not have much experience with MSI so I hope I am not misleading you.
Hi
I checked given path \software\microsoft\windows\Wow6432Node\currentversion\uninstall\
![](/skins/images/D60DF682EA37BF37032955CE10F3F0BB/responsive_peak/images/icon_anonymous_message.png)