Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Why can't I patch if file name changed?


4 replies to this topic

PaulDeveloper

PaulDeveloper
  • Members
  • 28 posts

Posted 15 April 2005 - 15:56

Hi People,

I am about to do a new release of an application which has several existing installations. Normally we uninstall the old version and do a clean install of the new to upgrade. However, this time we were hoping to do a patch.

Our developers have told me that they have had to change the file name of 2 DLLs which need to be included in the new version, from the names used in the old version. It is something to do with the class ID having been changed.

An upgrade must install the new file and remove the old file. I remember reading somewhere that this means we can't do a patch, since a patch can't remove files. Is this true? Can't I just use something like an InstallScript command to unregister and then delete the old component after the patch has been run? If this is not possible then it would really help me to know why!

Regards,


Paul

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 15 April 2005 - 20:39

A DLL is (or at least should be) the key path of its component. Removing the file would mean removing the component. However components cannot be removed in a Minor Update, only in a Major Upgrade (i.e. change the ProductCode). Deleting the file from the end user's amchine isn't the problem. But removing a component from the MSI database will make the installer engine stumble.

Major Upgrades should not be shipped as patch but as full msi packages.

As a workaround maybe you can leave the component and the file (replace it with a 1 byte dummy file) in the setup, just to keep the installer engine happy. If your component is transitive you could even set its condition to 0 to remove the file.

PaulDeveloper

PaulDeveloper
  • Members
  • 28 posts

Posted 16 April 2005 - 16:14

I think I will try including a dummy file in the setup with a condition of 0. We do need it to be removed since it is an Outlook Add-In and if it is left on it is going to cause problems.

InstallDev

InstallDev
  • Full Members
  • 43 posts

Posted 21 April 2005 - 21:27

Hi Stefan,

What is a transitive component?

Thanks

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 22 April 2005 - 07:23

A component that has the msidbComponentAttributesTransitive flag set in the Attributes field of the Component table. In InstallShield this setting is called "re-evaluate condition"