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

Dynamic file linking and previous package option i


2 replies to this topic

kirann_hegde

kirann_hegde
  • Full Members
  • 93 posts

Posted 29 August 2010 - 05:55

Hello,

We are using:

Install Shield Premier Edition 2008
Basic msi project
All flavors of windows targeted.
We use a single setup.exe for both fresh install and minor upgrades (service packs)


Our project uses a large number of files.
As part of our project, we use multiple components with dynamic file linking setup. These components even have subfolders linked dynamically.
I have done my fair amount of research on the web and each and every single post I have read states that the Component GUIDs change between every build of your product, if you do **not** point to your previous msi package(Releases view) when the installer built.

However we have released several versions of our product without referencing our previous msi package. If all these posts were true, then the component GUIDs should have changed across releases and all our upgrades should have failed. Upon doing a MSI package diff of the msi's released across several versions, I observe the following:
i) None of the component GUIDs has changed.
ii) What has consistently changed is the Directory_ and Keypath column.

So here are my questions:
1) For dynamic file linking, under what circumstances does the Component GUID change between installer builds?
2) What is the algorithm used by Install Shield to generate component GUIDs for dynamic file links?
3) What is the effect of Directory_ and Keypath column values changing across releases on upgrades? Remember we have **never** pointed our package to the previous msi package in any of our release and still the upgrades continue to work.
How is this possible as the keypaths have changed?
4) This is the most important question of all
We support upgrades from the last two versions: 4.5 and 4.6. We are currently at 5.0
Should i now start pointing my current version of my package to the last released msi, which is 4.6? What is the recommended approach here? Remember, i have not pointed either of 4.5 or 4.6 to their respective previous packages when they were built.

I have just 3 more days to get answers to all of this. Any help would be very much appreciated.

Regards,
Kiran Hegde

Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 29 August 2010 - 22:30

The logic inherent in Installshield's dynamic file linking is to my knowledge not publicly known. It can have changed for later versions of Installshield, but I think the keyfile used may change if new files are added to the directory.

In general updates are extremely complicated if you want to support minor updates and / or patches. In these cases you have to get the component creation, keypaths and the lot correct or it will simply not work. If it is OK to uninstall the previous installation and install the new version - which amounts to major upgrade, you are effectively decoupling your new install from the old one and less problems can occur.

If I were you I would stop using dynamic file linking, it has other problems. Then use a major upgrade with the RemoveExistingProducts run before InstallInitialize. This means the previous version of the product gets fully uninstalled before the new version is installed. This makes for a larger setup to download and install, but it is in my view the only reliable option given the release legacy for this product.
Regards
-Stein Åsmul

kirann_hegde

kirann_hegde
  • Full Members
  • 93 posts

Posted 04 September 2010 - 05:56


Firstly, thanks for responding back.
I apologize for the delayed response. I thought i would also get in touch with InstallShield. I am posting below my questions and the response i got from InstallShield. Hopefully people should benefit from this.

Question

Hello,

We are using:

Install Shield Premier Edition 2008
Basic msi project
All flavors of windows targeted.
We use a single setup.exe for both fresh install and minor upgrades (service packs)


Our project uses a large number of files.
As part of our project, we use multiple components with dynamic file linking setup. These components even have subfolders linked dynamically.
I have done my fair amount of research on the web and each and every single post I have read states that the Component GUIDs change between every build of your product, if you do **not** point to your previous msi package(Releases view) when the installer built.

However we have released several versions of our product without referencing our previous msi package. If all these posts were true, then the component GUIDs should have changed across releases and all our upgrades should have failed. Upon doing a MSI package diff of the msi's released across several versions, I observe the following:
i) None of the component GUIDs has changed.
ii) What has consistently changed is the Directory_ and Keypath column.

So here are my questions:
1) For dynamic file linking, under what circumstances does the Component GUID change between installer builds?
2) What is the algorithm used by Install Shield to generate component GUIDs for dynamic file links?
3) What is the effect of Directory_ and Keypath column values changing across releases on upgrades? Remember we have **never** pointed our package to the previous msi package in any of our release and still the upgrades continue to work.
How is this possible as the keypaths have changed?
4) This is the most important question of all
We support upgrades from the last two versions: 4.5 and 4.6. We are currently at 5.0
Should i now start pointing my current version of my package to the last released msi, which is 4.6? What is the recommended approach here? Remember, i have not pointed either of 4.5 or 4.6 to their respective previous packages when they were built.

I have just 3 more days to get answers to all of this. Any help would be very much appreciated.

Response from InstallShield


Thank You for contacting Flexera Software Technical Support.

My name is Alpesh and I will be assisting you with this support incident.

I understand that you have some questions about the Dynamic File Links.

Please find answers to your questions here --
1.) The Component GUID changes when you change the dynamic file link to point to a different folder. Ideally, during subsequent builds, the file keys for the files changes. But if you use the Previous Package field, then it will keep the file keys also in sync with the previous release.
2.) This would be Intellectual Property, but IS generates a different component for every PE file and subfolders.
3.) The Directory identifiers and File Keys are changing, but they are pointing to the same directory and same file. Hence, it is not causing the upgrade to fail.
4.) Ideally each package should point to a previous package. But if you are starting now, point to the latest package that is out right now.

Also the Dynamic File link functionality has been improved upon with every IS release.

I hope the information helps you.



This is inline with what your observations have been.

Thanks,
Kiran Hegde