How do I properly apply updates and patches to a shipped product?

M

Max Moor

Hi All,
I have an application I hope to ship soon. It will go out as a
front-end .mde, and a couple data back-end .mdbs. At the moment, I'm using
the packaging wizard to build my setup disk, so various system files go
along.

Of course, once the app is in the customers' hands, I'll want to send
out updates, upgrades, patches, etc. I get the impression that with a bit
of work with the Windows Installer SDK, I'll be able to do most of that
intelligently, and leave the packaging wizard behind. (true?)

I'm not entirely sure how to go about doing patches though. I assume
if I want to patch my mde, like fixing buggy code, or adding a new report,
that I have to send out a whole new file, since the design elements aren't
available to mess with. (true?)

What about patching one of the backends, though. Say I want to add a
field to a table, or add a whole table? What if I want to do some record
operations, massaging data to fit some new schema? Do I just write a VB
app, make an exe out of it, and run it from the installer at the
appropriate time? How do most people deal with this?

I guess this is part of the equation I haven't given anough thought
to. I want to make sure, as I start developing for these things, that I go
about them the right way. Any and all advice of the subject is greatly
appreciated.

Thanks, Max
 
M

Mike Labosh

Of course, once the app is in the customers' hands, I'll want to send
out updates, upgrades, patches, etc. I get the impression that with a bit
of work with the Windows Installer SDK, I'll be able to do most of that
intelligently, and leave the packaging wizard behind. (true?)

Sure. That's one of many options.
I'm not entirely sure how to go about doing patches though. I assume
if I want to patch my mde, like fixing buggy code, or adding a new report,
that I have to send out a whole new file, since the design elements aren't
available to mess with. (true?)

Definately send out a whole new mde file.
What about patching one of the backends, though. Say I want to add a
field to a table, or add a whole table? What if I want to do some record
operations, massaging data to fit some new schema? Do I just write a VB
app, make an exe out of it, and run it from the installer at the
appropriate time? How do most people deal with this?

In your mdb, before creating the mde, invent a mechanism of your choice to
run some code only if it has to. For example, code that adds a new column,

Public Sub UpdateBackend()

Dim db As DAO.Database
Dim flName As String

Set db = CurrentDB

On Error Resume Next
' Touch the field in some way
flName = db.TableDefs("ThisTable").Fields("ThisField").Name

If Err.Number <> 0 Then
' The field does not exist, so create it
End If

Set db = Nothing

End Sub

This way, you can apply the update ony if the computer needs it, by having
your new version invoke this sub at startup. Then, the next update to the
backend, you just rewrite the UpdateSchema method.
I guess this is part of the equation I haven't given anough thought
to. I want to make sure, as I start developing for these things, that I
go
about them the right way. Any and all advice of the subject is greatly
appreciated.

An additional thought is perhaps you could automate the distibution as well.
Maybe make a new form with a button that the user can use so the application
can programmatically check for and download new patches from your web or ftp
site, kind of like Windows Update and Norton Antivirus.
--
Peace & happy computing,

Mike Labosh, MCSD

Feed the children!
Save the whales!
Free the mallocs!
 

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