Link to home
Start Free TrialLog in
Avatar of Alaska Cowboy
Alaska CowboyFlag for United States of America

asked on

Packaging Access Runtime using Inno Setup

I want to package Access runtime using Inno Setup. Can I do this?

If so, what file do I include? I saw one post that said to locate Data1.msi. I couldn't find that on my machine.

Even so, does that mean it's a separate install?

Thanks.
SOLUTION
Avatar of puppydogbuddy
puppydogbuddy

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
ASKER CERTIFIED SOLUTION
Avatar of DatabaseMX (Joe Anderson - Former Microsoft Access MVP)
DatabaseMX (Joe Anderson - Former Microsoft Access MVP)
Flag of United States of America image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of Alaska Cowboy

ASKER

PDB, ok that's the hit. I didn't think about searching on Inno Setup. Thanks.

DB-MX - I'm not ready for sage key yet - I just went from Access Package Wizard to Inno Setup - what a relief that was ! Thanks.
no problem.  I'm not familiar with Inno ... except my Pioneer Inno portable XM radio.  However if ... I was going to do a runtime ... I personally would not hesitate one second and get Sage Key.  They have it figured out for all the nuances that you run into with run time apps.

mx
mx, Inno Setup is an amazing free-to-donate tool that runs circles around Access Package Wizard and is very robust. It's extremely powerful but you have to know some scripting.

it can definitely do what I need to but I'll still have to research every jot and tittle. But I can afford that better then SageKey.

btw, with Sage you also have to have Wise (or msi)? that's a big ticket. Does msi come with Windows?
The MSI (Microsoft Installer) is part of Windows. And right, you would need Wise or equivalent.
btw ... I wasn't faulting your decision at all ... just to be clear on that.  And, if I was going maybe just do one run time ... I might go the Inno route too.

mx
Avatar of puppydogbuddy
puppydogbuddy

Hi Guys,
Just got back on-line.  I agree with Bill...Inno setup is pretty amazing...and it has a knowledge base of scripts that you can build on. I've  used Setup Factory    http://www.softaward.com/8715.html
since 2002 because of all the wizards it has that allow you to create an install disk quick;ly, but the end product  does not have anything over the end product of Inno Setup.  Had I known in 2002 about Inno Setup, I would have started using it instead of Setup Factory.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Excellent review of Inno Setup's features.
              http://www.paranoia.clara.net/articles/inno_setup_review.html
mx - no problem, I appreciate the suggestions. I am just thrilled to have Inno Setup. I had seen Sage Key before but can't justify the expense right now.

-->you would need Wise or equivalent.
 Is Windows msi equivalent?
PDB, thanks for all the research. Setup Factory looks really good, will keep that in mind.

I looked at the Best Vista downloads link. The tool helps one manage a runtime Access d.b. So you can do stuff on your runtime even though you don't have the full-blown version of Access. I couldn't find any reference to Inno Setup, but it sure looks like he used Inno Setup for his installation . . .

