preserve the installation directory

  • Thread starter Thread starter Viviana Vc
  • Start date Start date
V

Viviana Vc

Hi all,

As far as I read from Phil Wilson's book the installation directory is
not preserved so if you need it when uninstalling you have to get it
somehow.

I am using InstallShield 11.5 Premier and I tested and actually I
noticed that the INSTALLDIR is preserved. I mean when installing via UI
I changed the installation directory and when I run the uninstaller the
INSTALLDIR was having the correct installation path.

Am I missing something here?
Thank you,
Viv
 
MSI does not preserve the application folder. InstallShield might simply be
saving it for you and re-initializing it when you uninstall, but you'd
probably have to look in the MSI file (with Orca or something) to see if
that's the case.
 
Hi Phil,

Thanks for your answer.

I tried to understand. I found in registry at
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\GUID
the InstallLocation which has this info. I manually changed this to
something else and re-run the MSI but still it has the correct
INSTALLDIR path. Also the MSI is not changed after I run it to install
the application.
Any suggestions how could I find out where and how does IS preserve the
INSTALLDIR?

Thank you,
Viv
 
If you found the location there, IS must be setting the ARPINSTALLLOCATION
property, that's the "official" way to save the location because then it can
be retrieved with the MSI APIs.
 
In the installation log I found:

MSI (s) (58:FC) [11:15:57:000]: Doing action: SetARPINSTALLLOCATION
Action 11:15:57: SetARPINSTALLLOCATION.
Action start 11:15:57: SetARPINSTALLLOCATION.
MSI (s) (58:FC) [11:15:57:000]: PROPERTY CHANGE: Adding
ARPINSTALLLOCATION property. Its value is 'C:\fofofo\'.
Action ended 11:15:57: SetARPINSTALLLOCATION. Return value 1.

But in the uninstaller log I found:

MSI (s) (58:08) [11:17:37:031]: Skipping action: SetARPINSTALLLOCATION
(condition is false)

Also after installing I changed manually in the registry the value of
InstallLocation but still InstallShield when uninstalling was having the
INASTALLDIR set on the correct value.

I'll research further and if I'll find something I'll write back.

Thx,
Viv
 
After going back and forth with the support from InstallShield I got
back the following:

"I have again confirmed with Senior Engineer, who has updated that
Windows Insatller performs the task. A custom action is associated with
the component, which will store the value in the HKEY/CLASSES Root
cloning the contents of the msi. Hence it preserves the value during
uninstallation also."

Still I tried to alter all registry entries I could find with the
INSTALLDIR path but still the uninstaller had the right path, so I'm
clueless.

Viv

In the installation log I found:

MSI (s) (58:FC) [11:15:57:000]: Doing action: SetARPINSTALLLOCATION
Action 11:15:57: SetARPINSTALLLOCATION.
Action start 11:15:57: SetARPINSTALLLOCATION.
MSI (s) (58:FC) [11:15:57:000]: PROPERTY CHANGE: Adding
ARPINSTALLLOCATION property. Its value is 'C:\fofofo\'.
Action ended 11:15:57: SetARPINSTALLLOCATION. Return value 1.

But in the uninstaller log I found:

MSI (s) (58:08) [11:17:37:031]: Skipping action: SetARPINSTALLLOCATION
(condition is false)

Also after installing I changed manually in the registry the value of
InstallLocation but still InstallShield when uninstalling was having the
INASTALLDIR set on the correct value.

I'll research further and if I'll find something I'll write back.

Thx,
Viv


If you found the location there, IS must be setting the ARPINSTALLLOCATION
property, that's the "official" way to save the location because then it can
be retrieved with the MSI APIs.
 
Without dissecting the MSI and a log of the uninstall it's impossible to
know what's going on. I'd guess that there might be a
GetArpUninstallLocation during the uninstall that uses MsiGetProductInfo to
get the location, something like that
--
Phil Wilson
[Microsoft MVP-Windows Installer]
Viviana Vc said:
After going back and forth with the support from InstallShield I got
back the following:

"I have again confirmed with Senior Engineer, who has updated that
Windows Insatller performs the task. A custom action is associated with
the component, which will store the value in the HKEY/CLASSES Root
cloning the contents of the msi. Hence it preserves the value during
uninstallation also."

Still I tried to alter all registry entries I could find with the
INSTALLDIR path but still the uninstaller had the right path, so I'm
clueless.

Viv

In the installation log I found:

MSI (s) (58:FC) [11:15:57:000]: Doing action: SetARPINSTALLLOCATION
Action 11:15:57: SetARPINSTALLLOCATION.
Action start 11:15:57: SetARPINSTALLLOCATION.
MSI (s) (58:FC) [11:15:57:000]: PROPERTY CHANGE: Adding
ARPINSTALLLOCATION property. Its value is 'C:\fofofo\'.
Action ended 11:15:57: SetARPINSTALLLOCATION. Return value 1.

But in the uninstaller log I found:

MSI (s) (58:08) [11:17:37:031]: Skipping action: SetARPINSTALLLOCATION
(condition is false)

Also after installing I changed manually in the registry the value of
InstallLocation but still InstallShield when uninstalling was having the
INASTALLDIR set on the correct value.

I'll research further and if I'll find something I'll write back.

Thx,
Viv


If you found the location there, IS must be setting the
ARPINSTALLLOCATION
property, that's the "official" way to save the location because then it
can
be retrieved with the MSI APIs.
 
Back
Top