Solved

Packaging Access Runtime using Inno Setup

Posted on 2007-04-10
40
4,442 Views
Last Modified: 2008-01-09
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.
0
Comment
Question by:Alaska Cowboy
  • 22
  • 11
  • 4
  • +1
40 Comments
 
LVL 38

Assisted Solution

by:puppydogbuddy
puppydogbuddy earned 225 total points
Comment Utility
Hi Bill,
See this link for a start; it should answer some of your questions :    
http://www.experts-exchange.com/Microsoft/Development/MS_Access/Q_22490844.html

0
 
LVL 75

Accepted Solution

by:
DatabaseMX (Joe Anderson - Access MVP) earned 125 total points
Comment Utility
And just as a 'backup' ....

http://www.sagekey.com/

Pretty much the industry standard ...

mx
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 75

Expert Comment

by:DatabaseMX (Joe Anderson - Access MVP)
Comment Utility
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
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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?
0
 
LVL 75

Expert Comment

by:DatabaseMX (Joe Anderson - Access MVP)
Comment Utility
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
0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
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.
0
 
LVL 38

Assisted Solution

by:puppydogbuddy
puppydogbuddy earned 225 total points
Comment Utility
Bill,
Here is another interestng tool I just discovered, and it is freeware:  It is supposed to help you manage runtime installations where the full blown version of ms access has not been installed.. it say it will help with inno scripts for runtime.  If you try it, let me know if it is usefull or just hype.
                 AccDbMan Lite  - Access Runtime Database Manager
       http://www.bestvistadownloads.com/software/t-free-accdbman-lite-download-afhobuwm.html
0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
Excellent review of Inno Setup's features.
              http://www.paranoia.clara.net/articles/inno_setup_review.html
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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?
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.

0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.

0
 
LVL 84

Assisted Solution

by:Scott McDaniel (Microsoft Access MVP - EE MVE )
Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 150 total points
Comment Utility
Typically an installation package will look for an installed version, then attempt to update/install based on what was found. Since the ART is "different" than the full retail version of Access, you'd need to do this by hand.

I haven't used Inno in a while, but the scripting language was pretty powerful and you should be able to read the machine's Registry and look at the following keys:

HKLM\Software\Microsoft\Office\<your version>\Access\InstallRoot

to determine if a particular version of Access is installed. YOu could also loop (starting at, say, 40 and going down) to determine the "newest" version of Access installed. From that point you could decide whether to install your Runtime or not .... and I'm sure that the registry of a machine with the runtime installed will have specific registry keys that a machine without the runtime would not have (or vice-versa).
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.

0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
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.    
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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?
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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
0
What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
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.
0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
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.
0
 
LVL 84

Assisted Solution

by:Scott McDaniel (Microsoft Access MVP - EE MVE )
Scott McDaniel (Microsoft Access MVP - EE MVE ) earned 150 total points
Comment Utility
Bill:

IIRC, there is a single file which will install the ART for you (I thought is was an .msi file, however). The ART is simply the full Access version with, I'm led to believe, several registry keys set to disallow various items (like design view, etc). What those keys are have never been determined, or at least I've never been able to locate them. This could be completely off base, but it sounds pretty good <g>.

I think your best bet is to do this:

1) Using the Packaging Wizard, build an install that ONLY installs the Access Runtime. This will insure that you have everything right in terms of this installation, as it can be VERY difficult to get all the keys and such correct. The 97 runtime scripts referred to above are probably a good place to start, but remember that a LOT has changed between 97 and 2003.

2) In Inno, add the package you built in #1 and call it silently like this:
   
     FileName: {app}\setup.exe; Parameters: "/qb"

3) Now add your other files to the Inno setup and continue on.

4) You can further delete the setup.exe file after installation, if you need to "clean up" a bit.

RE: starting at 40: Yes, basically just an arbitrarily large number that you can "count down" until you determine if the correct version of Access is installed.

One caveat however (and I believe we've said this before): The runtime is HUGE and can cause some unexpected issues if you install it on machines with the full retail version of Access. The Sagekey scripts (www.sagekey.com) shield you from this by installing the ART in a specific manner and by using a "launch" utility to startup your app. As long as you don't install the runtime on a machine with the full Access version you'll be okay, of course.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
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
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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 !
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
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?
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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 )

0
 
LVL 38

Expert Comment

by:puppydogbuddy
Comment Utility
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???. .
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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)?
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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.
0
 
LVL 38

Assisted Solution

by:puppydogbuddy
puppydogbuddy earned 225 total points
Comment Utility
<<<<do i need to include all of these in the distributed files (using Inno)?>>>>>
The answer is yes for copies of the files and yes for having it in a script.......but do it in a way that does not involve duplication of effort (have only one list and one copy of each file)  

you can do it either of two ways:
1. If you incorporate the package wizard,  your inno script exec would load the Package Wizard exe, which would contain the file list and will, in turn, load all of the files on the file list.
2. If you don't utilize the package wizard, then your inno setup exe will explicitly contain and load the file list.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
PDB, ok, thanks again. I think I can take it from here and then work out the kinks. Have a great day.
0
 
LVL 84
Comment Utility
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.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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 :-) )
0
 
LVL 84
Comment Utility
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.
0
 
LVL 1

Author Comment

by:Alaska Cowboy
Comment Utility
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
0

Featured Post

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

In Debugging – Part 1, you learned the basics of the debugging process. You learned how to avoid bugs, as well as how to utilize the Immediate window in the debugging process. This article takes things to the next level by showing you how you can us…
Regardless of which version on MS Access you are using, one of the harder data-entry forms to create is one where most data from previous entries needs to be appended to new records, especially when there are numerous fields and records involved.  W…
As developers, we are not limited to the functions provided by the VBA language. In addition, we can call the functions that are part of the Windows operating system. These functions are part of the Windows API (Application Programming Interface). U…
Familiarize people with the process of utilizing SQL Server views from within Microsoft Access. Microsoft Access is a very powerful client/server development tool. One of the SQL Server objects that you can interact with from within Microsoft Access…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

13 Experts available now in Live!

Get 1:1 Help Now