As a side note, the AccDB-Man tool looks like it might solve a worry I've had for a long time - how to add d.b. objects (mostly tables and fields) to an already installed version. This tool allows you to make d.b. changes to a runtime version (or any other version I assume). In any event, I'll be pursuing this task later.
PDB, I also looked at the Inno Setup review (  http://www.paranoia.clara.net/articles/inno_setup_review.html )

It was good but didn't directly assist me in the runtime issue. But I joined his newsgroup and will post there as well.

PDB and mx,

I think I need Plan B.

what about this . . . since I am looking for a simple and relatively quick solution.

How about creating an install package using Access Package Wizard. This package includes a sample Access d.b. (just so the Access Runtime will install ok).

Then, using WinZip Self Extractor (for software installation), create an installation just for Access Runtime

Then, if the user doesn't have Access, they have to
- install Access Runtime (using the WinZip Self-Extractor and Windows .msi)
- install my application normally (using Inno Setup)?

I can handle this but I don't think I can cook up an Inno Setup script for Access Runtime this weekend . . . in my spare time, if you know what I mean.

I've already created this Plan B, so my question is: When including Access Runtime using Access Package Wizard, is it smart enough to look and see if Access Runtime or Access full version is already installed?

I think the answer is no, it just installs, so if that's the case, then how risky is it to blindly install Access Runtime overtop / beside some other version of Access.
I did some quick research on the Inno Setup web site (archives) on Access Runtime.

I couldn't find a script and in the two posts I looked at it gave me the feeling that Plan B is the way to go. In one of the posts on Inno Setup,  the question was "it seems like this would be a standard install task that many people need", but in following the thread I (nor the poster) wasn't able to get the code.

SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
PDB, the original link you gave me has a sample script for A97 - perfect, except that it has 1400 lines of code . . . I don't think I'll be able to wade through that.

my baby Inno Setup script has 46 lines . . . most of which were generated by the wizard.

Bill,
The 1400 lines for the Access97 Runtime script includes the dll's for web ocx, visual basic, and other dll's besides just ms access.  You should be able to edit the script very quickly and carve out what you need just for ms access runtime.    
Scott,

thanks for checking in.

I saw some of your other posts where you listed the registry keys to check. that seemed relatively straightforward. But the sample Inno Setup script to install A97 Runtime has 1400 lines of code - I don't have the time nor expertise to wade through that. ( http://donnedwards.openaccess.co.za/2007/03/finally-access97-runtime-installs.html )

When you say start at 40, are you referring to Office11 growing to Office40? with 40 giving you lots safety to handle newer versions of Office?
Scott,

Is there just one Access Runtime file (isn't it simply MSACCESS.exe without all the fluff? I have an Access_runtime.exe on my PC but I think I re-named it.

Thx.
I found this in Inno Setup Newsgroup Archives

-->>
from: http://news.jrsoftware.org/news/innosetup/msg52613.html
You can just run the runtime installer without packaging wizard:
we run it form the code section as shown here but you could equally well run
it from [run]

Exec('msiexec.exe', '/i "' +
ExpandConstant('{src}\Runtime\Access\ACCESSRT.MSI') + '" /qb
REBOOT=ReallySuppress INSTALLLOCATION="' + RuntimeDir +'"', '', SW_SHOW,
ewWaitUntilTerminated, ResultCode);
<<--

I don't know what all this means . . . can I add this one line of code to
install Access Runtime? If so, what file needs to be included as the Access
Runtime? If it is ACCESSRT.MSI, where do I get that?

I think I'm going to go with Plan B.1

- at the end of my Inno Setup, run my AccessInstall Runtime (which launches WinZip Self Extracting, which launches Windows MSI to install Access Runtime). Pretty loopy, I realize . . .

Here's the AccessRuntime install (which includes a tiny sample Access 2003 d.b.): http://www.lighthouse-mainstreet.com/AccessRuntime.exe

Thanks
PDB, ok I'll put on my wading boots and have a look at the A97 sample.

But is there one file which represents Access Runtime? I'm confused on that.

Thanks.
Bill,
I believe Runtime consists of a core program that has references to copies of dependent DLL's like VB, web OCX, etc.  In order for runtime to work all dependencies must also be included.

Just found out that Tony Toews has an ms access 2000 Runtime script for Inno Setup at his web site
               http://www.granite.ab.ca/accsmstr.htm  

it should be in the link for 3rd party utilities, but I can't get into the link (probably because of my firewall); you might want to try if you are interested.

Also found out that Martin Novotny has web site  at   http://www.dbtoolsplus.com/, and has a pro version of AcDBMan n case you are interested.  His HTML Reports product looks interesting, also.
Bill,
Look at this way.  Even if you had the full version of Access loaded on each client machine (like my clients do), Access is dependent on various library files (for example DAO, VB6- look at your References in the VB editor) to be loaded as well.  These dependencies do not go away because you have Runtime.  In fact, with Runtime you have to provide for including these dependencies in an install script because it won't be done for you like it would be done by the Access.dll if you installed the full version of Access.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
PDB,

I looked at Tony Toews' site ( http://www.granite.ab.ca/accsmstr.htm ) but couldn't find a runtime script. But it is an excellent resource.

Martin Novotny's site is the one you recommended in "Best Vista downloads". It is a good tool, especially the HTML reporting. I e-mailed him about my issue.
Scott,

I think your best bet is to do this:

With the packaging wizard, there are three files:
- Setup,
- Files (a folder)
- Autorun

Do I include all three files or just setup?

Runtime is not a major concern for me (perhaps it should be). But one of my main testers is my brother-in-law :-) (who's a lawyer) and he doesn't have Access on his home computer. Can you believe that?

So, I recognize that there may be issues but it's relatively low priority now (well, at least until someone's Access goes haywire due to conflicting versions . . . )

I will just have to hold off on SageKey, but it sounds like that's the real answer.
Bill,
Here is the link I found:
MS Access ODE or MOD Runtime Installation Troubles
Inno Freeware with several scripts on the net. One is here. ... OFFXPDEV: Microsoft Access 2002 Run-Time Package Does Not Install on a Computer Running ...

www.granite.ab.ca/access/runtime.htm
Thanks to all for the good advice and sticking with me.

I'm just going to go with Access Package Wizard to package up Access Runtime, then tack it on to the end of the Inno script.

I didn't realize it would be this tricky but that's the way it is. It's a clean solution as far as I am concerned.

Thanks !
One more comment / question

Here's what I'm thinking of doing:

If the user downloads the software with runtime
- don't launch my application after Inno installs it (of course it wouldn't run anyway w/o Access)
- copy the AccessRuntime setup to the installed files directory

