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

$£%&*! InstallShield installs!


6 replies to this topic

VBScab

VBScab
  • Full Members
  • 436 posts

Posted 18 January 2008 - 14:17

The app in question is TradeWeb v7.04. The vendor assures us that it's 7.04 but the version property is '7.3'...which speaks volumes about quality control.

When deployed per-user (a site requirement) via GP, the install fails at the FeaturesInstalling CA which is one of the first CAs. I can install it fine if I RunAs a local admin. I have reset the IS driver (it requires - and checks for! - v7.7.02) COM+ stuff to be 'Launching User' rather than the default 'Interactive User'. The error logged is:

MSI (s) (98:F4) [12:30:26:813]: Invoking remote custom action. DLL: C:\WINDOWS\Installer\MSI13E.tmp, Entrypoint: FeaturesInstalling
1: Invoke Function fails, Error = 0x8000ffff

Googling for the error just brings up a bunch of stuff about it occuring for re-installs but this is on a virgin VM which has never seen the app before. If I can't get to the bottom of this, I'm just going to re-package the damn thing.

- Don't know why 'x' happened? Want to know why 'y' happened? ProcMon will tell you.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.

Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 21 January 2008 - 09:36

Error 0x8000ffff occurs when a COM client calls a COM server, and this COM server raises an exception, but fails to handle it. The Windows layer between client and server intercepts the exception and sends 0x8000ffff to the client. In some environments (eg. Delphi) you'll get the error text 'Catastrophic error'.

In your case the COM client is the 'FeaturesInstalling' CA, ask the vendor which server it is calling.

VBScab

VBScab
  • Full Members
  • 436 posts

Posted 21 January 2008 - 09:41

QUOTE (Zweitze @ 2008-01-21 09:36)
Error 0x8000ffff occurs when a COM client calls a COM server, and this COM server raises an exception, but fails to handle it. The Windows layer between client and server intercepts the exception and sends 0x8000ffff to the client. In some environments (eg. Delphi) you'll get the error text 'Catastrophic error'.

In your case the COM client is the 'FeaturesInstalling' CA, ask the vendor which server it is calling.

Let me hazard a total guess: is it the 'InstallShield Driver' server? What else could it be?
- Don't know why 'x' happened? Want to know why 'y' happened? ProcMon will tell you.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.

Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 22 January 2008 - 10:02

Check the type of the CA. If its a VBScript CA, you can open the source and check for a statement like:

CreateObject("MyPoorlyWrittenComServer.App")
or
GetObject("SomeComServerThatIsAlreadyRunning.App")

Basically anything calling CreateObject / GetObject. The CreatObject call itself does NOT fail, but some method on the returned object does.

If the CA is a DLL CA then it's sources call something like

CoCreateInstance(<CLSID>)
or one of its friends.

Again, that call actually succeeds, but the invocation of one of its methods fails.

In this case it's harder to figure out which object failed, unless you have access to the sources of the CA.
I believe (not sure) that some old Platform SDK has a utility similar to ApiMon: Where ApiMon lists all Win32 APIs called, that utility lists all instantiated objects, and their methods invoked.
Alternatively you can debug that CA, step through it, check which DLLs get loaded along the way etc.

I don't think it's the IS Driver, but you could check this using a fresh system with a correct driver version * and no newer versions *.
Based on your starting post about COM+ an educated guess would be WMI, maybe the author is using that technology to set the behavior of the COM+ app.


VBScab

VBScab
  • Full Members
  • 436 posts

Posted 22 January 2008 - 10:58

QUOTE (Zweitze @ 2008-01-22 10:02)
I believe (not sure) that some old Platform SDK has a utility similar to ApiMon: Where ApiMon lists all Win32 APIs called, that utility lists all instantiated objects, and their methods invoked.
Alternatively you can debug that CA, step through it, check which DLLs get loaded along the way etc.
I have APIMon but there's no way on God's earth I'm going to get into that for some poxy 12-file installation smile.gif

QUOTE (Zweitze @ 2008-01-22 10:02)
I don't think it's the IS Driver, but you could check this using a fresh system with a correct driver version * and no newer versions *.
Tests are always conducted on clean machines (VMs actually). Does *anyone* package/test any differently?!? If you do, best of luck!

QUOTE (Zweitze @ 2008-01-22 10:02)
Based on your starting post about COM+ an educated guess would be WMI, maybe the author is using that technology to set the behavior of the COM+ app.
These are the standard IS function calls, nothing to do with WMI. I think you were more on the money with your assertion about the error being raised by the COM+ server which, clearly, *is* the 'InstallShield Driver'.

I'm going to re-package it. If there's ever a patch or update, we'll just do the same with that. This client site uses GP for deployment: while that can be a PITA in most corcumstances, in this situation, it's a blessing - we just create a new group for the new package and migrate users from the old group. That causes the old version to be removed first, then the new version gets installed.

Oh, BTW, anyone coming here looking for information about this app? The vendor's installer copies the MSI to %SystemRoot%\Downloaded Installations\[Product Code]. Routinely, we would remove that activity. However, the main EXE checks for the MSI's existence at that location. If it's not present, it exits with an error to the effect that the installation is invalid. Gotta love these vendors...

Edited by VBScab, 22 January 2008 - 11:09.

- Don't know why 'x' happened? Want to know why 'y' happened? ProcMon will tell you.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.

Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 22 January 2008 - 16:54

For the record I'm curious how you figured out that the IS driver is the offending software - or did Tradeweb tell you that this was the only thing they were using inside InstallFeature?

I do know that the IS driver is not a COM+ application. Then again, the error tells you that a COM Server fails, not a COM+ application.

VBScab

VBScab
  • Full Members
  • 436 posts

Posted 23 January 2008 - 12:14

OK, to finish this puppy up, I got the install to complete by:
- resetting the DCOM permissions for all 'InstallShield Driver' COM+ servers to 'Launching User', using a widely-available script in a CA placed very early on in the Deferred sequence
- set the OnFeaturesInstalling CA from 'System Context' to 'User Context' (for Orca fans, I edited the 'Type' value 3073 to 1025)

Edited by VBScab, 23 January 2008 - 12:15.

- Don't know why 'x' happened? Want to know why 'y' happened? ProcMon will tell you.
- Try using http://www.google.com before posting.
- I answer questions only via forums. Please appreciate the time I give here and don't send me personal emails.