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

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.?
Labels (1)
0 Kudos
(7) Replies
mailfromsaurabh
Level 3

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.?
0 Kudos
phill_mn
Level 7

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?
0 Kudos
mailfromsaurabh
Level 3

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.
0 Kudos
mailfromsaurabh
Level 3

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?
0 Kudos
phill_mn
Level 7

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.
0 Kudos
mailfromsaurabh
Level 3

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?
0 Kudos
mailfromsaurabh
Level 3

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\ but seems this is either wrong path or path should be \software\Wow6432Node\currentversion\uninstall\ but I cant find my product GUID there. Even i checked installed product key it is not saving Installlocation choosen by user during install rather it is keeping what has been set as default in Installshield project file and this is the problem. I have setup INSTALLDIR as first action to setup ProgramFiles64folder but when i save the project its sequence is getting changed after "ISSetupfilesextract" and during runtime it is not saving custom install path choosen by user. Any help you can do to tell me is it has to be setup another way?
0 Kudos