Open Bug 338878 Opened 15 years ago Updated 4 years ago

Only one install of AccessibleMarshal.dll can be registered at a time which can lead to it being unregistered

Categories

(Core :: Disability Access APIs, defect)

x86
Windows XP
defect
Not set
normal

Tracking

()

People

(Reporter: robert.strong.bugs, Assigned: surkov)

References

Details

(Keywords: access, helpwanted)

Only one install of AccessibleMarshal.dll can be registered even though there are multiple copies of it installed. This can lead to an older or newer version being used when compared to the app using it. When an app is uninstalled it will be unregistered even though there are other apps that use it.
True, how should we fix that? It's how COM Marshalling DLL's are. You can only register one of them afaik.
hmmm... I brought this up to bsmedberg. Perhaps he has an idea.
If it is desired I can add a workaround for this bug - the uninstaller could check if there is another install of a Mozilla product by enumerating the reg and if the AccessibleMarshal.dll exists register it. Is it worth it?
(In reply to comment #3)
> If it is desired I can add a workaround for this bug - the uninstaller could
> check if there is another install of a Mozilla product by enumerating the reg
> and if the AccessibleMarshal.dll exists register it. Is it worth it?

Is that a workaround or a real fix? Doesn't sound bad. What are our other options?
Keywords: access
Keywords: helpwanted
It is a workaround in my opinion that should work in most cases. A real fix would be to have a single copy of AccessibleMarshal.dll installed / registered somewhere under Program Files\Common Files\ that all apps would use and of course would need to be compatible with all apps no matter the version of the app / dll combination which is to say the least tricky... hence the term dll hell. I suppose another option would be to have unique registrations but I am unfamiliar with what this dll provides.
(In reply to comment #5)
I would of course love to see the real fix. Maybe there is some example code somewhere out (with a compatible license) that we could take a look at or utilize.

The temporary workaround is also very welcome. May I assign the bug to you for now?
Surkov, if you figure out a solution to this I'd be grateful.
Assignee: aaronleventhal → surkov.alexander
Blocks: keya11y
Do we still need to do anything here? I've never heard any  complaints or support issues that would have resulted from the marshalling DLL being inadvertently unregistered. WONTFIX?
Without it registered the functionality won't be present so even without complaints or support issues this is still a valid bug.
Jamie, Mick what do you guys think? We have a proposed workaround in comment 3 and additional ideas in comment 5.
Assuming there's some way to check the reference count on a shared dll (or at least whether it should be removed yet), bug 606393 should fix this.
(In reply to James Teh [:Jamie] from comment #11)
> Assuming there's some way to check the reference count on a shared dll (or
> at least whether it should be removed yet)
There is. If you're using the NSIS InstallLib and UninstallLib macros:
http://nsis.sourceforge.net/Docs/AppendixB.html
this will be handled automatically. Otherwise, you can query/update the ref count in the registry: HKLM\Software\Microsoft\Windows\CurrentVersion\SharedDLLs
You need to log in before you can comment on or make changes to this bug.