Search code examples
windowswindows-installerinstallshield-2008

"Msiexec REINSTALL=ALL REINSTALLMODE=vamus" is not cleaning old entries


I created an installer "test.msi" . It is version-1. test.msi contains 2 components "comp1", "comp2" comp1 contains 2 files "comp1_file1", "comp1_file2"

In version 2 of test.msi , --> a new component added "comp3". It contains 1 file "comp3_file1" --> "comp1" component is updated. "comp1_file2" file removed and new file "comp1_file3" added Now it contains 2 files (comp1_file1, comp1_file3)

if i upgrade test.msi from version-1 to version-2 using "msiexec /i test.msi REINSTALL=ALL REINSTALLMODE=vamus", in installation folder still i can see version-1 file "comp1_file2".

if i downgrade from version-2 to version-1 using "msiexec /i test.msi REINSTALL=ALL REINSTALLMODE=vamus", in installation folder version-2 related files exist (comp3_file1, comp1_file3).

How to remove old entries(components/files) at reinstall time?

i am using installshield 2008 premier edition.


Solution

  • Transitive components are the way to go. MS describes them here: http://msdn.microsoft.com/en-us/library/aa372462%28v=vs.85%29.aspx

    To follow up on what Chris said, playing with the reinstallmode can do some nasty things. This is particularly true if you're including any shared components. You can backlevel components that other applications are depending on, and you can find yourself prompted to stop seemingly unrelated applications based on files in the shared components being in use. It's a really good thing to avoid if you possibly can.