Hi all, sorry to bother you with this possibly simple matter, but I need your advice. I am running a Swiki server and some days ago I needed to update it with patches. My problem appeared when I discovered I was running a striped image, and I found no way to file-in the fix. I therefore though it would be cool to have for closed applications an update mechanism like the one we have for squeak. I played a while this morning and figure out one way (very primitive) to extend the update mechanism to work on a per project base. However, I heard that dynamic project loading is one of the features that will be present in the next release. I am wondering whether incremental update will also be there? That would finally solve my problems :) Any thoughts? Regards -casco
Alejandro Fernandez wrote:
Hi, I think I have got something running. I found a problem with the current implementation of the update mechanism given that it is implemented depending on global variables (all using class methods). The name of the current version, for example, is maintained globally. Therefore it is not possible to have different packages that update from different servers using different versions. What I did was to implement the updating behavior as instance behavior in a new class called "UpdateBookkeeper". There is an instance of this class for each project holding information about the version name and the update servers. In the current implementation, most of the code will be duplicated between this class and Utilities (that is the one that currently manages updates). However, I tried the new stuff for updating Squeak and it also works, therefore it could be possible to just remove the update behavior in class Utilities.
I haven't found the code they use at Disney to set up the initial values for these global variables therefore I had no way to figure out what is the best way to do it. The process would be now to inspect the Bookkeeper object and set the values manually.
In concrete, what one needs to do is: 1- Create a new project and enter it. 2- Inspect "Project current updateBookkeeper" 3- Set the value of the variable "updateUrlLists" to something of the form:
OrderedCollection with arrays of the form #('Swiki Public Updates' #('http://www.darmstadt.gmd.de/~casco/squeak/')) where each arrays represents a pair Server name, Array of server URLS.
4- Set the value of the variable version to the version identifier of your package/system/project. In this case it could be 'com47swiki12'
5- Evaluate "Project current updateBookkeeper updateFromServer"
That should be it.
Now we need a server somewhere (like the squeak one) with a folder named "updates" containing the updates and a the file named 'updates.list'. I could set up one here, if you want, but someone will have to send me all the updates (You could use the settings in the example to try the files I have in our server. It only has the patch for the append bug).
I am attaching the changeset, and example files for the "updates" folder. Note that the server names must have the full URL of the update directory excluding 'update'.
I could not figure out how Je77 packaged the pre-packaged swikis therefore I could not see if updating works in this case. Any suggestions?
Regards, casco
squeak-dev@lists.squeakfoundation.org