macro deployment - References DLL issue

  • Thread starter christophe.leroquais
  • Start date
C

christophe.leroquais

Hi,

I have created a macro in Excel. It uses 2 dll that are not built-in in
the Excel and windows system.
To use these dll, I must in the VBA Editor to Add References and
selects the dll files.

Now I have a concern for deploying the macro to other computers.
I'd like to know if for deployment I can make transparent the fact to
Reference the dll?
Can I create a script that use the 'regsvr32 mydll' command and this
would have the same effect as manually Reference the macro in the VBA
Editor?

Thx,

Christophe
 
M

Mat P:son

Hi there Christophe, here are some bullets that I hope might clarify things:

1) DLL:s that you've put together must be made available on machines which
are supposed to run your macro

2) The DLL:s must also be properly registered (using regsvr32 is one way,
but not a very amusing one)

3) All DLL:s used by your DLL:s must also be deployed, provided that you are
not 110% sure the DLL:s will always be present on the target machines (for
example, if your DLL:s are developed in VB you have to make sure the VB
run-time is present)

4) The XLA file you've put together (it is an XLA, right?) will find your
DLL:s as long as (1) and (2) are adhered to. However, (3) is required to make
the add-in *run*

Ideally, the registration process should be done by a proper installer.
There are quite a few commercial ones out there, and a bunch of free ones --
Wise and InstallShield belong to the former category, and InnoSetup and NSIS
belong to the latter (really user-friendly MSI-compliant freeware installers
are harder to find though).

Since it seems you're developing a relatively small-scale app, I would
recommend e.g. InnoSetup, which is very fast to work with, and powerful as
well (and it doesn't cost USD 5,000 thank you very much :eek:) The drawback is
that it does not support MSI (and allegedly never will).

Cheers,
/MP
 
C

Chris Leroquais

Mat,

you have completely answered my question. Thank you very much.
I've used InnoSetup.
According to your message, I need to launch the 'regsvr32 mydll' command
within the InnoSetup project.
Cheers,

Chris
 
C

Chris Leroquais

Mat and all,

I have inserted the following section in Inno setup:

[Run]
Filename: "{sys}\regsvr32.exe"; Parameters:"{app}\msadomd.dll"

but i get an error:

LoadLibrary("C:\Documents") failed - the specified modifiable has not been
found

P.S: my app is "C:\Documents and Settings\..etc..."

C
 
C

Club Internet

Mat and all,

I have inserted the following section in Inno setup:

[Run]
Filename: "{sys}\regsvr32.exe"; Parameters:"{app}\msadomd.dll"

but i get an error:

LoadLibrary("C:\Documents") failed - the specified modifiable has not been
found

P.S: my app is "C:\Documents and Settings\..etc..."

C
 
M

Mat P:son

Chris Leroquais said:
Mat,

you have completely answered my question. Thank you very much.

I'm happy that it helped...
I've used InnoSetup.

Yeah, pretty neat, isn't it... :)
According to your message, I need to launch the 'regsvr32 mydll' command
within the InnoSetup project.

No, you do not. InnoSetup will register your DLL:s if you ask it to. For
example, here's a sample (you have to adjust it to your specific situation,
of course):

[Files]
Source: "mydll.dll"; DestDir: "{app}"; Flags: regserver

Under the files category, you add your DLL ("mydll.dll"). It will then be
copied by the installer to directory specified by the user as the application
installation directory ("{app}") and after copying the file, the installer
will also register it ("regserver") for you. There's no need for you to run
regsvr32 explicitly anymore.

Ta da,
/MP
 
M

Mat P:son

But Chris, what are you trying to achieve? Please, read my previous posts:
you are NOT supposed to call RegSvr32 anymore. I'm not sure why you're
insisting on doing that, because InnoSetup will handle all those registration
issues for you -- that's why you use a proper installer, such as InnoSetup or
Wise, in the first place.

Just tell InnoSetup which files to install, and where they should be
installed. And if these files happen to be DLL:s then you should also ask
InnoSetup to register them for you by specifying the "regserver" flag. Why
not search the help files for the keyword [Files] (and the [Setup] section is
also very important to you, so read a bit about that one too).

Please, have a look at the InnoSetup help files, and read through the FAQ.
It should give you more information on how to use InnoSetup than you ever
wanted to know about... :eek:)

Cheers,
/MP

(By the way, the "LoadLibrary("C:\Documents") failed" message seems to be
triggered by an incorrect truncation of the file path -- "Documents and
Settings" has been truncated to "Documents" only. Without doing some basic
testing myself, I can't provide you with an answer on how to solve this --
but luckliy I don't need to, because you're not supposed to call RegSvr32
anyways :eek:)

Chris Leroquais said:
Mat and all,

I have inserted the following section in Inno setup:

[Run]
Filename: "{sys}\regsvr32.exe"; Parameters:"{app}\msadomd.dll"

but i get an error:

LoadLibrary("C:\Documents") failed - the specified modifiable has not been
found

P.S: my app is "C:\Documents and Settings\..etc..."

C


Chris Leroquais said:
Mat,

you have completely answered my question. Thank you very much.
I've used InnoSetup.
According to your message, I need to launch the 'regsvr32 mydll' command
within the InnoSetup project.
Cheers,

Chris
 
C

Chris Leroquais

great. Thanks.


Mat P:son said:
Chris Leroquais said:
Mat,

you have completely answered my question. Thank you very much.

I'm happy that it helped...
I've used InnoSetup.

Yeah, pretty neat, isn't it... :)
According to your message, I need to launch the 'regsvr32 mydll' command
within the InnoSetup project.

No, you do not. InnoSetup will register your DLL:s if you ask it to. For
example, here's a sample (you have to adjust it to your specific
situation,
of course):

[Files]
Source: "mydll.dll"; DestDir: "{app}"; Flags: regserver

Under the files category, you add your DLL ("mydll.dll"). It will then be
copied by the installer to directory specified by the user as the
application
installation directory ("{app}") and after copying the file, the installer
will also register it ("regserver") for you. There's no need for you to
run
regsvr32 explicitly anymore.

Ta da,
/MP
Cheers,

Chris
 

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