View Full Version : Prerequisit Questions & SQL 2005 Express

06-07-2006, 05:04 PM
I have some questions about prerequisites some specifically relating to the SQL 2005 Express prerequisite.

1. I would like to store the prerequisites out on the network so they are available to all of our install developers. Unfortunately it does not appear you can tell InstallShield to look in a specific folder for prerequisites. Is there any way to tell InstallShield to look for prerequisites in a specific folder? If not consider this an official request.

2. It appears to me that documentation on the prerequisite editor is lacking in many ways. For example when configuring a condition to check for a specific registry value is the value we specify in Value Data on the left or right of the comparison operator. Also, when comparing the Value Data to the returned value are you doing a basic case insensitive compare? Is InstallShield smart enough to do a version comparison segment-by-segment? (Consider this a formal request if is does not do the latter). You just give a very basic desription of each tab with very little to no details on each option in the tab.

3. In the SQL 2005 Express prerequisite there is a condition that checks the version of the file "[ProgramFilesFolder]Microsoft SQL Server\90\COM\sqlresld90.dll". The version for this file has not changed for SQL 2005 Express SP1. Is there another file we can check? I noticed that someone that created their own SQL 2005 Express prerequisite decided to check the registry key value in "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\SQLEXPRESS\MSSQLServer\CurrentVersion\CurrentVersion". This seems like a good idea if a version comparison is performed when using this type of condition, but if a basic string comparison is performed this can be unpredictable. Granted it may work reasonably well the majority of the time, but it will probably bite you when you least expect it.


06-07-2006, 05:51 PM
Prerequistes may individually be downloaded now, so perhaps you can use the known location as a download source. Maybe. Test it first. Otherwise yes, this would have to be a feature request.

Numeric and string comparisons consider the expression to be something like ([ActualValue] OPERATION [PrereqProvidedValue]) when the order matters. String comparisons on registry values are case sensitive and exact. Version comparisons on files work as expected.

Per above, comparing the version contained in a string will not necessarily do what you want. I don't know if there is a better option available for detecting SQL2005 Express SP1. Would having options for versioned comparisons of string fields do the trick for you?

06-07-2006, 06:15 PM
As far as I can tell InstallShield looks in one and only one location for the prerequisites, so I am not sure exactly what you mean when you say "use the known location as the download source." If we are using the prerequisites that ship with InstallShield then it is not all that necessary to have a shared network location, but even in this case I still see value in having them in one location to better manage them. When we start creating our own prerequistes though it would be nice to be able to share them on the network. It would also be be nice to have a shared network location so we don't have to copy the prerequisites to our stand alone build machine.

Yes I think an option to that allows you to do version comparisons of string registry values would be wonderful.

06-08-2006, 09:20 AM
For our purposes I store the prerequisites in source safe and then GetLatest for all the standalone builds. Other developers then have access to them as well and you can handle versioning.

The good thing about this is that when I modify one of the conditions for a prerequisite (such as looking for a specific instance of a SQL 2005 Express) then I can easily propagate this to all my standalone build machines and have the file always export to the standalone build directory. Other developers will just have to get in the practice of fetching the files from source safe to their local prerequisites directory.

06-08-2006, 09:55 AM
That sounds like a good option. If you were able to specify a shared network location for the prerequisites then you would be able to set up a SourceSafe Shadow folder and make the prerequisites available on the network as well.

This is actually how we handle some of our Visual Studio projects. We have a large suite of 3rd-party UI controls including source that we store in SourceSafe. Then we setup a shadow folder for the 3rd party controls on the network that is accessible to all the developers. Understandably this isn't for everyone. If you have developers with laptops that work disconnected from the network then the 3rd party library is not available to them.

Thanks for the info. Understanding how others handle their daily installation development activites is very helpful and gives you more ideas on how to best handle your own development activities.

06-08-2006, 10:25 AM
Oh, it looks like I misunderstood your first request. I read it to mean install-time instead of build-time. For build-time it sounds like this would be well-served by the "network repository" feature in the Premier edition, if it were extended to support prerequisites. Does that sound about right?

06-08-2006, 10:44 AM
I don't use the Premier edition so I am only vaguely familiar with the network repository feature so that may work. Ideally I would like to be able to specify prerequisite path(s) at the project level as I have requested for the merge module paths here (http://community.installshield.com/showthread.php?t=159814).

06-08-2006, 11:51 AM
For me it would be nice to be able to use it similar to the -o is used for merge modules from a command line.

Having a network repository does not work for standalone builds I do believe.

Having modified prerequisites stored as part of the project would be ideal because the changes I make for one project may not be applicable to another application. What I do now is save it as a separate name that is unique to the project and then add it back to source safe. Then during the build cycle I Get Latest to fetch all the prerequisites from source safe.

06-09-2006, 02:44 PM
Agreed. If you add prerequisites to the network repository and the network repository cannot be used in the standalone build then it is not of much use to me.

Dan, you mentioned having the prerequisites stored as part of the project itself. Is this instead of just storing the path(s) to the prerequisites in the installation project (ISM) file? So it might be like a custom dialog that you exported from another project so you could use it in other projects. The exported dialog is stored in it's own file, but when you import it into another project it becomes part of that project? If this is the case, I guess you would still need to be able to specify a path to the file the prerequisite will run (e.g. - sqlexpr.exe) which I would assume in the case would be part of the project. If this is what you meant, I think that could work too.

Ultimately, I want to be able to specify a different prerequisite path(s) than the one and only one InstallShield requires. If we can specify it at the project level all the better. Oh, and you should be able to specify one or more prerequisite paths in the stand-alone builder as well.

Thanks for chiming in on the subject.


06-09-2006, 02:56 PM
Here is another prerequisite question.

When you add more than one condition to a prerequisite is it valid to say that if any one of the conditions is true then the application defined in the prerequisite is run?

Request: When creating a condition that checks a specified registry value it would nice to also be able to specify whether or not you want to do a case sensitive or case insensitive comparison.