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)
Please log in to answer
Posted by:
turbokitty
17 years ago
What tool are you using?
From the SDK:
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
Posted by:
AngelD
17 years ago
Posted by:
justinSingh
17 years ago
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
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!
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
Posted by:
justinSingh
17 years ago
Posted by:
cygan
17 years ago
Posted by:
AngelD
17 years ago
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.
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
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!
thanks!
Posted by:
justinSingh
17 years ago
Posted by:
AngelD
17 years ago
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.
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
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
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?
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
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?
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:
turbokitty
17 years ago
Posted by:
AngelD
17 years ago
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.