We have a product with 3 main components
1) a client application 2) a network server 3) Datasets, mostly containing (read-only - from the customer's perspective) documents stored in BLOB fields within a SQLite DB
The client application can access datasets stored directly on that machine (many users are on non-networked laptops) or via a the network server.
The data needs to be updated from time to time - the whole datasets can be several GB, so for updates we wish to only send out those documents that are new or have been revised. A patch in a sense. Our customers tend to like MSIs to incorporate in their own distribution strategies. Some are adamant about accepting nothing else.
How feasible is it to update a SQLite DB via MSI (without a complete overwrite of the DB file)?
I have 2 strategies in mind but both have drawbacks
1) the MSI installs some files on to customer machine (workstation or server) and when the client or the server software detects them it run some sort of DB merge.
2) The MSI accesses functions in a custom DLL (I'm not an MSI expert, so I don't even know if this is possible) to merge new content into DB. I suspect custom DLLs really break the point of repackagability of MSIs.
This is far from my are of expertise, so can anyone suggest potential solutions?
Thanks for your time