I am looking for some feedback on how people structure their applications for easiest management.

I am trying to decide the best way to structure them in my environment and have been reading some options, but am looking for more feedback.

Here is what I have found:

One option is to create a run application and an install application, then set the run application Dependant on the install application. The install application would be set to unassociated days until install=0 and when an upgrade is available, create a new installation application object, unassociated the old application install object and associate the new install application object.

This seems like a pretty good option, but I'm not sure if there are some better ways of doing this. Also, in this option, I am still a little confused as to the context the install application is run as, in particular for workstation associations. If the install application is set to install as user if workstation associated, but is called as a dependency of a run application, does it install in the system space or the user space?

Another way I have read about would be to create a dependency chain that would have an application that contains a script to uninstall the program if installed that is a Dependant application of the installation application.

This seems to offer the most flexibility, but would require force running the application to perform the upgrade. On the other hand, this gives control as to when the updates are actually performed as opposed to the unassociated days until uninstalled method where the application would not be reinstalled until the user starts the run application.

Also, could anyone elaborate on the best way to put scripts inside of application objects to perform the uninstalls? For example, I could create a simple application that runs a batch file, but... if I have an application chain that is installing multiple application objects (during an initial build process for example), then it just runs the batch file and goes to the next application object rather than waiting for the installation to finish even if "wait on force run" is checked. If the script could somehow be contained inside of the application object, that would be ideal. If this is possible, can these scripts be just batch files, just some netware scripting language, or could it be vbscripts or perhaps auto-it scripts, etc.???

I know this is a lot, and I'm hoping it will spark some good conversation.

Thanks a lot.