Thread: Our UI Manager
View Single Post
03-19-09, 01:24 PM   #41
Shirik
Blasphemer!
Premium Member
WoWInterface Super Mod
AddOn Author - Click to view addons
Join Date: Mar 2007
Posts: 818
Originally Posted by tonsusbron View Post
How are you doing the update. The old one already has updates for the addons. Can't you treat the update like an addon and make the program restart so that updates take effect?
It would be next to impossible to meaningfully treat it as another addon. The biggest problem with having it update itself is the fact that you cannot replace files that are currently in use (namely, the executable file). As a result, there is a "Module Center" where all updates of the core and modules are handled.

When an update is available, two things can happen. If it's a required update (this will only be done in the event that everything will break if you don't install it), then the module center will pop up on startup and require you to install the update to continue (you can cancel, but the program will shut down). If the update is not required, you will just see a red message, out of the way in a corner, indicating that there is an update available and to go to the module center to apply the update.

The modules are updated while the program is running. This goes into OSGi details that are probably too technical for this forum, but suffice to say the module is shut down, replaced, and restarted. The program does not have to restart.

When the core needs an update, the program first downloads an update "bootstrap." It then executes this program in another process and shuts down. The bootstrap program then downloads the full update (specifically, the files to replace), waits to ensure that the program has shut down, and then replaces the files. Finally, it restarts the application. This is similar to how WoW is updated.
__________________
たしかにひとつのじだいがおわるのお
ぼくはこのめでみたよ
だけどつぎがじぶんおばんだってことわ
しりたくなかったんだ
It's my turn next.

Shakespeare liked regexes too!
/(bb|[^b]{2})/

Last edited by Shirik : 03-19-09 at 01:28 PM.