Ik zit me al een tijdje af te vragen hoe ik een programma van mij het beste kan uitbreiden met update-functionaliteit. Het eerste wat in mij opkam was om een soort van update manager te maken, een aparte executable. Inbouwen in de main-executable was natuurlijk geen optie omdat de exe dan zichzelf zou moeten kunnen herschrijven. Het probleem met een aparte executable is echter dat hij weinig communicatiemogelijkheden heeft met de main-executable. Dit lijkt me niet fijn voor de gebruiker.
Om dit probleem op te lossen heb ik de volgende constructie in gedachten: ik maak 2 interfaces, een voor het programma en een voor de update manager. Vervolgens maak ik van het programma en de updater class libraries die deze interface inheriten. Om het programma te starten heb ik een launcher, deze laadt het programma en de updater uit de desbetreffende dll-bestanden. De update procedure ziet er ongeveer zo uit:
- Update manager vindt en download update
- Update manager is klaar met downloaden, geeft sein aan launcher
- Launcher laat programma weten dat update binnen is
- Programma geeft gebruiker de keuze om nu, later of nooit te updaten(in dit geval kiest hij ervoor om meteen te updaten)
- Programma geeft keuze door aan launcher
- Launcher sluit programma en update manager
- Launcher voert update uit (de dll's van het programma en de update manager zijn immers niet meer in gebruik)
- Launcher start desgewenst programma weer op
Dit lijkt mij de beste aanpak, aangezien ik hiermee eigenlijk alle wezenlijke bestanden kan vervangen, en de mogelijkheid heb om het allemaal gebruikersvriendelijk te maken. Zijn er mensen die ervaring met update-systemen hebben? Zo ja, kan het makkelijker? Zijn er dingen waar ik op moet letten als ik dit in de praktijk omzet?
Om dit probleem op te lossen heb ik de volgende constructie in gedachten: ik maak 2 interfaces, een voor het programma en een voor de update manager. Vervolgens maak ik van het programma en de updater class libraries die deze interface inheriten. Om het programma te starten heb ik een launcher, deze laadt het programma en de updater uit de desbetreffende dll-bestanden. De update procedure ziet er ongeveer zo uit:
- Update manager vindt en download update
- Update manager is klaar met downloaden, geeft sein aan launcher
- Launcher laat programma weten dat update binnen is
- Programma geeft gebruiker de keuze om nu, later of nooit te updaten(in dit geval kiest hij ervoor om meteen te updaten)
- Programma geeft keuze door aan launcher
- Launcher sluit programma en update manager
- Launcher voert update uit (de dll's van het programma en de update manager zijn immers niet meer in gebruik)
- Launcher start desgewenst programma weer op
Dit lijkt mij de beste aanpak, aangezien ik hiermee eigenlijk alle wezenlijke bestanden kan vervangen, en de mogelijkheid heb om het allemaal gebruikersvriendelijk te maken. Zijn er mensen die ervaring met update-systemen hebben? Zo ja, kan het makkelijker? Zijn er dingen waar ik op moet letten als ik dit in de praktijk omzet?