Then the user has to
- explicitly request Access Runtime to be installed
- then they have to start my application manually

Of course, I would notify them multiple times what is happening and what they need to do . . .

It may not be pretty, but at least the user sees what is happening, in fact, they request it to happen.
Bill,
Just my opinion....that wouldn't look like a professional install....so why bother with inno setup at all?
I think if you try and create an install script for inno, you won't find it that much more difficult than what you already accomplished with the MSI installer.
If you know up front that your client doesn't have MS Access, then you can predetermine the possible dependencies by looking at what references from your VB library are used by your application, and you know the version of Runtime that will be installed.  I don't understand why you wouldn't create an install disk that contains copies of your mde, the Access Runtime and the Runtime file dependencies, and other known file depencies that are checked in the Library references.  Test out your install disk on a computer that doesn't have Runtime or Access installed.

By the way, did you look at that direct link on to the Runtime 2000 script for inno setup?
PDP, thanks again for the advice . . .

regarding the install package, I can do what you are suggesting, but what file is the Access runtime? I'm still confused on that.

So I have in the Inno Setup files
- my application and support files
- references that are needed
- Access Runtime  - - - but what file is this

Also, are you saying that I need to include all my references in the install script regardless of the whether it's runtime or not? That's news to me, but I'm new to installing for distribution . .

