Hi,

I've downloaded the Adobe Flash MSI installs for both IE (ActiveX) & other browsers such as FireFox (Plugin). I've assigned the IE install via Group Policy Software Installs easy enough. I'd like to do the same to the Plugin version, but only want it to install IF FireFox exists (we only use IE or FireFox). SO I'd like to create a condition in the MSI that checks for "C:\Program Files\Mozilla Firefox\firefox.exe".

I'm new to editing MSI files, I've made a few basic ones in the past using wizard based application, but modifying an existing MSI is all new!

I've read a number of other posts on the forum, and http://support.microsoft.com/kb/827021 which suggest this could be done using AppSearch/LaunchCondition/System Search. However, I'm using ORCA to open/view/modify the MSI file, and I can not see how to add the System Search table (LaunchCondition already exists and I've managed to add the AppSearch table), is System Search a table? Or am I misinterpreting the post? Also in the AppSearch, it asks for a Signature, how do I find out the signature?

Any help or advice would be most appreciated!

Ben
0 Comments   [ + ] Show Comments

Comments

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
You can probably use this post: http://itninja.com/question/how-do-you-roll-out-new-machines?9136

And you can use the Windows Installer SDK documentation for more information. For the table reference: http://msdn2.microsoft.com/en-us/library/aa368259.aspx

Hope this helps
Answered 10/04/2007 by: FrankSpierings
Orange Senior Belt

Please log in to comment
2
LaunchCondition table:
Condition
FIREFOX <> NULL
Description
Error, Firefox.exe not found

AppSearch table:
Property
FIREFOX
Signature_
NewSignature1

DrLocator table:
Signature_
NewSignature1
Path
[ProgramFilesFolder]
Depth
10

Signature table
Signature
NewSignature1
FileName
firefox.exe

The above will do a system search through program files for firefox.exe and if found will run the app, if not found the app will fail with the error "Error, Firefox.exe not found"

Paul
Answered 10/04/2007 by: Inabus
Second Degree Green Belt

Please log in to comment
1
Ben keep one more thing in mind , you need to sequence the app search action before launch conditions. So go to both the tables that is InstallExecute and InstallUISequence and check the sequencing.
Answered 10/04/2007 by: blacklisted_packager
Orange Belt

Please log in to comment
0
Hi Inabus,

Thanks for the reply, great details!

I used a GUI MSI creation tool just before you post, and got virtually the same output, apart from the Signature. The GUI tool provided:

AppSearch table:
Property
FIREFOX
Signature_
FileSearchSign

Signature table:
Signature
FileSearchSign
FileName
firefox.exe

Does this matter? Or is it a case that as they reference each other, so as long as they are the same it doesn't matter?

Hi blacklisted_packager,

Looking at the tables InstallExecute and InstallUISequence, the LaunchCondition action has the sequence 410 in both, and the AppSearch action seems to have been assigned sequence 400, in both, automatically. Does this sound OK to you?

Many thanks to both of you for your help!

Ben
Answered 10/04/2007 by: bjblackmore
Senior Yellow Belt

Please log in to comment
0
ORIGINAL: bjblackmore

AppSearch table:
Property
FIREFOX
Signature_
FileSearchSign

Signature table:
Signature
FileSearchSign
FileName
firefox.exe

Does this matter? Or is it a case that as they reference each other, so as long as they are the same it doesn't matter?



As long as they match, and they do they will work.
Answered 10/04/2007 by: TOBES_UK
Senior Purple Belt

Please log in to comment
0
As tobes_uk said, as long as the signature matches accross the tables it doesnt matter what they are called.

Paul
Answered 10/05/2007 by: Inabus
Second Degree Green Belt

Please log in to comment
0
Guys,

I've been testing this MSI + the transform which has the above settings all morning, and for some reason it still installs if I rename firefox.exe, however when I try to uninstall it, I get the error message "Error: Firefox.exe is missing".
Have I missed something?

Thanks

Ben
Answered 10/05/2007 by: bjblackmore
Senior Yellow Belt

Please log in to comment
0
AH, OK sorted, my fault, firstly I'd set FIREFOX=TRUE rather than FIREFOX <> NULL and secondly I was applying the transform wrong using
msiexec /i adobeflash.msi /t transform.mst
rather than
msiexec /i adobeflash.msi TRANSFORMS=transform.mst
I thought /t and TRANSFROMS= did the same thing!?

Seems to be working now! Ultimate test will be when I apply it to a group policy, and see if it installs/fails on any users!

Many thanks for all your help

Ben
Answered 10/05/2007 by: bjblackmore
Senior Yellow Belt

Please log in to comment
0
There's still a doc on MS's site that alludes to the '/t' switch but it's obsolete. I found this out on my second day of being dumped with the packaging task all those years ago...
Answered 10/05/2007 by: VBScab
Red Belt

Please log in to comment
0
Hi Ben,
your approach isn't bullet proof, because, if somebody changes the install directory, nothing is being detected.
You should search for the following registry location:
"HKLM\SOFTWARE\Mozilla\Mozilla Firefox\CurrentVersion"

And please read this:
http://developer.mozilla.org/en/docs/Plugins:_The_first_install_problem

The Flash exe plugin installer is already using this aproach, if it detects Firefox.
If you want to use it with the MSI package, install Flash with the exe installer, capture the registry settings and import them to the MSI package.

Hope, this gives you some ideas.
Regards, Nick
Answered 10/05/2007 by: nheim
Tenth Degree Black Belt

Please log in to comment
0
Hi Nick,

Thanks for the details. I'll have a look into modifying the MSI again to search for the registry value.

One little problem I've noticed with this, is that as I'm deploying this MSI via Group Policy Software Installation, if the user doesn't have FireFox installed, the MSI still tries to install every time the user boots up their machine, which then fails. Is there something I need to set to stop the package being advertised to the machine continously once the install has failed?

Many thanks

Ben
Answered 10/12/2007 by: bjblackmore
Senior Yellow Belt

Please log in to comment
0
Well, that's how GP is designed to work. However, if you want to stop install attempts after a failed attempt, off the top of my head I'd suggest adding a custom registry entry via a CA to the end of your install. Use a CA because by default it won't get rolled back in the event of failure. If the entry is detected, it means the install was attempted but it failed. If it's NOT detected, it means it no install attempt has been made. Add another CA to remove the entry after InstallFinalize. You may want to add conditions to one or both CAs.

There may be a simpler solution: if one comes to me, I'll re-post.
Answered 10/12/2007 by: VBScab
Red Belt

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