Video Screencast Help
Search Video Help Close Back
to help
New in the Rewards Catalog: Vouchers for "Symantec Technical Specialist" and "Symantec Certified Specialist" exams.

Darwin Descriptors - Basics and Directions

Updated: 19 Feb 2009 | 2 comments
R-Vijay's picture
+1 3 Votes
Login to vote

The most common method of ensuring applications remain highly available is through Windows Installer file associations. This mechanism operates very much the same way as Windows Installer shortcuts, but instead of directly linking to an application's executable file, the association is made by a registered file type. As you can see in Figure below, Windows Installer file associations are defined using the same mechanism that standard file associations use, with one exception. Notice that an extra value is listed under the typical "shell\Open\command" registry key. The extra value (also named "command") is where Windows Installer looks any time you double-click on a file from within the Windows shell.

This cryptic-looking string, sometimes referred to as a "Darwin Descriptor" is actually an encoded representation of a specific product, component, and feature. If this extra value exists, Windows Installer will decode the data, and use it to perform checks against that product and component. If the component is found to be missing or corrupt, Windows Installer will launch a repair to restore the missing file or data, and finally launch the referenced application as normal, passing the appropriate command-line options to it.

Viewing a "Darwin Descriptor" for a file association

Viewing a "Darwin Descriptor" for a COM Server

The Darwin Descriptor for COM Advertising is stored as the InProcServer32 registry value. The advertised shortcut's TargetPath is a combination of the ProductCode ? Darwin Descriptor + some tags. Open the shortcut using ex. notepad and find the descriptor. A Darwin Descriptor is an encoded string and when decoded produces a combination of the ProductCode, Feature ? ComponentId(s).As the Darwin Descriptor is stored as a "REG_MULTI_SZ" entry it can contain more then one descriptor where other packages may have installed same component. We can find Darwin Descriptors under the following locations

HKCR\Installer\Assemblies and HKCR\Installer\Components

HKCR\Installer\Win32Assemblies

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\(sid)\Products\(compressed)\Features(targetpath)

While Packaging, we can use snapshot with advertising (not registry as-is) as it gives some extra entrypoints (Darwin Descriptors) to trigger a potential repair if required. If there are some problems for the application to call any COM component/ActiveX functions then Advertsing setting “Retain Registry Information as-is” works better.

References:

http://msdn.microsoft.com/en-us/library/aa302344.aspx
http://msiworld.blogspot.com/2007/07/advertising-i...

Thanks:

Thanks to Anuradha who shared this Information with me!

Comments

Richard Jeffrey's picture
02
Mar
2009
0 Votes 0
Login to vote

DD Tool

Check out my .exe to decode the DD scramble, I have just submitted it.  You will need to rename it from .txt.

WiseUser's picture
26
Oct
2009
0 Votes 0
Login to vote

Excellent writeup ..

Excellent writeup ..

Wiseuser
Altiris Certified Professional