Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Call one MSI from within another MSI


2 replies to this topic

schworak

schworak
  • Members
  • 7 posts

Posted 31 October 2002 - 17:29

I am failry new to using InstallShield developer. I like the ease of use once I started getting the hang of it. Here is the problem I am not facing...

I have a program that searches for the existance of another program. If it is there the install can continue on its way. But I want to call another MSI to install the first product if it is not found and I can't quite figure that out.  ???

And when I do this, will uninstalling my MSI also uninstall the onw called by my MSI?  ???

AdamBell

AdamBell
  • Members
  • 21 posts

Posted 29 January 2003 - 17:29

schworak,

I don't use that tool, but I know how to do thid with Wise or Orca.

I'll post some info and hope it gives you an idea. This is how I do it with Orca......

I have two MSI's A & B. I want B to be nested within A:

In MSI A:
1) Add a custom action. I want my nested MSI stored within my parent so I use type 7. Source is the name you intend to call it when it's stored in the substorage (Blah) and Target is any properties you want to pass (ADDLOCAL=ALL and ALLUSERS=[ALLUSERS] are good!;)
2) Add a row in the InstallExecuteSequence table. Action matches the name of the custom action, Condition (NOT Installed), and sequence of about 6650 (Wise recemmends after InstallFinalize in their Package Studio Helpfile)
3) Tricky bit: Using a VBS script form the MSI SDK (WiSubStg.vbs) embed the nested MSI(B) into the parent, use the name that you used as source in the CA table!

One trick I found was that both Apps needed to default into the same INSTALLDIR or the child MSI wouldn't install (no errors, just no result).

I know this isn't ISD specific, but I hope it helps. Now I'm trying to work out how to uninstall the child when the parent is. I have found some doco on it, but it doesn't work for me :(

Cheers

Adam :)

AdamBell

AdamBell
  • Members
  • 21 posts

Posted 29 January 2003 - 17:47

Part II ;)

No the child MSI doesn't uninstall by default. You have to create another CA.

In the parent MSI (A):
1) In the CA table:
Action: Remove_MSI_B
Type: 39
Source: {MSI B's ProductCode}
Target: REMOVE=ALL
2) In the InstallExecuteSequence table:
Action: Remove_MSI_B
Condition: REMOVE~="ALL"
Sequence: 6655

Cheers

Adam :)