|
-
Aug 15th, 2005, 11:46 PM
#1
Thread Starter
Fanatic Member
ADO, MDAC & Jet distribution
In researching on the MS site it seems to me that installing MDAC2.8, Jet4 (using the correct MS installer for the OS) and Dcom (for 9x machines) should be all that is needed. Is that correct? There will be no need to verify that pevious versions of MDAC or Jet have been installed?
-
Aug 17th, 2005, 07:22 AM
#2
Frenzied Member
Re: ADO, MDAC & Jet distribution
I do know that the Jet installer will only do the upgrade if it needs to, and there is a /quiet command line switch available. What you are putting together sounds very much like the OSUpdater that Randem has on his web site.
-
Aug 17th, 2005, 10:50 AM
#3
Thread Starter
Fanatic Member
Re: ADO, MDAC & Jet distribution
Well, I looked at the OSUpdater on Randem's site. The thing "we" aren't crazy about with it is it's size. A 32MB download (for the auto updater - around 20 for OS specific), for folks on a dial-up, is a little more than we want to force on them although it could be an optional download.
What I'm wanting to do is distribute the main setup program and have it determine the OS and then download the minimum needed update for this app to function properly - i.e., XP users would get the Jet update only while 98 users would get MDAC, DCOM, and Jet.
-
Aug 18th, 2005, 03:22 AM
#4
Frenzied Member
Re: ADO, MDAC & Jet distribution
That's what I found as well. In the end I stuck with XP and just installed Jet.
Hmmm, the only way you could do what you want would be to run an installer that checked the OS and launched an EXE at the end that went to fetch another installer. On dial up your user would be there for ages waiting to do MDAC and DCOM - not good.
Alternatively, do an installer that knows what OS it should install to. If the user tries to install the wrong one - it won't do the install. It would mean that you had different installers for each OS on your web site, but then then XP users would not have to download DCOM (or MDAC if you keep to revision 2.7 as that ships with XP).
.
-
Aug 18th, 2005, 10:53 AM
#5
Thread Starter
Fanatic Member
Re: ADO, MDAC & Jet distribution
My installer currently launches a vb app now which communicates with the server as part of the installation process (installation is aborted if the user doesn't have an account). I think I'm going to go with having that app check MDAC version, the existance of DCOM (on 9x machines) and the Jet version and only download what's required.
Hopefully most pcs will be up-to-date and not require the additional download but I don't see that the user having to wait for a secondary 8mb download would be any more or a problem for them than if the additional 8mb was included in the original download - since I'm a lazy bird it will definately be easier on me not to have 5 seperate installers to maintain plus folks with up-to-date pc will benefit from smaller downloads, right?
-
Aug 18th, 2005, 03:21 PM
#6
Frenzied Member
Re: ADO, MDAC & Jet distribution
Its the same quandry I had just the other week. I agree with you that the more up to date PC's will not need such a big install.
So you are going to do an install THEN check PC versions of MDAC, DCOM and Jet, then go get another install. Phew! If I was sitting through that I wouldn't be thinking nice thoughts if I had W98, ME or 2000 and half way through the install it looked as if I had time to make and drink not one but two coffees (thinking Modem download here) when I thought I would be up and running within a couple of minutes.
Now it wouldn't be so bad if I knew what size download I was in for (20 Meg or 8 Meg) at the point of download.
It's not that hard supporting different downloads, it will certainly be cleaner as far as the user is concerned. Are you using InnoSetup?
-
Aug 27th, 2005, 02:02 AM
#7
Thread Starter
Fanatic Member
Re: ADO, MDAC & Jet distribution
Jeez...did it TAKE me long enough to get back?
Ya, I'm using Inno setup. I agree that it isn't that difficult to maintain different setups but I'm concerned about dial-up users downloading an unnecessarily large setup also - i.e. I create a 98 setup which includes Dcom, Mdac and Jet. That's roughly 10 megs and I havn't even started to include my program yet, which is about 5 MB.
Currently, as part of the installation process, my server is contact and the users account is verified prior to the installation completing. I could also check that Dcom is installed an enabled and that Mdac & Jet are installed and only download any needed updates while providing the user with download size and progress bar...
Also, installing Dcom presents some timing problems of it's own but thankfully someone provided an Inno setup script outlining how to resolve these problems
-
Aug 30th, 2005, 02:56 AM
#8
Frenzied Member
Re: ADO, MDAC & Jet distribution
I would be very intersted in learning how you determine in advance if DCOM, MDAC and Jet are required by the 98 system. Also, if at all possible could you post the inno script? PM me if you want to keep it private.
-
Sep 13th, 2005, 03:49 AM
#9
Frenzied Member
Re: ADO, MDAC & Jet distribution
 Originally Posted by anotherVBnewbie
XP users would get the Jet update only while 98 users would get MDAC, DCOM, and Jet.
Doesn't Jet come with the XP install as standard anyway ??
-
Sep 13th, 2005, 03:55 AM
#10
Re: ADO, MDAC & Jet distribution
I think JET was cut out. It's a separate download now for XP.
There are versions of the OS Updater for each OS. The one for ALL is 32m.
-
Sep 13th, 2005, 12:55 PM
#11
Thread Starter
Fanatic Member
Re: ADO, MDAC & Jet distribution
Good goobeldy goo! Folks have been responding to this thread for weeks since I last monitored it! (Ok, I ain't been on the board in a week or so but still....).
To answer mr Poundall's question about determing if Dcom is present..much as I'd like to take credit for this I found it in a MS demo project so guess I can share 
VB Code:
'The following APIs are used to determine if DCOM is present on
'The client
Public Declare Function GetProcAddress Lib "kernel32" ( _
ByVal hModule As Long, ByVal lpProcName As String) As Long
Public Declare Function GetModuleHandle Lib "kernel32" _
Alias "GetModuleHandleA" (ByVal lpModuleName As String) As Long
Public Declare Function RegOpenKeyEx Lib "advapi32.dll" _
Alias "RegOpenKeyExA" (ByVal hKey As Long, _
ByVal lpSubKey As String, ByVal ulOptions As Long, _
ByVal samDesired As Long, phkResult As Long) As Long
Public Declare Function RegQueryValueEx Lib "advapi32.dll" _
Alias "RegQueryValueExA" (ByVal hKey As Long, _
ByVal lpValueName As String, ByVal lpReserved As Long, _
lpType As Long, lpData As Any, lpcbData As Long) As Long
Public Declare Function RegCloseKey Lib "advapi32.dll" ( _
ByVal hKey As Long) As Long
Public Const ERROR_SUCCESS = 0
Public Const HKEY_CURRENT_CONFIG = &H80000005
Public Const HKEY_LOCAL_MACHINE = &H80000002
Public Const STANDARD_RIGHTS_ALL = &H1F0000
Public Const KEY_QUERY_VALUE = &H1
Public Const KEY_SET_VALUE = &H2
Public Const KEY_CREATE_SUB_KEY = &H4
Public Const KEY_ENUMERATE_SUB_KEYS = &H8
Public Const KEY_NOTIFY = &H10
Public Const KEY_CREATE_LINK = &H20
Public Const SYNCHRONIZE = &H100000
Public Const KEY_ALL_ACCESS = ((STANDARD_RIGHTS_ALL Or _
KEY_QUERY_VALUE Or KEY_SET_VALUE Or KEY_CREATE_SUB_KEY Or _
KEY_ENUMERATE_SUB_KEYS Or KEY_NOTIFY Or KEY_CREATE_LINK) And (Not SYNCHRONIZE))
Private Function DCOMOK() As Boolean
'Determine if DCOM (Distributed COM) can be used. It can if it
'is installed and is enabled on the current machine.
'Dim bOK As Boolean
Dim bPresent As Boolean
Dim bEnabled As Boolean
Dim hKey As Long
Dim lpType As Long
Dim lpData
Dim lResult As Long
Dim lpcbData As Long
lResult = GetProcAddress(GetModuleHandle("OLE32"), "CoInitializeEx")
If lResult <> 0 Then
bPresent = True
Else
bPresent = False
End If
lResult = RegOpenKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Ole", 0, _
KEY_ALL_ACCESS, hKey)
lpcbData = Len("EnableDCOM") '10
If lResult = ERROR_SUCCESS Then
lResult = RegQueryValueEx(ByVal hKey, "EnableDCOM", 0, ByVal lpType, lpData, lpcbData)
End If
If lResult = ERROR_SUCCESS Then
bEnabled = True
RegCloseKey (hKey)
Else
bEnabled = False
End If
If bEnabled And bPresent Then
DCOMOK = True
Else
DCOMOK = False
End If
End Function
In order to determine the current version of Mdac MS suggest that you use a utility the provide (can't remember the name of it right now) but you can also just read the registry key:
HKLM\Software\Microsoft\DataAccess\FullInstallVer
Now on to the Jet stuff...as far as I've been able to determine Jet will *probably* be present on XP machines but it's possible that an older version is in place so if you depend on 4.0 you should probably check for it being installed. I havn't found any good documentation on doing this but I'm pretty sure that a registry scan will do the trick - just check for the existance of the HKLM\Software\Microsoft\Jet\Jet4.0 key. Hopefully nothing will create that key other than the installation of 4.0 (If anyone has other info here I'd appreciate hearing it!)
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules
|
Click Here to Expand Forum to Full Width
|