is there a way for me to have my msi check certain .dll files to see if the current .dlls on the machine are older than the once in the package and if so only then install package.
0 Comments   [ + ] Show Comments

Comments

Please log in to comment

Community Chosen Answer

2
What tool are you using?

From the SDK:

Windows Installer
Searching for Existing Applications, Files, Registry Entries or .ini File Entries
Windows® Installer can search for a particular file or directory during an installation. File or directory searches are used to determine whether the user has already installed a version of an application.


AppSearch Action searches the user's system for file signatures specified in the AppSearch table. If the AppSearch action finds an installed file or directory with the specified signature, it sets a corresponding property, also specified in the AppSearch table, to the location of the file or directory. When searching for a file, the file signature must also be listed in the Signature table. If a file signature is listed in the AppSearch table and is not listed in the Signature table, the search looks for a directory, registry entry, or .ini file entry.

To expedite the search of the user's computer, the installer queries the following locator database tables in the order listed for a suggested search location.

If the file signature is listed in the CompLocator table, the suggested search location is the key path of a component. If the signature is not listed in this table or not installed at the suggested location, the installer queries the RegLocator table for a suggested location.

If the file signature is listed in the RegLocator table, the suggested search location is a key path written in the user's registry. If the signature is not listed in this table or not installed at the suggested location, the installer queries the IniLocator table for a suggested location.

If the file signature is listed in the IniLocator table, the suggested search location is a key path written in an .ini file present in the default Windows directory of the user's system. If the signature is not listed in this table or not installed at the suggested location, the installer queries the DrLocator table for a suggested location.

If the file signature is listed in the DrLocator table, the suggested search location is a path in the user's directory tree. The depth of subdirectory levels to search below this location is also specified in this table.

The first time the installer finds the file signature at a suggested location, it stops searching for this file or directory and sets the corresponding property in the AppSearch table.

For more information about searching for files and directories, see:

How do I search all fixed drives for a file?

How do I search for a file in a specific location?

How do I search for a directory and a file in that directory?

How do I search for a file and create a property holding the file's path?

How do I search for a registry entry and create a property holding the value of the Registry?
Answered 03/14/2007 by: turbokitty
Sixth Degree Black Belt

Please log in to comment
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.

Answers

0
I guess you would use AppSearch and LaunchCondition to accomplish this.
Or you could just use a vbscript/jscript custom action to get the fileversion of defined file(s) and compare with your internal.

But the fileversion rules will make sure not to overwrite newer files or do you have a special case that you don't want the package to install at all?
Answered 03/14/2007 by: AngelD
Red Belt

Please log in to comment
0
turbokitty,

you were to fast mate ;)
Answered 03/14/2007 by: AngelD
Red Belt

Please log in to comment
0
I'm stuck at a score of 3, I have to be fast or I'll never catch you!
Answered 03/14/2007 by: turbokitty
Sixth Degree Black Belt

Please log in to comment
0
I guess you should have more as most users don't seems to rate the help they get and you most certain deserve more then 3 points.
Maybe 4? ;)

Keep up the good work!
Answered 03/14/2007 by: AngelD
Red Belt

Please log in to comment
0
Video on just how to do this here: http://itninja.com/blog/view/appdeploy.com->-training-videos->-windows-installer-appsearch-(wise-system-search)
Answered 03/14/2007 by: bkelly
Red Belt

Please log in to comment
0
As justinSingh isn't a Premium member lets hope he have bought the AppDeploy Library so he can view this video.
Answered 03/14/2007 by: AngelD
Red Belt

Please log in to comment
0
ORIGINAL: AngelD

I guess you would use AppSearch and LaunchCondition to accomplish this.
Or you could just use a vbscript/jscript custom action to get the fileversion of defined file(s) and compare with your internal.

But the fileversion rules will make sure not to overwrite newer files or do you have a special case that you don't want the package to install at all?






well, i don't think that my case is any different from the rest of the packages that people have created but also i see no reason why the package should continue with installation if there is already an installation on the machine. My company is using WPS 5.6 and basically i would like the package to just end installation as soon as it finds that the installation on machine is newer or same as the one in the package. I also have ordered the CDs/DVDs from appdeploy , but when ordering i gave the wrong address and now it's been more then 10 days[:(] .
Answered 03/14/2007 by: justinSingh
Blue Belt

Please log in to comment
0
There is nothing wrong in what you're trying to achieve but depending on your deployment tool maybe it could be done in another easier way.
Are you doing this in a corporate environment, as a vendor or?
If in corp. env., are you not managing the applications/installations for the clients?
Or is the users local admins and they install them by them selfs?

Just trying to help!
Answered 03/14/2007 by: AngelD
Red Belt

Please log in to comment
0
I also have ordered the CDs/DVDs from appdeploy , but when ordering i gave the wrong address and now it's been more then 10 days .
Send an email to Bob with your correct address so he can help you out.
Answered 03/14/2007 by: AngelD
Red Belt

Please log in to comment
0
At my job site , we use marimba to manage all the installations of programs installed on a user's pc. The users don't have any rights to install any software unless it's published through marimba. How do you think is the best way to package the application?
thanks!
Answered 03/14/2007 by: justinSingh
Blue Belt

Please log in to comment
0
are you using wise package studio. if you are then you can have a look at the ADMINISTRATOR OPTIONS page and the REINSTALLATION OPTIONS.
Answered 03/15/2007 by: cygan
Fifth Degree Brown Belt

Please log in to comment
0
I'm not familiar with marimba so maybe someone else can help you here but:
Installing the package on a machine that already has the same package installed will be prevented by windows installer without reinstalling it.
Using Upgrade table to upgrade existing package (removes old) should be an option for you.
Answered 03/15/2007 by: AngelD
Red Belt

Please log in to comment
0
ok, so leaving aside the marimba management tool used to deploy package at my company, how can i make my package search for a certain registry key that has a value of a date and only if that date is older than the one in my package continue installation. I know AngelD mentioned that i could use Appsearch to do this so can you give me some more details on what i have to do after i tell AppSearch to look for the registry key and value.
thanks!
Answered 03/15/2007 by: justinSingh
Blue Belt

Please log in to comment
0
and also i forgot to mention that i can't use the upgrade table since the original installation is done by an .exe .
Answered 03/15/2007 by: justinSingh
Blue Belt

Please log in to comment
0
If returning a data from using RegLocator (search registry using AppSearch) and want to compair then I would use a vbscript that uses the DateDiff function.
For info about AppSearch; open WPS, hit System Search in the Installation Expert view and press F1.

If "the original installation is done by an .exe" then I would author a custom action that would take the uninstall command line and uninstall it silently.
Answered 03/15/2007 by: AngelD
Red Belt

Please log in to comment
0
Here is another method using Marimba. You are going to create a File package Channel. Create a directory under c:\temp or where ever. Create a script that will check the registry key that has the date you need. If the date is the correct date to run your install then call msiexec and then your MSI. If the date is correct for NOT running your MSI then just end. Marimba will stop the channel right then and show it as Installed.
Answered 03/15/2007 by: Cygonz
Senior Yellow Belt

Please log in to comment
0
I input the registry date into the system search , but what do i do from here?
I know AngelD has mentioned that i can use a VBScript to compare the difference, but i'm not to good at writing VBScripts so does someone have one i can modify to work for me?
and where does the results from the registry system search go?
I mean how can i tell my package to use that data to set a launch condition?
Answered 03/19/2007 by: justinSingh
Blue Belt

Please log in to comment
Answer this question or Comment on this question for clarity