I use a hook into the program itself. For example, every time your program runs it searches the current directory for a file (in my case = updateperform.fxp). If the file is encountered, the updateperform function is called. What that function does is entirely up to you; create a view, update or add data or anything else you want.
I also use this file to trigger a reindex, pack and validate database. This is usually done when a new version is sent out. The UpdatePerform in this case is executed last.