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

MSI Logging


11 replies to this topic

codec

codec
  • Full Members
  • 8 posts

Posted 02 January 2006 - 14:19

Anyone know what some of the log codes mean when you turn on MSI logging?

I think these are
MSI © - running the client code
MSI (s) - running the service code

but
MSI © (80:EC)
What does the 80:EC refer to? And sometimes it logs with a : separator, and occasionally with a ! separator, as in
MSI (s) (3C!2C) [15:27:21:328]: PROPERTY CHANGE: ...



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 January 2006 - 18:32

I think this is a process ID/handle. Not really helpful in most cases I think.

akerl

akerl
  • Full Members
  • 104 posts

Posted 04 January 2006 - 14:09

© indicates the client and (s) the server process. The first hex value indicates the threadid and the last hex value the processíd, because only the last two values of the id are written to the log.

Andreas Kerl

Inside Windows Installer 4.5
ISBN 3-86645-431-7


codec

codec
  • Full Members
  • 8 posts

Posted 04 January 2006 - 16:13

Thanks - that helps.
Any idea on the ! v. : separator?



mandy

mandy
  • Members
  • 121 posts

Posted 04 January 2006 - 16:32

Interesting.

On a slightly different, but equally "interesting" subject... Has anyone ever noticed that the ":" character after the drive letter in file keypaths stored in the registry is replaced by a "?" character when "msidbComponentAttributesSharedDllRefCount" component attribute is set?

What I'd like to understand is "why"... since this information is available in the cached MSI that will be used during the uninstall?

Any ideas?


Glytzhkof

Glytzhkof
  • Moderators
  • 1,447 posts

Posted 05 January 2006 - 01:37

The msidbComponentAttributeShareDllRefCount is essentially a compatibility feature with older installation technology. Components are reference counted by their own guid, whereas incrementing the dllshared count will communicate between older setups and MSI that a file might still be needed.
Regards
-Stein Åsmul

mandy

mandy
  • Members
  • 121 posts

Posted 05 January 2006 - 09:56

Thank for reminding us all what the "msidbComponentAttributeShareDllRefCount" is for Glytzhkof.

Unfortunately, that wasn't the question. If anyone can think of a reason why this information might be stored in the registry (as well as in the MSI), I'd love to hear about it.



Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 05 January 2006 - 10:20

Interesting.
I can only assume that this character is interpreted during component removal; when a ? is found the corresponding SharedDlls key must be checked before deciding to remove the file.

Regarding the MSI (*) notation I have an addition:
MSI (N) - Nested installation (CA 23)


mandy

mandy
  • Members
  • 121 posts

Posted 05 January 2006 - 11:36

QUOTE
I can only assume that this character is interpreted during component removal; when a ? is found the corresponding SharedDlls key must be checked before deciding to remove the file.


Exactly what I thought... but this information is already in the MSI which is used during the uninstall. So why duplicate the information in the registry? Seems pointless, but I'm sure there must be a plausible explanation.


Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 05 January 2006 - 14:12

I can imagine (no: I hope) that MSIZAP uses this kind of information, in case the original MSI is damaged or lost.

2nd explanation: when the component is used in multiple setups, with different settings for SharedDlls. (This could happen with Merge Modules that were updated in a later stage. Obviously this would be a bug of the setup author, but the MSI engine must deal with this situation anyway.)

mandy

mandy
  • Members
  • 121 posts

Posted 06 January 2006 - 10:54

I may be mistaken, but I don't believe that MSIZAP actually uninstalls the application. I think it just removes all traces of the install from an Installer point of view?

Once a merge module has been merged into an MSI, it's components are written into the component table of that MSI (including the Attributes column). When that MSI is removed, the attributes column of the component table of the MSI used for the uninstall would reveal which components were "Shared".


Zweitze

Zweitze
  • Full Members
  • 522 posts

Posted 06 January 2006 - 13:46

About MSIZAP: Indeed, it only removes the installation information, without requiring the original MSI or a cached version.
I think that MSIZAP interpretes the character, when it is a ? the SharedDlls reference is lowered, when it is a : it is not lowered. This is hypothetical, I haven't tested this.

On the merge modules issue, I'm thinking on merge modules merged in multiple installations, which in turn are installed on the same computer. This shouldn't be a problem, unless multiple versions of this MSM exist, with conflicting Shared information.