/build/static/layout/Breadcrumb_cap_w.png

file checking before install

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

Answers (18)

Posted by: turbokitty 17 years ago
6th Degree Black Belt
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?
Posted by: bkelly 17 years ago
Red Belt
0
Video on just how to do this here: http://itninja.com/blog/view/appdeploy.com->-training-videos->-windows-installer-appsearch-(wise-system-search)
Posted by: AngelD 17 years ago
Red Belt
0
As justinSingh isn't a Premium member lets hope he have bought the AppDeploy Library so he can view this video.
Posted by: justinSingh 17 years ago
Blue Belt
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[:(] .
Posted by: AngelD 17 years ago
Red Belt
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!
Posted by: AngelD 17 years ago
Red Belt
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.
Posted by: justinSingh 17 years ago
Blue Belt
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!
Posted by: cygan 17 years ago
Fifth Degree Brown Belt
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.
Posted by: AngelD 17 years ago
Red Belt
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.
Posted by: justinSingh 17 years ago
Blue Belt
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!
Posted by: justinSingh 17 years ago
Blue Belt
0
and also i forgot to mention that i can't use the upgrade table since the original installation is done by an .exe .
Posted by: AngelD 17 years ago
Red Belt
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.
Posted by: Cygonz 17 years ago
Senior Yellow Belt
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.
Posted by: justinSingh 17 years ago
Blue Belt
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?
Posted by: AngelD 17 years ago
Red Belt
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?
Posted by: AngelD 17 years ago
Red Belt
0
turbokitty,

you were to fast mate ;)
Posted by: turbokitty 17 years ago
6th Degree Black Belt
0
I'm stuck at a score of 3, I have to be fast or I'll never catch you!
Posted by: AngelD 17 years ago
Red Belt
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!
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