Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 8 of 8 total
Thread Creating an Installer that installs ElevateDB as a service
Tue, Jul 19 2011 9:38 AMPermanent Link

George

I am looking to find a way to create an installer that will run some scripts to simplify my life when installing EDB server.

What I want to do is to create an installer that will do the following:
1. Install edbsrv.exe at a specific location (i.e. <Program Files>\CompanyName\EDB\).
2. Run the command "edbsrv.exe /install" to install it as a service.
3. Configure edbsrv (i.e. configuration files path, signature, large file support, etc).
4. Create users.
5. Create databases.
6. Start the service.

Actually everything can be done, but I have no idea how to do point number 3.

Is there a way to pass some more parameters to edbsrv.exe or another way to do that except form doing so manually?

Also I have noticed that edbsrv does not interact with user desktop ever if this is checked to be allowed (currently using version 2.05.9).
Tue, Jul 19 2011 10:00 PMPermanent Link

Carlton Craighead

I've done this a number of times for various apps (mostly C/S).  Since the EDB configuration is just an ini file, include one with as many settings already prdefined as you can and emit it to the correct folder (e.g. for Inno: {commonappdata}\Elevate Software\ElevateDB Server (Unicode)).  For any values that need to be set at runtime, have your installer prompt for those and then set them with whatever ini support your install tool provides.  Sounds like you are doing C/S as well, but in the event you are not (or for local situations), then EDBEngine/EDBSession components can provide full configuration.

Certainly one can also use these 2 components for C/S apps as well, but I tend to mostly use stock EDB servers, but renamed to avoid config file collisions.

Hope that helps.




C
Mon, Jul 25 2011 5:00 AMPermanent Link

George

Carlton thanks for your reply. It is true that what I am doing is a C/S application installation as you described it.

It seems that doing as you say could save me a lot of time, yet that implies that edbsrv and the configuration files should co-exist at the same folder (i.e. {commonappdata}\Elevate Software\ElevateDB Server (Unicode)).

Also as I want to locate the database file at different location some times (i.e. different drive for backup purposes) that is not always helpful. What I am looking for is a way to set the parameters in the configuration file via my installer (InstallShield in my case, Inno is brilliand too). Of course I could give some default values to easy my life, but yet installation from installation varies depending on the needs of the clients.

What I will try to do is to start a new application with a DB Engine embedded to try to set the variables from there. I just want to hope that setting the values from there, it will allow the service to use the same configuration later.
Mon, Jul 25 2011 2:16 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Georgios,

<< Actually everything can be done, but I have no idea how to do point
number 3. >>

There are two ways to do this:

1) If you're using Delphi, then you can customize the edbsrvr.dpr project
using Delphi 7 or higher (<EDBInstallDir>\servers\edbsrvr\source).  This is
nice because it will allow you to have the server "pre-configure" itself any
time it is launched for the first time.  You can simply have the server
check it's edbsrvr.ini file at startup (main form create event handler) and
then set any missing values.  You can also use a local session to directly
set up all users, databases, etc.

2) The second option is to create a command-line project in Delphi, or
whatever development tool you're using, and then do the above in it instead.
You can then just call this tool from your installer.  The downside of this
option is that the server will not be able to "self-repair" the edbsrvr.ini
file if there are missing settings.

<< Also I have noticed that edbsrv does not interact with user desktop ever
if this is checked to be allowed (currently using version 2.05.9). >>

Vista and above (including 2008) have security settings that, by default, do
not permit any interaction with the desktop.  If you want to manage the
server sessions remotely, you can do so from the ElevateDB Manager using a
remote session (Session node/Manage Server Sessions).

--
Tim Young
Elevate Software
www.elevatesoft.com
Tue, Jul 26 2011 6:05 AMPermanent Link

George

Tim

I like the idea to be able to use an ini file to "pre-configure" the server. I am using RAD Studio 2007 (Delphi). Having a look to the source code of edbsrvr it seems to me that you already have implemented the part for reading from an ini file which is brilliant. However I cannot compile the source code as I am missing a few classes (TEDBTaskPaneScrollBox).

Is it possible in future releases to include this feature so that I will not have to amend and recompile the source code each time?

One more Q: Where does edbsrvr store its configuration to know how to load it each time? What I mean, is that even if I delete the configuration files the Database Engine will create new one at the same path. How does it knows the path? Is it a registry key value?
Wed, Jul 27 2011 5:05 AMPermanent Link

George

Okay, here again, having a better look to the source code I found that the edbsrv.ini is located already on the computer that I am looking to install the engine. I found the file in the folder
"C:\Documents and Settings\All Users\Application Data\Elevate Software\ElevateDB Server"
which is valid for Windows XP and Windows 2003 Server,
while on Windows 7 I found it in
"C:\ProgramData\Elevate Software\ElevateDB Server"
which I guess it would be the same in Windows 2008 Server.

Well I guess this answers my previous post.

Thanks Tim and sorry for the previous post.
Tue, Aug 9 2011 5:04 PMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Georgios,

<< I like the idea to be able to use an ini file to "pre-configure" the
server. I am using RAD Studio 2007 (Delphi). Having a look to the source
code of edbsrvr it seems to me that you already have implemented the part
for reading from an ini file which is brilliant. However I cannot compile
the source code as I am missing a few classes (TEDBTaskPaneScrollBox). >>

In the \utilcomps subdirectory of the ElevateDB Additional Software and
Utilities installation directory, you'll find a package called
edbutilcompsdesign.dpk.  Install it into the IDE, and you'll be able to
recompile the ElevateDB Manager and/or ElevateDB Server projects.

--
Tim Young
Elevate Software
www.elevatesoft.com

Fri, Sep 16 2011 2:41 PMPermanent Link

Carlton Craighead

Sorry, just now saw your reply -- maybe you are way past this now.  But just in case not, here is what I chose to do:

Using EDB, in C/S, as a service, with a renamed server binary.

- Install installs the server binary to somewhere in Program Files

- And installs the configured-as-must-as-possible EDB .ini file (with the same base name as the renamed server) in common app data folder (either Documents and Settings\All Users\Elevate... or ProgramData\Elevate..., based on OS)

- Among the normal stuff, the server prompts also for database path (for new installs only), address, port, and encryption password), and sets these via ini management calls (default DB path is a company-specific folder in common app data)

- Then the install calls a custom app with no interface to create users and the database


For this application (.NET), the stock EDB server (renamed) is perfect.  The business logic is .NET code, so I found this the only way to go.  Patiently awaiting a server component to drop in so I can create a new custom server binary that includes both the server and the logic -- but no hurry I guess -- everything is working well.

If you are using Delphi (which I normally use for such tasks), then you have more options.  My only recent Delphi EDB project uses local, not C/S.





C
Image