Expert Texture Home Contact me About Subscribe Digipede Connect on LinkedIn rwandering on Twitter rwandering on FriendFeed

rwandering.net

The blogged wandering of Robert W. Anderson

Behavior change in Server 2003 SideBySide?

In my previous post, Ah, it was DLL hell, I said I still have a problem. The problem is with Server 2003 registration-free COM and a custom-generated manifest. XP and Server 2003 have different requirements for the location of dependent assemblies, so it isn’t suprising that they might behave differently. Anyway, now that I’ve gotten past my initial issue, the problem is clear. Well, as clear as can be expected with registration-free COM.

The event log said (reformatted and abbreviated for readability):

Syntax error in manifest or policy file 
"C:\\ . . . \\DigipedeAutoManifest.manifest" on line 4. 
The value of attribute "name" 
element "urn:schemas-microsoft-com:asm.v1^file" is invalid.

The name attribute was a full path to the DLL containing the COM server to be activated. I changed it to a relative path and now it works just fine. The DLL is in the same directory as the manifest (rooted below the executable).

I know for a fact that the full path used to work on Server 2003. I can only guess this was changed by some Windows Update in the past six months.

Now I’ve fixed our code to be compatible with the change.

BTW: the required syntax seems to be <file name="./comserver.dll">. It doesn’t work without the ./. Thanks to Steve White — his articles on registration-free COM are very helpful.

    Trackback

6 Comments »