regarding the link .  . . I just now looked at this link in detail (http://www.granite.ab.ca/access/runtime.htm). Was that the one you meant?  I see lots of discussion but no inno setup runtime script . . . sorry. This is the closest thing I found to inno on that page - Inno Freeware with several scripts on the net.  One is "here". However these are more work. Support is here but also check the archives.
- The "here" link seems like a bad link ( http://www.phpwebclasses.org/downlad/access/test.iss )

Bill,
I have never installed Access Runtime because my clients have had the complete Office Suite loaded on each PC.  When you used the MSI Installer, it loaded all the files required to run your application (i.e. Access Runtime)….so Access Runtime may or may not be a separate .exe, but rather,  consist of your .mde plus all the files that I refer to as dependencies….DAO 3.6, VB6, ADO, ActiveX, etc.  You should be able to tell from the list of files you installed via MSI.

If that is the case, your Inno setup script should just reference (load) the MSI installer, and the MSI installer, in turn, will load its file list….you do not need to include a new script to load files that are already included in the MSI script…..so  think division of labor here…. Inno script activates MSI.  MSI, in turn, executes the script you already have for it.  Your Inno setup file must therefore, have copies of the MSI.exe (which includes the MSI script) and all the files that will be loaded by the MSI.exe.   One caveat….you do not want to replace any files that they may already have on their computer, unless their computer has an earlier version of the file you are installing, and your install scripts provides for making a backup copy of their file to a backup directory.  

<<<< Also, are you saying that I need to include all my references in the install script regardless of the whether it's runtime or not? That's news to me, but I'm new to installing for distribution >>>>>>>

Your references should already be on the list of files installed by MSI……how else would your app run???. .
PDB,

here are the references I have checked (in order)
- VBA
- MS Access 11.0
- OLE Automation
- MS DA0 3.6 Object Library
- MS VBA Extensability 5.3
- MS Forms 2.0 Object Library
- MS ActiveX Data Objects 2.1 Library (for LMS's tree view)
- MS Windows Common Controls 6.0 (SP6)

do i need to include all of these in the distributed files (using Inno)?
PDB, sorry for dragging this out so long, but thanks for all the tips.

Like I said, this is low priority, but I still want something, and of course something that's reasonably professional and won't break someone's Access setup.

That being said, I think I can make a run of it with Inno and the package created by Access Package Wizard.

For now, I'm going to assume the Package Wizard has everything Access needs to run my app, and hope my brother-in-law won't be too distraught as I work on his machine :-).

I'm good for now, so thanks again.
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
PDB, ok, thanks again. I think I can take it from here and then work out the kinks. Have a great day.
Sorry to be late on this one, was out of town.

PDB has you on the right track - build an install in Access which includes ONLY the Access RunTime, and the Package Wizard will include all the files necessary for THAT installation and will NOT include any files needed for your application. Your Inno file will still need to check for and install other items.

Your Inno setup would need to include/check the following items:

- MS DA0 3.6 Object Library
- MS VBA Extensability 5.3
- MS Forms 2.0 Object Library
- MS ActiveX Data Objects 2.1 Library (for LMS's tree view)
- MS Windows Common Controls 6.0 (SP6)

Inno should be able to check for the availablity of all these items. YOu can, if desired, include the setups for these with Inno (althoug the setup for ADO is the full MDAC install, which can be huge), or you can simply have Inno check for "minimum requirements" when starting the install. If the enduser machine doesn't have the necessary files, you could include a link to the MS website for them to download and install the correct version (since different OS require different install routines).

Inno can also check for versioning, so that you don't install an older version of one of the components over a newer one. I'm not sure, but generally it's something like "install same or newer only" or something of that nature.

Why are you referencing the VBA extensibilty library? You may have a valid need for it, but in general this isn't needed.
Scott,

thanks so much for the followup.

for Runtime, I've done as suggested: a package installation created through Access Package Wizard that only includes Access Runtime (also it includes a dummy access application as it seemed like that's the only way to create a package).

For the other files, I'll get started on that, packaging the files in the Inno Setup script.  this is new Inno territory for me so I will take it slowly, although I did get basic Inno Setup scripts going pretty quickly (it's all done except for the references).

For the references, is it just the file itself (like C:\Program Files\Common Files\Microsoft Shared\DAO\dao360.dll,  which is .5 mb)?
 - is there a separate setup for some / all of these? or is it just the dll?

As far as the VBA extensability, I have no idea why it's there. Maybe I'll un-check it and see if there are any hiccups. I'm fairly new to references anyway. I added ActiveX for the tree view (which is working great now :-) )
Some references are simply the file, but others require an install package. In your case, the DAO and ADO libraries would require an installation package, and those deployments may differ depending on the enduser operating system. The Forms and Common controls library are simple .dll files that are installed and registered, but make sure to have the setup engine check newer versions before installation.

It's always a good idea to make SURE that you need all refs before deployment. In your case, I'd uncheck the Forms and VBA extensibility libraries then compile the app to see if you need them. Generally speaking, if you can compile the app without the ref checked you can safely remove them from the deployment.
I tried to un-check Forms 2.0 Object Library, and it said "can't remove, object in use", so I guess it's needed . . .

I un-checked VBA Extensability and it compiled ok.

>>In your case, the DAO and ADO libraries would require an installation package<<
  - So how do I go about this? is it something that already exists? What's wrong with copying the dao360.dll? Is it because it's tied to the processor??? (it's in the directory c:\Windows\ServicePackFiles\i386\dao360.dll).

do you want me to open another question?

Thanks