Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Distribute 64-bit libraries with "64" appended to base filename [CORE3309] #3676

Closed
firebird-automations opened this issue Jan 17, 2011 · 15 comments

Comments

@firebird-automations
Copy link
Collaborator

Submitted by: Matthew Adams (matthewadams)

Is related to DNET362

When distributing Firebird embedded & the http://ADO.NET provider with our .NET application, we currently have to place 32- and 64-bit DLLs into separate directories because the 32- and 64-bit DLLs all have the same filenames. Then, at application startup, we must detect the bitness of the currently executing environment to determine whether the 32- or 64-bit DLLs should be placed on the path via the Win32 API (in kernel32.dll) SetDllDirectory.

Instead, if the 64-bit libraries were named differently, we could place the 32- and 64-bit binaries in the same directory and the .NET Provider could test the bitness of the current environment (simply by checking sizeof(IntPtr) ) and load the appropriate ones.

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

This is not a project issue -- this is an issue with your deployment/installation approach. You should only be installing 1 version of the DLL into the application folder, since the application/OS can only run using 1 version.

@firebird-automations
Copy link
Collaborator Author

Commented by: Matthew Adams (matthewadams)

What you say is true, Sean, for native applications, but not for .NET binaries. The same .NET binary can run on both 32- & 64-bit platforms. The Firebird http://ADO.NET Provider is a case in point; there are no separate 32- or 64-bit distributions, only the one distribution that runs via .NET on both 32- & 64-bit platforms.

The Firebird http://ADO.NET Provider currently requires work on our part, when it could be easily done by the provider itself, but it requires that the 64-bit fbembed.dll change its declared dependencies to be on differently-named 64-bit DLLs.

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

Matthen, yes there can be 32 and 64 bit applications, but that doesn't mean you need to install both. You can detect whether the OS is 32 or 64 bit and then install the appropriate DLLs/EXEs, in the appropriate paths. (A lot of install builders will do this for you).

You do not need to be detecting this at runtime.

@firebird-automations
Copy link
Collaborator Author

Commented by: Matthew Adams (matthewadams)

One virtue of a programmer is laziness (http://c2.com/cgi/wiki?LazinessImpatienceHubris). I don't want to have to branch our installation logic to install 32- or 64-bit DLLs. I just want to slam 'em all in the bin directory and forget it, knowing the .NET provider will do the right thing.

@firebird-automations
Copy link
Collaborator Author

Commented by: @hvlad

I'm agree with Sean

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

I understand laziness, my wife says that I am a Knight of the Round Table of Laziness, but I don't expect others to work so that I can be lazy -- which is what this case seems to be an example of.

@firebird-automations
Copy link
Collaborator Author

Commented by: Matthew Adams (matthewadams)

Touché, Sir Sean of the Knights of the Round Table of Laziness. I bow to your reverence. Suppose, instead, venerable warrior, that I myself do the work and submit a patch so that others need not? Would that King Arthur then knight me for so greatly benefiting his lazy knights...

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

Matthew, personally, I don't see that there is anything to patch from a project perspective. You have a "unique" deployment approach, so this is something which only affects you.

Other project members may not agree, I will look for/await their feedback...

@firebird-automations
Copy link
Collaborator Author

Commented by: @hvlad

Matthew,

i'm agree with Sean that what you ask is installer's job. It's not about our or your laziness. We can't and don't want to change a way how Firebird is distributed just because you think it should be distributed differently. Also think about applications which already loaded fbembed.dll (or fbclient.dll) and will be broken if we'll rename it. You can rename fbembed.dll at your application distribution, if you really need it.

@firebird-automations
Copy link
Collaborator Author

Commented by: @dyemanov

I'd also prefer to leave the current distribution (32-bit and 64-bit binaries sharing the same name) in piece.

@firebird-automations
Copy link
Collaborator Author

Commented by: Sean Leyne (seanleyne)

Based on the feedback of project's lead developer (Dmitry) and 2 other project admins (Vlad and myself), this case will not proceed.

@firebird-automations
Copy link
Collaborator Author

Modified by: Sean Leyne (seanleyne)

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Won't Fix [ 2 ]

@firebird-automations
Copy link
Collaborator Author

Commented by: Matthew Adams (matthewadams)

Fair enough.

@firebird-automations
Copy link
Collaborator Author

Modified by: Sean Leyne (seanleyne)

Link: This issue is related to DNET362 [ DNET362 ]

@firebird-automations
Copy link
Collaborator Author

Modified by: @pcisar

status: Resolved [ 5 ] => Closed [ 6 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant