I work in an metallurgic enterprise where we make our own productive software. We are considering change our distribution plan to fit our current needs. I was hoping you could give some ideas.
Our application is a WinForms, C# Framework 4.0. It’s located in an intranet. It’s divided in three projects (UX, Business layer and Model layer). The application is divided “logically” in modules where each one performs different tasks but they share some functionality (i.e. commercial module, financial module, quoting module).
It is required also that if its needed, log out all the users so they can update their application (in cases of a severe update).
We have two scenarios (maybe you could add others):
Scenario 1.
The whole application is only one EXE distributed with ClicOnce.
PROs:
- Easy to detect any change and how it affects.
- Just one distribution
CONs:
- Small changes affect the whole company (why update if the change does
not affect my “module”?) - Distribution heavier
- Must improve your testing so you left less bugs in distribution.
Scenario 2.
One small application (EXE) that “fires” different EXEs (one per module).
PROs:
- Updates lighters.
- Isolated errors.
- Isolated development.
CONs:
- Must detect each change in order to recompile/distribute each module
(EXE) affected. - Create a new project in order to store the shared stuff (forms,
classes, etc).
What do you think? Do you know other distribution plans?
Thanks!
Javier
I would take the hybrid of your two scenarios and have a ClickOnce deployment per module. Changes in the shared code would “trigger” a new deployment for each dependent module.
You can explore the System.Deployment namespace, particularly the ApplicationDeployment.CheckForUpdate method for integrating the “severe update” requirement so that the application will update itself.