Location for DLL used by add-in (XLL)

G

Gonzalo Diethelm

Hello,

I have an Excel add-in written in C. It is an XLL (let's call it
"addin.xll") that exports a set of functions. In order to implement
those functions, the add-in relies on another external DLL (let's call
it "helper.dll"), which has lots of business logic and useful routines.

Now, I want to install addin.xll from an MSI package (built with WiX).
I already know how to put the XLL into any directory I want, and then
create an OPENx entry in the registry, so that the XLL will be
automatically loaded in Excel. My question is: where should I put
helper.dll? I can see the following possibilites:

1. Put it in any system-wide folder (Windows, System32): hateful and
polluting.

2. Put it in my own directory, add that to the PATH: works, but I would
rather not touch the PATH; I could be screwing over some other
helper.dll library used by a different program.

3. Put it next to addin.xll: it doesn't work, Excel tries to open the
XLL as if it was a data file, says the file is in an unrecognized
format.

4. Put it in an Excel-wide folder: haven't found any that works, other
than the path where EXCEL.EXE is installed (which, I guess, amounts to
the "current directory"). But this means adding stuff to a folder
controlled by Office's installer, which I would rather not do.

5. My personal preference: put it in my own directory, add that to a
magic place (registry, etc.) and have Excel pick it up automatically.
Am I dreaming?

Any suggestions? Thanks and best regards.
 
C

Chip Pearson

You could install it in the XLStart folder, which is in the same
folder as Excel.exe.



--
Cordially,
Chip Pearson
Microsoft MVP - Excel
Pearson Software Consulting, LLC
www.cpearson.com
 
G

Gonzalo Diethelm

There's a couple of things I don't like about XLStart:

1. It changes names across different versions (English, Spanish,
others?) of Office, so it is not that easy to figure out what the
proper name is. For example, in Spanish Office it is called "InicioXL".

2. There is no possibility for the user to control the loading of an
XLL in that folder (via de Add-In manager).

But I do think I found the answer: App Paths. I did not know, but it IS
possible to have a PATH definition separately for each application.
This article explains things very clearly:

http://www.codeguru.com/Cpp/W-P/dll/article.php/c99

This is exactly what I need. I will just put the XLL in my own
directory D1, the DLLs it uses in another directory D2, and add D2 to
Excel.exe's App Path. Bingo.

Anyway, thanks for answering. Sometimes asking a question on Usenet
gets one thinking about the problem in such a way that one can find the
answer.

Best regards.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top