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

Patching


4 replies to this topic

PaulDeveloper

PaulDeveloper
  • Members
  • 28 posts

Posted 29 March 2004 - 11:13

It is important to our company to produce a patch as we want a small upgrade download. We have accepted that we cannot patch all of our product as some of the components use dynamic file linking and involve a complex (and variable) subfolder hierarchy. However, these components are non-critical and we want to be able to patch the rest.

My attempts to do a minor upgrade have hit a number of problems. I am hoping that some kind person will be able to read this and point me in the right direction!

1. The installation source is always required

This is just an inconvenience for the customer, but it would be nice if we could solve it.

Does anyone know if IS Dev 7.04 puts entries in the MsiFileHash table for all unversioned files?

Has anyone found that the "whole-file only" option cures this problem?

I have checked the ResolveSource action, and it has a condition of "Not Installed", so I presume this is not the cause.

I check the pcp file, REINSTALLMODE set to "omus".

2. Unable to Run the Script Files

I get this error when the progress bar is about 60%.

Our app uses MSDE for demonstration purposes. I downloaded SP3a of SQL Server, and ensured that I was using the updated SQLBASE.MSM.

3. Unable to cope with changed component destination

A previous version had a destination of INSTALLDIR for a component containing the Crystal Reports file p2smon.dll. I believe this is a mistake as it should be SystemFolder. When I ran the patch it kept asking for D:\system32\p2smon.dll. The patch is looking for the file in the original installation CD, but in a place consistent with the updated setup!

Does anyone know if changing a component destination breaks the patching rules? I can find no authoritative source that tells me it does.

When I tried changing the updated setup so that both destinations were INSTALLDIR, the error message did not appear, but then the patch did not work! The application version in add/remove programs was updated, but the files were not. I find this very strange.

4. Patch includes all files

I decided to do a simple experiment in the hope that it might make things clearer. Normally, our installation CD has nearly 1200 files. However, I decided to get make two versions, differing by only one file. This file is versioned, and is the key file for a component.

The patch took 30 minutes to build, and it included all the files in it - it was slightly larger than the original setup - so was completely useless!

It seems a shame that the process of producing a patch causes so many problems, and that these problems seem so difficult to solve.


luke_s

luke_s
  • Full Members
  • 532 posts

Posted 30 March 2004 - 04:14

Hopefully this information is helpful (answers to questions 1 and 3) Sorry i cannot help with 2 and 4.

1. - Have a look in the release setting area for your project. There is an option of whethere or not to add MsiFileHash values to each unversioned file. I think this is set to yes by default.

Besides that, wont you require the source anyway since you are running a re-install?

3. - I dont think you are allowed to change the component destination during a patch. I dont have that much experience with using patches, but maybe you could either change the component guid, or add another component and remove the old one?



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 30 March 2004 - 08:39

Re 2: I think there are known problems when trying to patch MSDE. Microsoft recommends that you don't use the merge modules but run the MSDE setup separately.

Re 3: changing the target location requires a change of the component GUID, which means you can no longer use a Minor Update (full install or patch). This is in help topic "Changing the Component Code"

A log file should tell you why the file isn't being updated.

Re 4: Did you make sure the file table keys are matching between the old and the new version? In InstallShield you would specify the old .msi file in the Patch Optimization panel when you build the new release.


PaulDeveloper

PaulDeveloper
  • Members
  • 28 posts

Posted 01 April 2004 - 15:43

Thanks for your replies, Luke and Stefan.

Re 1: the installation source is always required, I have checked my release settings and 'Generate File Hash Values' has always been set to 'Yes'. I have experimented and found that including the MSDE merge modules causes this problem.

Re 2: unable to run the script files, I have found a solution. We intend to continue using the merge modules as we don't like the idea of calling one setup from the other. We can't really call the setup from a bootstrapper, since the choice of database is actually the 5th step in our setup - and it is conditional depending on the previous choices.

The error appears harmless so I have just included an if statement in the OnError event handler of the InstallScript which bypasses the error message!

Re 3: unable to cope with changed component destination, I think I had made an error with the source files when building my setup. I now find that it updates the component, but leaves it in the original location. We might have to accept the fact that this is a limitation of the patching process.

I still cannot solve issue 4: patch includes all files. I'm afraid Stefan's suggestion of matching the file keys did not work, and the patch log has shown that the patch has even included files where the version number has not changed, so this cannot be the problem.



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 01 April 2004 - 17:44

Re 2: you could run the MSDE setup after your own setup